Merge remote-tracking branch 'origin/debian-experimental'
diff --git a/ChangeLog b/ChangeLog
index 2ad7419..c41bc3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,5156 @@
-=== release 1.4.5 ===
+=== release 1.5.91 ===
 
-2014-12-18  Sebastian Dröge <slomo@coaxion.net>
+2015-09-18  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.4.5
+	  releasing 1.5.91
+
+2015-09-18 11:49:03 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/zh_CN.po:
+	  po: Update translations
+
+2015-09-15 10:56:40 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* libs/gst/check/gstcheck.c:
+	* plugins/elements/gstdownloadbuffer.c:
+	* tests/benchmarks/gstbufferstress.c:
+	* tests/benchmarks/gstclockstress.c:
+	* tests/benchmarks/gstpollstress.c:
+	  downloadbuffer, benchmarks: fix error leaks in failure code paths
+	  https://bugzilla.gnome.org/show_bug.cgi?id=755019
+
+2015-09-15 10:52:55 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* libs/gst/check/gstcheck.c:
+	  check: Fix indentation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=755019
+
+2015-09-15 18:05:11 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstbufferpool.c:
+	  bufferpool: sprinkle some allow-none and out annotations for g-i
+
+2015-09-14 11:01:11 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/gstbin.c:
+	  bin: fix typo in log message when threadpool alloc fails
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754975
+
+2015-09-11 17:58:48 +0300  Igor Rondarev <igor.rondarev@gmail.com>
+
+	* configure.ac:
+	* gst/Makefile.am:
+	  configure: Check for socketpair() in -lsocket too
+	  On e.g. QNX it is in an external library, not libc.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754875
+
+2015-09-09 13:10:04 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* docs/gst/gstreamer-sections.txt:
+	  Revert "docs: Make sure gst_debug_bin_to_dot_data() is documented"
+	  This reverts commit 0dffeb03018d12be522c2d97aaaf8102153bd7c0.
+	  The commit is erroneous and documents the function twice.
+
+2015-07-23 12:18:51 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: Make sure gst_debug_bin_to_dot_data() is documented
+	  Thanks to Nirbheek Chauhan <nirbheek@centricular.com> for pointing this
+	  out.
+
+2015-08-05 10:07:50 +0200  Stian Selnes <stian@pexip.com>
+
+	* libs/gst/check/gstharness.c:
+	* tests/check/libs/gstharness.c:
+	  harness: Fix race for gst_harness_element_ref
+	  In order for gst_harness_new_full to be MT-safe the increase and
+	  decrease of HARNESS_REF must be MT-safe. This allows for creating
+	  multiple harnesses from different threads wrapping the same element.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754661
+
+2015-08-05 09:59:39 +0200  Stian Selnes <stian@pexip.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: Allow-none for custom stress init func
+	  It should be allowed to not have a function to initialize the user data
+	  since it's often not necessary; it may already be initialized.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754661
+
+2015-09-06 09:58:09 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/plugins/gstreamer-plugins.signals:
+	  docs: remove signal that no longer exists from docs
+
+2015-09-05 11:20:49 +0100  Tim-Philipp Müller <tim@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 for translated string changes
+
+2015-09-05 11:18:27 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-launch.c:
+	  tools: gst-launch: fix --exclude command line option
+	  This has not worked (as in: crashed) since 2005, so
+	  perhaps it should just be removed instead.
+
+2015-08-31 12:07:10 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstqueue2.c:
+	  Revert "queue2: Process SEEKING query"
+	  This caused problems with oggdemux when queue2 was
+	  operating in queue mode and the souphttpsrc upstream
+	  is not seekable because the server doesn't support
+	  range requests. It would then still claim seekability
+	  and then things go wrong from there.
+	  This reverts commit 7b0b93dafe4ac547552cdb66ade5d8aa0405e7b4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753887
+
+2015-08-29 20:14:44 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: misc bugfixes
+	  1. Get a list of pad templates from the element class, not the
+	  factory. This allows us to interact with test-elements that does
+	  not have a factory.
+	  2. Use the pad_template_caps in caps-queries when caps is not set
+	  explicitly on the pad. Not doing so is simply wrong, and prohibits
+	  interactions with special templates used for testing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754193
+
+2015-08-26 09:29:05 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstevent.c:
+	  tests: event: fix build failure
+	  gst/gstevent.c:250:5: error: ‘for’ loop initial declarations are only
+	  allowed in C99 or C11 mode
+
+2015-08-24 21:04:37 +0300  Vivia Nikolaidou <vivia@toolsonair.com>
+
+	* gst/gstbin.c:
+	* tests/check/gst/gstbin.c:
+	  bin: Make sure we don't add/remove a bin to/from itself
+	  Doing so would deadlock from trying to acquire the object lock twice
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754036
+
+2015-08-21 14:28:48 -0700  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Reconfigure before propose_allocation
+	  There exist cases where a reconfigure event was propagated from
+	  downstream, but caps didn't change. In this case, we would
+	  reconfigure only when the next buffer arrives. The problem is that
+	  due to the allocation query being cached, the return query parameters
+	  endup outdated.
+	  In this patch we refactor the reconfigurating code into a function, and
+	  along with reconfiguring when a new buffer comes in, we also reconfigure
+	  when a query allocation arrives.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753850
+
+2015-08-07 15:39:59 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* tests/check/libs/basesrc.c:
+	  basesrc-test: Fix race testing segment update
+	  As this test is using a short sleep (GST_USECOND, which is 10ms
+	  in microsecond), sometimes that EOS event is received before the
+	  loop in basesrc have run _do_seek() and pushed the update segment.
+	  To solve this issue, we wait for the initial segment (and flush it)
+	  then we wait for the second segment before sending EOS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753365
+
+2015-08-19 11:46:07 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* scripts/gst-uninstalled:
+	  bin: Add NLE to GST_PLUGIN_PATH
+
+=== release 1.5.90 ===
+
+2015-08-19 12:50:56 +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.5.90
+
+2015-08-19 12:33:41 +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
+
+2015-08-19 11:17:29 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/zh_CN.po:
+	  po: Update translations
+
+2015-08-18 15:44:02 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: avoid tag list spam if upstream provides bitrate tags already
+	  Explicitly keep track again whether upstream tags or parser tags
+	  already contain bitrate information, and only force a tag update
+	  for a bitrate if we are actually going to add the bitrate to the
+	  taglist later. This fixes constant re-sending of the same taglist,
+	  because upstream provided a bitrate already and we didn't add it,
+	  so we didn't save the 'posted' bitrate, which would then in turn
+	  again trigger the 'bitrate has changed too much, update tags'
+	  code path. Fixes tag spam with m4a files for example.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679768
+
+2015-08-17 22:06:11 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstdebugutils.c:
+	  debugutils: bring the dot style a bit closer to what we use in the docs
+	  Use round corners for bins and elements. Put sink pads on the left and src pads
+	  on the right of elements.
+
+2015-08-15 18:30:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: fix tag handling
+	  In 0.10 there were no sticky events, and all tag events
+	  sent would just be merged with the previously-received
+	  tags. In 1.x we have sticky events, and the tags in the
+	  tag event(s) should at all times carry the complete tags,
+	  so we can't just push some tags and then just push tags
+	  with just bitrates to update the bitrates, etc.
+	  Instead we need to keep track of the upstream stream tags
+	  received, of the tags set by the video decoder subclass,
+	  and send an updated tag event with the combined tags
+	  including our own bitrate tags (if applicable) whenever
+	  the upstream tags, the subclass tags or any of our bitrates
+	  change.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679768
+
+2015-08-16 10:15:56 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstbaseparse.c:
+	* libs/gst/base/gstbaseparse.h:
+	* win32/common/libgstbase.def:
+	  baseparse: add API for subclass to set tags
+	  This is needed so that we can do proper tag handling
+	  all around, and combine the upstream tags with the
+	  tags set by the subclass and any extra tags the
+	  base class may want to add.
+	  API: gst_base_parse_merge_tags()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679768
+
+2015-08-15 16:01:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: save upstream stream tags
+	  We'll need those later.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679768
+
+2015-08-15 16:39:40 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: minor code simplification
+	  Use gst_pad_peer_query_duration() and remove a few
+	  unnecessary levels of indentation. Rest of code might
+	  looks a bit questionable, but leave it as is for now.
+
+2015-08-15 17:59:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Break sticky event array iterations if the type is bigger than the one we look for
+	  Microoptimization we can do because the array is sorted by type.
+
+2015-04-29 15:49:17 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/gstpad.c:
+	* gst/gstpad.h:
+	* tests/check/gst/gstpad.c:
+	  gstpad: Add a new GST_PROBE_HANDLED return value for probes
+	  In some cases, probes might want to handle the buffer/event/query
+	  themselves and stop the data from travelling further downstream.
+	  While this was somewhat possible with buffer/events and using
+	  GST_PROBE_DROP, it was not applicable to queries, and would result
+	  in the query failing.
+	  With this new GST_PROBE_HANDLED value, the buffer/event/query will
+	  be considered as successfully handled, will not be pushed further
+	  and the appropriate return value (TRUE or GST_FLOW_OK) will be returned
+	  This also allows probes to return a non-default GstFlowReturn when dealing
+	  with buffer push. This can be done by setting the
+	  GST_PAD_PROBE_INFO_FLOW_RETURN() field accordingly
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748643
+
+2015-08-15 13:25:35 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* gst/gstversion.h.in:
+	  gstversion: Add missing include in .in file.
+
+2015-08-11 00:35:21 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* gst/glib-compat.h:
+	* gst/gstallocator.h:
+	* gst/gstatomicqueue.h:
+	* gst/gstcapsfeatures.h:
+	* gst/gstclock.h:
+	* gst/gstcompat.h:
+	* gst/gstcontext.h:
+	* gst/gstdeviceprovider.h:
+	* gst/gstelementmetadata.h:
+	* gst/gstmacros.h:
+	* gst/gstmemory.h:
+	* gst/gstmeta.h:
+	* gst/gstpad.h:
+	* gst/gstpluginloader.h:
+	* gst/gstquark.h:
+	* gst/gsttrace.h:
+	  Headers: add missing includes.
+
+2015-08-15 06:41:14 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: add the new pad accept-template flag to the docs
+
+2015-08-14 22:44:50 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	  docs: section entry missing for gst_direct_control_binding_new_absolute
+
+2015-08-14 08:14:52 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstpad.c:
+	  tests: pad: tests for accept-caps default handling
+	  Check if all the default 4 accept-caps possibilities are working:
+	  subset or intersect check and query-caps or template caps comparisons.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753623
+
+2015-08-14 07:51:07 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstpad.c:
+	* gst/gstpad.h:
+	  pad: add GST_PAD_FLAG_ACCEPT_TEMPLATE
+	  It will make the default accept-caps handler use the pad template
+	  caps instead of the query-caps result to check if the caps is
+	  acceptable. This is aligned with what the design docs says the
+	  accept-caps should do (be non-recursive) and should be faster. It
+	  is *not* enabled by default, though.
+	  API: GST_PAD_FLAG_ACCEPT_TEMPLATE
+	  API: GST_PAD_IS_ACCEPT_TEMPLATE
+	  API: GST_PAD_SET_ACCEPT_TEMPLATE
+	  API: GST_PAD_UNSET_ACCEPT_TEMPLATE
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753623
+
+2015-08-14 11:10:03 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* tests/check/generic/states.c:
+	  check: Rename states unit test
+	  Makes it easier to differentiate from other modules states unit test
+
+2015-08-13 13:08:03 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: rework accept-caps
+	  According to the design docs:
+	  The ACCEPT_CAPS query is not required to work recursively, it can simply
+	  return TRUE if a subsequent CAPS event with those caps would return
+	  success.
+	  So make it a shallow check instead of recursivelly check downstream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748635
+
+2015-08-13 12:44:29 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: remove some dead code
+	  Doesn't seem like it is going to get back to life anytime soon
+	  Also removes a {} block that was likely used to keep the dead
+	  code around.
+
+2015-08-11 08:07:53 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: respect accept-caps intersect flag
+	  GstPad has a flag for suggesting if the accept-caps
+	  query should use intersect instead of the default
+	  subset caps operation to verify if the caps would be
+	  acceptable.
+	  basetransform currently always uses the subset check and
+	  this patch makes it honor the flag for using intersect
+	  if it is set.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748635
+
+2015-08-12 13:12:38 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: remove unreachable return statement
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753538
+
+2015-08-11 11:09:24 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/.gitignore:
+	  tests: ignore new harness test binary
+
+2015-08-10 15:31:37 +0300  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* gst/gstdatetime.c:
+	* tests/check/gst/gstdatetime.c:
+	  datetime: accept just a time as ISO 8601 string and use today's date then
+	  If no date and only a time is given in gst_date_time_new_from_iso8601_string(),
+	  assume that it is "today" and try to parse the time-only string. "Today" is
+	  assumed to be in the timezone provided by the user (if any), otherwise Z -
+	  just like the behavior of the existing code.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753455
+
+2015-07-24 00:41:57 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/gstharness.c:
+	* libs/gst/check/gstharness.h:
+	* tests/check/Makefile.am:
+	* tests/check/libs/gstharness.c:
+	  harness: add _set_forwarding function
+	  To be able to disable the slightly "magic" forwarding of the
+	  necessary events between the harnesses.
+	  Also introduce a new test-suite for GstHarness, that documents the
+	  feature, and should hopefully expand into documenting most of the
+	  features the harness possesses.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752746
+
+2015-08-08 17:59:51 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdevicemonitor.c:
+	  devicemonitor: fix provider leak
+
+2015-08-08 15:28:19 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Fix previous commit
+	  We want to get the caps query *result*
+
+2015-07-16 18:56:00 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdevicemonitor.c:
+	* gst/gstdevicemonitor.h:
+	* gst/gstdeviceprovider.c:
+	* gst/gstdeviceprovider.h:
+	* win32/common/libgstreamer.def:
+	  deviceprovider: Add method to hide devices from a provider
+	  Add methods to add/remove the providers that should be hidden by this
+	  provider. Also make a method to get a list of hidden providers.
+	  This makes it possible to have multiple systems monitor the same devices
+	  and remove duplicates.
+	  Add a property to see all devices, even duplicate ones from hidden
+	  providers.
+
+2015-08-08 14:42:52 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: get_allowed_caps() should go through both pads
+	  The previous implementation was doing a direct call to the peer pad,
+	  which resulted in query probes never being called on the original pad.
+	  Instead of that, get the peer pad caps by using gst_pad_peer_query()
+	  which will call probes in the expected fashion.
+
+2015-08-07 10:08:21 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/gstvalue.c:
+	  value: free caps during failure
+	  While calling gst_value_deserialize_sample, if there is a failure
+	  after caps is ref'ed, then caps is getting leaked. Hence checking for
+	  caps in fail: goto condition and unref'ing it
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753338
+
+2015-07-21 13:35:33 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* gst/gst_private.h:
+	* gst/gstplugin.c:
+	* gst/gstregistry.c:
+	  registry: Add plugins to the registry we are loading and not default one
+	  When running gst_registry_scan_plugin_file we were losing the
+	  information about the registry being loaded and ended up adding the
+	  plugin to the default registry which was not correct.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752662
+
+2015-08-05 15:51:27 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Only drop buffer if their PTS is out of segment
+	  As of now, even for stream completly inside segment, there is no
+	  guarantied that the DTS will be inside the segment. Specifically
+	  for H.264 with B-Frames, the first few frames often have DTS that
+	  are before the segment.
+	  Instead of using the sync timestamp to clip out of segment buffer,
+	  take the duration from the start/stop provided by the sub-class, and
+	  check if the pts and pts_end is out of segment.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752791
+
+2015-08-05 14:05:25 +0100  Luis de Bethencourt <luis@debethencourt.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: don't run code inside g_assert
+	  Even though asserts can't be disabled in GstHarness, Coverity still
+	  complains about running code inside them. Moving the code to outside the
+	  g_asserts().
+	  CID #1311326, #1311327, #1311328
+
+2015-07-17 10:18:02 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdevicemonitor.c:
+	* gst/gstdevicemonitor.h:
+	* win32/common/libgstreamer.def:
+	  devicemonitor: get a list of currently monitored providers
+	  Get a list of the currently monitored providers.
+
+2015-08-02 17:38:14 +0200  George Kiagiadakis <george.kiagiadakis@collabora.com>
+
+	* gst/gstpad.c:
+	  pad: fix invalid unref after IDLE probe on non-OK flow return
+	  In case there is an IDLE probe fired from gst_pad_push_data and it
+	  doesn't return GST_FLOW_OK, the code jumps to the probe_stopped
+	  label which tries to unref the data object. However, at this point
+	  the data object belongs downstream and must not be touched.
+	  By setting data = NULL, the code skips this unref.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=753151
+
+2015-08-04 20:08:04 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstbuffer.c:
+	  buffer: Fix the name of the parentbuffermeta debug category.
+	  Don't use 'glbufferrefmeta' as the debug category for the
+	  parent buffer meta.
+
+2015-08-04 13:45:09 +0900  Eunhae Choi <eunhae1.choi@samsung.com>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: not update upstream size with negative value
+	  upstream_size can be negative but queue->upstream_size is unsigned type.
+	  to get a chance to update queue->upstream_size in gst_queue2_get_range()
+	  it should keep the default value.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753011
+
+2015-08-04 19:59:28 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstbuffer.c:
+	* win32/common/libgstreamer.def:
+	  buffer: Remove extra debug symbol from exports
+	  Don't export the debug variable for the parent_buffer_meta.
+	  This was accidentally exported and shouldn't be public
+
+2015-08-04 00:11:24 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* plugins/elements/gstfilesink.c:
+	  filesink: use GST_INFO_OBJECT for more detail
+	  Helps to distiguish multiple filesinks.
+
+2015-07-30 17:29:25 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.h:
+	  docs: info: remove 0.8 terminology from log level description
+	  We don't "iterate" bins or pipelines any more.
+
+2015-07-30 12:17:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/baseparse.c:
+	  tests: baseparse: fix buffer leak in unit test
+	  Fixes make check-valgrind
+
+2015-07-28 21:14:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstsegment.h:
+	  doc/seekflags: Fix cross references
+	  This fixes miss-use of @ instead of % to refer to enumeration
+	  values.
+
+2015-07-28 22:30:54 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: add a few more new symbols and defines
+
+2015-07-28 16:57:43 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* plugins/elements/gstcapsfilter.h:
+	  doc/capsfilter: Document filtering modes
+	  This is documentation for the HTML documentation.
+
+2015-07-28 16:50:55 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	* plugins/elements/gstfilesink.c:
+	* plugins/elements/gstfilesink.h:
+	  doc/filesink: Add BufferMode enumeration
+	  This is purely for documentation purpose. This way the values will
+	  show up in the HTML documentation.
+
+2015-07-28 15:50:40 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/check/gstharness.c:
+	  doc/gsthardness: Fix typo in GstAllocationParams
+	  It's not GstAllocatorParams but GstAllocationParams.
+
+2015-07-28 15:46:09 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/check/gstharness.c:
+	  doc/gstharness: Remove unknown parameter
+	  sink_elenment_name is not a parameter of gst_harness_add_sink_harness()
+	  function, but still it show up in documentation.
+
+2015-07-28 12:19:04 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstcapsfilter.c:
+	* plugins/elements/gstcapsfilter.h:
+	  capsfilter: Only remember previous filter caps if they were actually used for something
+	  If nobody ever saw the previous filter caps, nothing could've negotiated with
+	  them and we can just pretend they never existed at all.
+
+2015-07-28 12:16:12 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstcapsfilter.c:
+	  capsfilter: When switching caps change modes, forget all previous caps
+
+2015-07-23 18:15:05 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Return FLOW_FLUSHING if negotiation fails during shutdown
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752800
+
+2015-07-22 18:55:29 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: Fix indendation
+
+2015-07-21 13:14:59 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Avoid increasing query reference
+	  gst_query_find_allocation_meta() requires the query to be
+	  writable to work. This patch ensure avoids taking a reference
+	  on the query, so we can now check if a certain allocation meta
+	  is present.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752661
+
+2015-07-22 15:38:06 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstbuffer.c:
+	  docs: fix description of gst_buffer_extract_dup()
+	  No GBytes involved.
+
+2015-07-21 00:17:28 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* plugins/elements/gstconcat.c:
+	  concat: dot not reset pad states too early
+	  Resetting the flushing state of the pads at the end of the
+	  PAUSED_TO_READY transition will make pads handle serialized
+	  queries again which will wait for non-active pads and might
+	  cause deadlocks when stopping the pipeline.
+	  Move the reset to the READY_TO_PAUSED instead.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752623
+
+2015-07-20 16:18:06 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/gstharness.c:
+	* libs/gst/check/gstharness.h:
+	  harness: add functions for adding sub-harnesses directly
+	  By introducing gst_harness_add_src_harness and gst_harness_add_sink_harness
+	  we collect all sub-harness setup in one function, making the previous
+	  sub-harness creation functions now calls these directly, and making it
+	  much easier (and less error-prone) to add your own src or sink-harness
+	  using the more generic harness-creation functions.
+
+2015-07-17 17:44:52 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Don't override gst_segment_do_seek()
+	  This line has no purpose, clearly gst_segment_do_seek() is doing
+	  the right job, also, having the start time (a timestamp) be that
+	  same as time (the stream time) is quite odd.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750783
+
+2015-07-17 17:43:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Fix extrapolation of seeksegment.stop
+	  The stop shall be relative to start if extrapolated from the
+	  duration.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750783
+
+2015-07-16 18:47:20 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdevicemonitor.c:
+	  devicemonitor: do start and stop outside of the lock
+	  Release the monitor lock when calling the provider start/stop methods.
+	  Because we release the lock now, We need to make sure we check the
+	  cookie again and keep track of started and removed providers.
+
+2015-07-16 18:43:06 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdeviceprovider.c:
+	* gst/gstdeviceprovider.h:
+	  deviceprovider: small cleanups
+	  Protect against wrong arguments.
+	  Clean up the header file indentation.
+
+2015-07-16 17:25:24 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdevicemonitor.c:
+	  devicemonitor: keep order of providers and devices
+	  The deviceproviders are added to the array sorted by their rank. Make
+	  sure we keep this ordering when removing a provider.
+	  We use _prepend to collect the devices, use g_list_reverse to get the
+	  devices in the right order; sorted by rank and in the same order as
+	  returned by the provider.
+
+2015-07-16 17:50:49 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: fix indentation
+
+2015-07-16 17:50:06 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: fix pad template leak
+
+2015-07-16 17:13:35 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstplugin.c:
+	  docs: drop reference to sourceforge mailing list adress
+
+2015-07-16 17:53:40 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: don't re-establish the harness sink and src pads
+	  Given that the element has the possibility to have one, they should
+	  already be there.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752498
+
+2015-07-13 11:03:13 +0200  Stian Selnes <stian@pexip.com>
+
+	* libs/gst/check/gstharness.c:
+	* libs/gst/check/gstharness.h:
+	  harness: Improve detection of element type
+	  The element flag does not indicate wether a bin should be tested as a
+	  source or as a sink, eg. a bin with the sink flag may still have a
+	  source pad and a bin with the source flag may have a sink pad. In this
+	  case it is better to determine the element type by looking at the
+	  available pads and pad templates.
+	  Also rename srcpad and sinkpad where it actually represents
+	  element_srcpad_name and element_sinkpad_name.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752493
+
+2015-07-13 11:10:49 +0200  Stian Selnes <stian@pexip.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: Forward sticky events to sink harness
+	  Fixes issue where if a sink harness was added late the sticky events
+	  would not be forwared.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752494
+
+2015-07-16 12:36:14 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/gstharness.h:
+	  harness: make header nicer to read
+
+2015-07-16 10:36:36 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: add new function to API docs
+
+2015-07-15 18:21:13 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstdevice.c:
+	* gst/gstdevice.h:
+	* win32/common/libgstreamer.def:
+	  device: add generic struct with properties
+	  Add a generic structure to hold any additional properties about the
+	  device.
+
+2015-07-14 12:44:12 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gsttee.c:
+	  tee: fix typo in allow-not-linked property description
+
+2015-07-13 14:24:34 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstbus.c:
+	  docs: bus: mention main loop requirement in gst_bus_add_watch() docs
+
+2015-03-18 16:05:34 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* gst/gsttask.c:
+	  task: add function guard for _set_lock() and fix guard for _join()
+	  Should only access the object structure after checking
+	  it's valid in gst_task_join().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746385
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746431
+
+2015-05-19 18:58:11 +0200  Philippe Normand <philn@igalia.com>
+
+	* gst/gstprotection.c:
+	  protection: implement meta transform function
+	  Copy the GstMeta contents over to the new buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749590
+
+2015-07-10 09:12:15 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: estimate duration on EOS
+	  For files which are smaller than 1.5 seconds, the duration
+	  estimation does not happen. So the duration will always be
+	  displayed as 0. Updating the duration on EOS when the estimation
+	  has not happened already
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750131
+
+2015-07-10 11:01:21 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* libs/gst/base/gstadapter.c:
+	  adapter: change log message properly
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752116
+
+2015-07-09 00:12:51 +0900  Justin Joy <justin.joy.9to5@gmail.com>
+
+	* plugins/elements/gststreamiddemux.c:
+	* plugins/elements/gststreamiddemux.h:
+	  docs: add StreamidDemux to documentation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749873
+
+2015-07-09 00:21:42 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* libs/gst/base/gstadapter.c:
+	  adapter: fix to get valid (buffer_)list
+	  get_list/get_buffer_list should be done with buffers in adapter remaining
+	  while take_list/take_buffer_list flushes each buffer one by one.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752116
+
+2015-07-08 20:06:27 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* tests/check/libs/adapter.c:
+	  adapter: unit test for new get_(buffer_)list
+
+2015-07-08 12:00:56 +0200  Arnaud Vrac <avrac@freebox.fr>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: put buffer in a correct state after gst_adapter_get_buffer call
+	  We must make the buffer writable to write its PTS and DTS, and also
+	  reset its duration.
+	  The behaviour is now the same as before commit c3bcbadd, except metas
+	  might still be attached to the buffer extracted from the adapter.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752092
+
+2015-07-07 15:02:45 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/gstharness.c:
+	  harness: fix indentation and replace stress test function macros
+	  These screw with indentation and seem a bit trivial. Just copy'n'paste.
+
+2015-07-07 10:46:48 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* gst/gstbuffer.c:
+	* libs/gst/net/gstnetaddressmeta.c:
+	* libs/gst/net/gstnetcontrolmessagemeta.c:
+	* tests/check/gst/gstmeta.c:
+	  meta: transform_func: return FALSE if not supported or failed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751778
+
+2015-07-07 11:53:07 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* plugins/elements/gstidentity.c:
+	* tests/check/elements/identity.c:
+	  identity: refactor and add tests using GstHarness
+	  Writing a test for unscheduling the gst_clock_id_wait inside the
+	  identity element, found an invalid read, caused by removing the clock-id
+	  when calling _unschedule instead of letting the code calling _wait remove
+	  the clock-id after being unscheduled.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752055
+
+2014-04-12 19:48:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/gstharness.c:
+	  harness: make sure g_assert() statements are always active
+	  We have code with side effects inside g_assert()s, so make
+	  sure those are always enabled here (they might otherwise
+	  get disabled for release builds).
+
+2015-07-07 00:56:41 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/check/gstharness.c:
+	* libs/gst/check/gstharness.h:
+	  harness: rename GstHarnessPrepareBuffer -> GstHarnessPrepareBufferFunc
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751916
+
+2015-07-07 00:53:48 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-docs.sgml:
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/check/check.h:
+	* libs/gst/check/gstharness.c:
+	* libs/gst/check/gstharness.h:
+	  docs: add GstHarness to documentation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751916
+
+2013-12-16 10:47:47 +0100  Havard Graff <havard.graff@gmail.com>
+
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/gstharness.c:
+	* libs/gst/check/gstharness.h:
+	  check: Add GstHarness convenience API for unit tests
+	  http://gstconf.ubicast.tv/videos/gstharness-again-a-follow-up/
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751916
+
+2015-07-06 09:26:58 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: reverse playback in pull mode
+	  right now reverse playback is disabled in pull mode.
+	  enabling the code for the same and changing a bit of logic
+	  to make reverse playback work.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750783
+
+2015-06-20 08:33:26 +0900  Vineeth T M <vineeth.tm@samsung.com>
+
+	* tests/check/libs/baseparse.c:
+	  baseparse: add reverse playback test in pull mode
+	  add test for reverse playback in pull mode and compare
+	  the buffers being received in sink chain to make sure
+	  the playback is allright
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750783
+
+2015-07-06 14:31:24 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* scripts/git-update.sh:
+	  Revert "scripts: Allow passing make flags to git-update.sh"
+	  This reverts commit ab5fdd72129ea61e8dff51cdc0afcccac03ebc2b.
+	  We can use the MAKEFLAGS environment variable to pass options to make,
+	  so avoid adding another mechanism that could be confusing.
+
+2015-07-06 11:16:27 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* gst/gstpad.h:
+	  pad: Clarify pad probe return type documentation
+
+2015-07-02 14:32:21 +0800  Song Bing <b06498@freescale.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Shouldn't drop buffer when sync=false
+	  Shouldn't drop buffer when sync=false
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751819
+
+2015-07-06 11:25:50 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* scripts/git-update.sh:
+	  scripts: Allow passing make flags to git-update.sh
+	  Mostly adding this for add a -jN as appropriate while building.
+
+2015-05-30 14:27:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstqueue.c:
+	  queue: avoid slice allocs/frees for each item
+	  Microoptimisation: Let GstQueueArray store our
+	  item struct. That way we don't have to alloc/free
+	  temporary QueueItem slices for every item we want
+	  to put into the queue.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750149
+
+2015-05-30 13:07:50 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstqueuearray.c:
+	* libs/gst/base/gstqueuearray.h:
+	* win32/common/libgstbase.def:
+	  queuearray: allow storing of structs in addition to pointers
+	  This way we don't have to allocate/free temporary structs
+	  for storing things in the queue array.
+	  API: gst_queue_array_new_for_struct()
+	  API: gst_queue_array_push_tail_struct()
+	  API: gst_queue_array_peek_head_struct()
+	  API: gst_queue_array_pop_head_struct()
+	  API: gst_queue_array_drop_struct()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750149
+
+2015-07-03 21:57:55 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From f74b2df to 9aed1d7
+
+2015-06-19 00:05:44 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst/gstpad.c:
+	* tests/check/gst/gstbin.c:
+	  pad: Enforce NEED_PARENT flag also for chain
+	  The check for the presence of the parent in the presence of
+	  the NEED_PARENT flag was missing for the chain function. Also keep
+	  a ref on the parent in case the pad is removed mid-chain.
+
+2015-07-03 15:55:08 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/plugins/gstreamer-plugins-docs.sgml:
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	* docs/plugins/gstreamer-plugins.args:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	  docs: update for two missing elements
+	  Concat was not linked and streamiddemux was missing.
+
+2015-07-03 12:37:54 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	* plugins/elements/gstcapsfilter.c:
+	* plugins/elements/gstcapsfilter.h:
+	* plugins/elements/gstfakesrc.c:
+	  docs: another sweep canonicalizing the plugin docs sections file
+	  Use underscores for capsfilter macros. Correct the type-name for fakesrc
+	  if we ever implement the enum.
+
+2015-07-03 11:45:19 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	* plugins/elements/gsttypefindelement.h:
+	  docs: order and canonicalize the -sections.txt file
+	  Have all sections in alphabetical order. Also make the macro order consistent.
+	  This is a preparation for generating the file. Remove GET_CLASS macro for
+	  typefine element, since it is not used and the header is not installed.
+
+2013-12-16 11:24:17 +0100  Stian Selnes <stian@pexip.com>
+
+	* gst/gstmemory.h:
+	  memory: Add missing field initializers to GstMapInfo
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751881
+
+2015-07-02 15:10:43 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: remove always-true check
+	  event can't be NULL, it has been dereferenced by GST_EVENT_TYPE (), and no
+	  case frees the pointer. Remove unnecessary check which will always be True.
+	  CID #1308955
+
+2015-07-01 10:50:19 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  transform: Also copy POOL metas and make sure to copy over metas when creating subbuffers
+	  POOL meta just means that this specific instance of the meta is related to a
+	  pool, a copy should be made when reasonable and the flag should just not be
+	  set in the copy.
+
+2015-07-01 10:45:01 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstadapter.c:
+	  adapter: Also copy POOL metas and make sure to copy over metas when creating subbuffers
+	  POOL meta just means that this specific instance of the meta is related to a
+	  pool, a copy should be made when reasonable and the flag should just not be
+	  set in the copy.
+
+2015-07-01 10:36:36 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	  buffer: Don't copy "memory" metas unconditionally
+	  Don't copy memory metas if we only copied part of the buffer, didn't
+	  copy memories or merged memories. In all these cases the memory
+	  structure has changed and the memory meta becomes meaningless.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751712
+
+2015-07-01 10:25:15 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	  Revert "buffer: Don't copy POOLED and memory metadata unconditionally"
+	  This reverts commit 7a08fa5ec4804f104e9aa9f458322f6eb49a7e49.
+
+2015-06-30 13:38:10 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	  buffer: Don't copy POOLED and memory metadata unconditionally
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751712
+
+2015-06-30 11:18:24 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Use new gst_adapter_get_buffer() API instead of gst_adapter_map()
+	  This preserves GstMeta properly unless the subclass does special things. It's
+	  enough to make h264parse's stream-format/alignment conversion pass through
+	  metas as needed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742385
+
+2015-06-30 11:11:25 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstadapter.c:
+	* libs/gst/base/gstadapter.h:
+	* win32/common/libgstbase.def:
+	  adapter: Add get variants of the buffer based take functions
+	  Main difference to gst_adapter_map() for all practical purposes is that
+	  GstMeta of the buffers will be preserved.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742385
+
+2015-06-29 17:03:10 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstadapter.c:
+	  adapter: Copy over GstMeta from the input buffers to the output
+	  All functions that return a GstBuffer or a list of them will now copy
+	  all GstMeta from the input buffers except for meta with GST_META_FLAG_POOLED
+	  flag or "memory" tag.
+	  This is similar to the existing behaviour that the caller can't assume
+	  anything about the buffer flags, timestamps or other metadata. And it's
+	  also the same that gst_adapter_take_buffer_fast() did before, and what
+	  gst_adapter_take_buffer() did if part of the first buffer or the complete
+	  first buffer was requested.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742385
+
+2015-06-29 20:27:12 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Init function can take a NULL interfaces array
+
+2015-06-29 13:57:11 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* tests/check/gst/gstcaps.c:
+	  tests: caps: fix test_intersect_flagset failure
+	  test_intersect_flagset fails because when caps is being
+	  created, flags and mask are being cast to uint64 while
+	  they should be uint. This results in invalid memory access
+	  or a segfault.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751628
+
+2015-06-29 14:22:46 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* scripts/gst-uninstalled:
+	  scripts: Fix GST_VALIDATE_PLUGIN_PATH
+	  It moved recently
+
+2015-06-29 13:58:04 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasetransform.h:
+	  basetransform: Fix up documentation of transform_meta vfunc
+	  By default we copy all metas that have no tags.
+
+2015-06-29 10:41:27 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/controller/gstdirectcontrolbinding.c:
+	* libs/gst/controller/gstdirectcontrolbinding.h:
+	  directcontrolbinding: fix ABI break
+	  Structure size was increased without adjustment of the padding.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751622
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740502
+
+2015-03-19 15:55:14 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* gst/gsttask.c:
+	  task: guard against NULL task function
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746439
+
+2015-05-14 11:48:45 +0200  Miguel París Díaz <mparisdiaz@gmail.com>
+
+	* plugins/elements/gstfunnel.c:
+	* plugins/elements/gstfunnel.h:
+	  funnel: add "forward-sticky-events" property
+	  It is useful to avoid sending sticky event on stream changes.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749315
+
+2015-06-25 00:04:07 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.5.2 ===
+
+2015-06-24 22:49:17 +0200  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.5.2
+
+2015-06-24 22:45:00 +0200  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
+
+2015-06-22 23:37:27 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstutils.c:
+	  tests: gstutils: fix wrong description of test element
+	  It is a fakesink with request pads, not a source
+
+2015-06-24 15:35:16 +0200  Jonas Holmberg <jonashg@axis.com>
+
+	* gst/gstbufferpool.c:
+	  bufferpool: Fixed compiler warning
+	  The pool variable was unused when buidling with debug disabled.
+
+2015-06-24 11:13:40 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/cs.po:
+	* po/de.po:
+	* po/hu.po:
+	* po/nl.po:
+	* po/pl.po:
+	* po/ru.po:
+	* po/uk.po:
+	* po/vi.po:
+	  po: Update translations
+
+2015-06-24 11:12:03 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* win32/common/libgstreamer.def:
+	  win32: Update .def file for new API
+
+2015-06-24 14:19:04 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: need to deep-copy last buffer list in drain
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751420
+
+2015-06-24 10:52:02 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbufferlist.c:
+	  bufferlist: Warn if copying a buffer fails in gst_buffer_list_copy_deep()
+
+2015-06-24 14:18:47 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstbufferlist.c:
+	* gst/gstbufferlist.h:
+	* tests/check/gst/gstbufferlist.c:
+	* win32/common/libgstreamer.def:
+	  bufferlist: add new api gst_buffer_list_copy_deep
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751420
+
+2015-06-23 16:58:56 +0200  Jonas Holmberg <jonashg@axis.com>
+
+	* libs/gst/check/gstcheck.c:
+	* tests/check/gst/gstobject.c:
+	  gstcheck: Print newline in message handler
+	  The message handler is supposed to print a newline after the message
+	  just like the default message handler.
+
+2015-06-12 16:54:32 +0800  Song Bing <b06498@freescale.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Handle different duration track selection
+	  Support track switch from EOS track to non-EOS one.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750761
+
+2015-06-12 16:52:46 +0800  Song Bing <b06498@freescale.com>
+
+	* gst/gstpad.c:
+	  pad: Clear EOS flag after received STREAM_START event
+	  Clear EOS flag after received STREAM_START event
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750761
+
+2015-06-22 14:30:49 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstutils.c:
+	  tests: gstutils: add tests for gst_element_get_compatible_pad
+	  Adds tests for gst_element_get_compatible_pad for when it has to
+	  request pads.
+	  Note that these tests don't cover the case when it has to request
+	  a pad that already exists.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751235
+
+2015-06-19 15:46:56 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstutils.c:
+	  utils: use caps when getting a compatible pad by template
+	  Do not ignore the caps argument when requesting a pad by template.
+	  This is particularly harmful when the pad caps query by default
+	  returns ANY so it will match the first template instead of the
+	  one that actually intersects with the caps.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751235
+
+2015-06-23 00:14:30 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstsample.h:
+	  gstsample.h: Include gstbufferlist.h now that it uses GstBufferList
+
+2015-06-17 16:12:13 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* plugins/elements/gstconcat.c:
+	  concat: when releasing pad, send EOS appropriately.
+	  Previously, concat sent an EOS if there was a next pad.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751107
+
+2015-06-16 16:14:18 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstconcat.c:
+	* plugins/elements/gstconcat.h:
+	  concat: Add adjust-base property
+	  This disables the segment.base adjustments, which is useful if downstream
+	  takes care of base adjustments already (example: a combination of concat
+	  and streamsynchronizer)
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751047
+
+2015-06-22 14:04:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Unset the last buffer list if we only got a buffer
+	  Also remember any preroll buffer list.
+
+2015-06-22 13:33:29 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* win32/common/libgstreamer.def:
+	  sample: Add new API to the docs
+
+2015-06-22 20:02:55 +0900  Hyunjun <zzoon.ko@samsung.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: enable to get last sample including buffer list if needed
+	  In case of a buffer list rendering, last-sample is not updated.
+	  It needs to be updated and enable to get buffer list from last-sample.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751026
+
+2015-06-22 19:35:40 +0900  Hyunjun <zzoon.ko@samsung.com>
+
+	* gst/gstsample.c:
+	* gst/gstsample.h:
+	  sample: add gst_sample_set/get_buffer_list apis
+	  Allowed to set/get buffer list to sample if needed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751026
+
+2015-06-19 10:52:10 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* test.py:
+	  test.py: remove accidentally committed file
+
+2015-06-18 11:51:48 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstbuffer.c:
+	* gst/gstelementfactory.h:
+	* gst/gstsegment.h:
+	* gst/gstsystemclock.h:
+	* libs/gst/base/gstbasetransform.h:
+	  doc: Unify Since mark for attribute and enum
+	  As this show up as prose in the doc, simply make it consistent
+	  and "arguable" nicer to read.
+
+2015-06-18 11:48:50 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstbuffer.h:
+	  doc: Remove parenthesis around Since:
+	  This confuse the parser, hence it does not endup in the doc and the
+	  index properly.
+
+2015-05-06 16:44:48 +1000  Jan Schmidt <jan@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstbuffer.c:
+	* gst/gstbuffer.h:
+	* win32/common/libgstreamer.def:
+	  Add GstParentBufferMeta
+	  A core meta which helps implement the old concept
+	  of sub-buffering in some situations, by making it
+	  possible for a buffer to keep a ref on a different
+	  parent buffer. The parent buffer is unreffed when
+	  the Meta is freed.
+	  This meta is used to ensure that a buffer whose
+	  memory is being shared to a child buffer isn't freed
+	  and returned to a buffer pool until the memory
+	  is.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750039
+
+2015-06-16 18:08:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/Makefile.am:
+	* libs/gst/base/Makefile.am:
+	* libs/gst/check/Makefile.am:
+	* libs/gst/controller/Makefile.am:
+	* libs/gst/net/Makefile.am:
+	* test.py:
+	  gi: Use INTROSPECTION_INIT for --add-init-section
+	  This new define was added to common. The new init section fixed
+	  compilation warning found in the init line that was spread across
+	  all files.
+
+2015-06-16 17:46:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* common:
+	  Automatic update of common submodule
+	  From 6015d26 to f74b2df
+
+2015-06-15 10:06:00 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstclock.h:
+	  clock: Fix _STIME_FORMAT macros
+	  This macro didn't work well as it relied on the sign on the last
+	  divided number (number of days). This value is most of the time
+	  zero, and zero is considered positive in printf. Instead, deal with
+	  the sign manually, and resuse the original macros for the rest. This
+	  actually simplify the macro a lot.
+
+2015-06-14 20:48:29 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefindelement: reset segment only once streaming has stopped
+	  Fixes the occasional criticals in the discoverer unit test.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745073
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750823
+
+2015-06-14 11:23:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	  doc: Add more missing symbols in lib-sections.txt
+	  These where causing broken links.
+
+2015-06-14 11:22:54 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/net/gstnetaddressmeta.c:
+	  doc: Fix reference to unknown type GstNetAddress
+
+2015-06-14 11:22:36 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/controller/gsttimedvaluecontrolsource.h:
+	  doc: Include and fix GstControlPoint
+
+2015-06-14 11:21:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/libs/gstreamer-libs-docs.sgml:
+	  doc: Add GstNetControlMessageMeta to the doc
+	  This is being referenced elsewhere, but results in broken links.
+	  It seems to be public API, so I think it should be in the doc.
+
+2015-06-14 10:59:51 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/base/gstpushsrc.h:
+	  doc: Document GstPushSrcClass
+
+2015-06-14 10:58:18 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/base/gstcollectpads.h:
+	  doc: Better document new GstCollectData.ABI.abi.dts
+	  The doc generator get confused with the inline structure. So
+	  workaround by wrapping the inner of the structure with
+	  public/private mark, and document that GST_COLLECT_PADS_DTS macro
+	  shall be used to access this.
+
+2015-06-14 10:56:28 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstbaseparse.h:
+	* libs/gst/net/gstnetcontrolmessagemeta.h:
+	* libs/gst/net/gstptpclock.h:
+	  doc: Various doc fixes for libgstreamer-base
+	  * Fix function name in sections.txt
+	  * Add few missing or fix miss-named
+	  * Workaround gtk-doc being confused with non typedef
+	  types (loose track of public/private
+
+2015-06-14 10:25:52 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstdevicemonitor.c:
+	* gst/gsturi.c:
+	* gst/gsturi.h:
+	* gst/gstvalue.c:
+	  doc: More doc warning fixes
+	  So from this point, the remaining warning for libgstreamer are about
+	  protected member not showing in the doc. This may need some discussion
+	  with upstream gtk-doc people.
+	  * Remove % in from of none macro
+	  * Fixed GST_TYPE_FAGS -> GST_TYPE_FAG_SET
+	  * Minor wording fix
+	  * Can't link to GstUri.port, so split the .port part
+
+2015-06-14 09:17:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gsturi.c:
+	  doc: In GstUri we meant nul-terminated, not %NULL
+	  %NULL refers to the pointer. I've written it this way in one
+	  word as this is what GLib uses.
+
+2015-06-13 21:02:20 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstplugin.h:
+	  doc: Cannot reference GST_PACKAGE_RELEASE_DATETIME
+	  So simply remove the % sign.
+
+2015-06-13 20:52:01 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstclock.c:
+	  doc: Fix typo in ref _clock_wait_for_sync()
+
+2015-06-13 20:37:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gsturi.c:
+	  doc: Fix GstUri doc typos
+	  * Use &perctn; instead of reserved character %
+	  * NULL take two L
+
+2015-06-13 20:19:59 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstallocator.h:
+	* gst/gstbuffer.c:
+	* gst/gstbuffer.h:
+	* gst/gstbufferpool.h:
+	* gst/gstclock.h:
+	* gst/gsterror.h:
+	* gst/gstmemory.h:
+	* gst/gstmessage.h:
+	* gst/gstprotection.h:
+	* libs/gst/base/gstcollectpads.h:
+	* libs/gst/controller/gsttimedvaluecontrolsource.c:
+	  doc: Fix Since: marks
+	  There was few Since: mark missing their column. Also unify the way
+	  we set the Since mark on enum value and structure members. These
+	  sadly don't show up in the index.
+
+2015-06-13 20:01:27 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstbuffer.c:
+	  doc: Add gst_buffer_copy_deep()
+
+2015-06-13 19:47:45 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/check/gstconsistencychecker.c:
+	  gi: Skip gst_consitency_checker_new
+	  This non boxed type cannot be allocated safely.
+
+2015-06-13 19:46:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/gst/gstreamer-docs.sgml:
+	* docs/libs/gstreamer-libs-docs.sgml:
+	  doc: Add indexes of added APIs
+	  One of the nice feature in GTK doc is that it generate indexes
+	  of added APIs base on the since marker. Include that in our doc
+	  while fixing the issue of duplicate ID (produce xml contains that
+	  id it seems)
+
+2015-06-13 15:10:53 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/controller/gsttimedvaluecontrolsource.c:
+	  doc: Make ..._source_find_control_point_iter transfer none
+
+2015-06-13 14:40:43 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/net/gstntppacket.c:
+	  doc: Silence warning about unused gstntppacket section
+	  This API is internal.
+
+2015-06-13 14:37:42 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/libs/gstreamer-libs-docs.sgml:
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/net/gstntppacket.c:
+	  Revert "doc: Add GstNtpPacket to the doc"
+	  This reverts commit c4eb876961aba1092c4831a8feaf48d7be1e38ae.
+	  Oops, this is not a public API
+
+2015-06-13 14:21:41 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/libs/gstreamer-libs-docs.sgml:
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/net/gstntppacket.c:
+	  doc: Add GstNtpPacket to the doc
+
+2015-06-13 13:55:27 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/base/gstindex.c:
+	  doc: Remove gstindex from doc comment
+	  Moving that to normal comment to silence the generator. GstIndex
+	  is not in GStreamer library at the moment (removed from 0.10).
+
+2015-06-13 13:48:03 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/base/gstcollectpads.c:
+	  gi: Set collectpads function param scope
+
+2015-06-13 13:42:58 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* libs/gst/base/gstbitreader.c:
+	* libs/gst/base/gstbytereader.c:
+	* libs/gst/base/gstbytewriter.c:
+	  gi: Skip allocator of non-boxed structure
+	  These are not usable as they are, and can easily lead to crash
+	  or leaks. This also silence warning from the scanner. If we manage to
+	  make this usable, we can then remove that mark, it will require
+	  to make this type boxed.
+
+2015-06-13 13:24:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	  doc: Give gstconfig a nice name
+	  As all other section do have a nice came case name, it seems
+	  more consistent.
+
+2015-06-13 13:19:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	  doc: Add missing gst_event_new/parse_protection
+
+2015-06-13 13:19:05 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	  doc: Give gstprotection section a nice title
+
+2015-06-13 13:14:30 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstevent.c:
+	  doc: Remove uneeded protectionevent section
+	  These functions are part of gstevent section already. Keep the doc,
+	  since it's good.
+
+2015-06-13 12:32:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gsttaglist.c:
+	  taglist: Add missing scope to func param
+	  This tell GI if this function is for actions (call) or is the
+	  answer of this method being asynchronous (async). In this case
+	  it's a call. This also silence warning from the GI scanner.
+
+2015-06-13 12:27:31 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstprotection.h:
+	  gstprotection: Add missing Since 1.6 mark
+
+2015-06-13 12:26:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstprotection.c:
+	  gstprection: _add_protection_meta() is transfer none
+	  Just like gst_buffer_add_meta() this function should also be
+	  transfer none. This also silence a gi warning about returning
+	  a copy of a non boxed bare structure.
+
+2015-06-13 12:25:19 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstprotection.c:
+	* gst/gstprotection.h:
+	* tests/check/gst/gstprotection.c:
+	  gstprotection: Add missing namespace to macro
+	  GST_PROTECTION_SYSTEM_ID_CAPS_FIELD was missing the GST_ namespace.
+	  Add it before its too late.
+
+2015-06-13 11:55:10 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstversion.h.in:
+	  doc: Keep SECTION: after the ifdef
+	  Otherwise GTK doc will see it as often as we include that files
+	  and warn about duplicated SECTION:
+
+2015-06-13 10:23:52 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstminiobject.c:
+	  gi: Skip mini object method that play with refcounting
+	  It make no sense to allow using that. Any use would lead to leak
+	  of crash. Note that GMiniObject is entirely unusable as you cannot
+	  cast from let's say GstBuffer to GstMiniObject.
+
+2015-06-13 15:05:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	  libs: more doc scanner fixes
+	  gstbasetransform.h:196: Warning: GstBase: "@submit_input_buffer" parameter unexpected at this location:
+	  * @submit_input_buffer: Function which accepts a new input buffer and pre-processes it.
+	  gstnetcontrolmessagemeta.c:103: Warning: GstNet: gst_buffer_add_net_control_message_meta: unknown parameter 'message' in documentation comment, should be 'addr'
+
+2015-06-13 09:37:46 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstminiobject.h:
+	  doc: Fix annoation for GstMiniObject
+	  Replacing reprecated "Ref Func:", "Unref Fun:" etc. comment block
+	  with appropriate (ref-func name) etc. annotation.
+
+2015-06-13 09:34:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstelementfactory.h:
+	  doc: Fix unbalanced parenthesis
+
+2015-06-13 09:30:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstclock.h:
+	  doc: Fix more typo
+
+2015-06-13 09:22:41 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstclock.h:
+	  doc: Fix type in previous commit
+	  Marker is (value .. not (alue.
+
+2015-06-13 09:19:27 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstclock.h:
+	* gst/gstelementfactory.h:
+	  doc: Don't use deprecated Value: and Type: comment
+	  Instead use appropriate annotation. Annotations can be added
+	  to the right of the constant name in a comment block.
+
+2015-06-12 17:07:38 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	  collectpads: Add new macro to the doc
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-06-12 17:07:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	  clock: Add new signed time macro to the doc
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-06-10 14:17:01 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: Don't initially send an invalid DTS
+	  Sending a possibly invalid DTS may confuse the muxers, which will
+	  then think the DTS is going backward.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-04-03 17:54:50 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstcollectpads.c:
+	* libs/gst/base/gstcollectpads.h:
+	* tests/check/libs/collectpads.c:
+	  collectpads: Add negative DTS support
+	  Make gst_collect_pads_clip_running_time() function also store the
+	  signed DTS in the CollectData. This signed DTS value can be used by
+	  muxers to properly handle streams where DTS can be negative initially.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-06-12 12:06:05 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/gstclock.h:
+	  clock: Add signed time utilities
+	  Add utility to print signed value of time. This is useful to
+	  trace running time values in gint64 or GstClockTimeDiff values.
+	  Additionally, define GST_CLOCK_STIME_NONE to indicate an invalid
+	  signed time value and validation macro. New macros are:
+	  GST_CLOCK_STIME_NONE
+	  GST_CLOCK_STIME_IS_VALID
+	  GST_STIME_FORMAT
+	  GST_STIME_ARGS
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-06-10 20:44:26 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstmessage.c:
+	  message: add allow-none to gst_message_new_ function
+	  No restriction for creating messages without a source
+
+2015-06-12 13:45:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstcontroller.def:
+	  win32: update .def file for new API
+
+2015-05-27 12:29:41 +0300  Lazar Claudiu <lazar.claudiu.florin@gmail.com>
+
+	* libs/gst/controller/gstdirectcontrolbinding.c:
+	* libs/gst/controller/gstdirectcontrolbinding.h:
+	* tests/check/libs/controller.c:
+	* tests/examples/controller/.gitignore:
+	* tests/examples/controller/Makefile.am:
+	* tests/examples/controller/absolute-example.c:
+	  controller: Added absolute direct control binding, example and test
+	  Fixes: 740502
+	  API: gst_direct_control_binding_new_absolute
+
+2015-06-04 00:03:16 +1000  Matthew Waters <matthew@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstallocator.h:
+	* gst/gstmemory.c:
+	* gst/gstmemory.h:
+	  memory: provide a mem_map_full that takes the GstMapInfo
+	  Follow up of 7130230ddb349d0ca7942abdba26b7558df055d1
+	  Provide the memory implementation the GstMapInfo that will be used to
+	  map/unmap the memory.  This allows the memory implementation to use
+	  some scratch space in GstMapInfo to e.g. track different map/unmap
+	  behaviour or store extra implementation defined data about the map
+	  in use.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750319
+
+2015-04-08 14:21:43 -0700  Alison Chaiken <alison_chaiken@mentor.com>
+
+	* docs/manual/basics-pads.xml:
+	  docs: manual: fix name reversal in basics-pads
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747532
+
+2015-06-11 23:06:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstelements_private.c:
+	  gst_writev: define UIO_MAXIOV on iOS/OSX
+	  Apparently it's only seton iOS/OSX if defined(KERNEL).
+
+2015-06-12 01:15:19 +1000  Jan Schmidt <jan@centricular.com>
+
+	* plugins/elements/gstelements_private.c:
+	  gst_writev: Respect UIO_MAXIOV limit for the iov array
+	  If we receive more than UIO_MAXIOV (1024 typically) buffers
+	  in a single writev call, fall back to consolidating them
+	  into one output buffer or multiple write calls.
+	  This could be made more optimal, but let's wait until it's
+	  ever a bottleneck for someone
+
+2015-06-11 12:34:04 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstpipeline.c:
+	* gst/gstpipeline.h:
+	* win32/common/libgstreamer.def:
+	  pipeline: Add gst_pipeline_set_latency(), getter and GObject property
+	  This overrides the default latency handling and configures the specified
+	  latency instead of the minimum latency that was returned from the LATENCY
+	  query.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750782
+
+2015-06-11 11:37:30 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstconcat.c:
+	  concat: Add active-pad property
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746949
+
+2015-06-11 11:05:53 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstconcat.c:
+	  concat: Also reset the current start offset when receiving a FLUSH_STOP on the srcpad
+
+2015-06-11 11:05:38 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstconcat.c:
+	  concat: Add some newlines to event handling code to make the code look a bit less dense
+
+2015-06-11 10:53:30 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstconcat.c:
+	  concat: Reset segment base offset after FLUSH_STOP with reset_time = TRUE
+	  If the reset_time value of a FLUSH_STOP event is set to TRUE, the pipeline
+	  will have the base_time of its elements reset. This means that the concat
+	  element's current_start_offset has to be reset to 0, since it was
+	  calculated with the old base-time in mind.
+	  Only FLUSH_STOP events coming from the active pad are looked at.
+	  Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
+
+2015-03-28 16:46:32 +0100  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstconcat.c:
+	  concat: Forward FLUSH_START and FLUSH_STOP events
+	  Without this, seeking deadlocks if performed while the pipeline is paused.
+	  Only flush events coming from the active pad are forwarded.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745366
+
+2015-06-09 14:28:30 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* Makefile.am:
+	  cruft: add the obsolete tmpl dir to cruft-dirs
+
+2015-06-09 11:30:10 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From d9a3353 to 6015d26
+
+2015-06-09 11:01:53 +0200  Edward Hervey <edward@centricular.com>
+
+	* plugins/elements/gstfilesink.c:
+	  filesink: Fix fsync/_commit usage
+	  _MSC_VER will only be defined when building *on* windows and not just
+	  *for* windows. Instead, use the G_OS_WIN32 define
+
+2015-06-09 10:59:42 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* libs/gst/helpers/gst-ptp-helper.c:
+	  ptp: Check for the actual API we use instead of just looking for __APPLE__
+	  Should fix the build on FreeBSD, DragonFly and other BSDs.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750530
+
+2015-06-08 17:10:56 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Use the new GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC flag
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750574
+
+2015-06-08 17:04:55 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Make the clock a wrapper clock around an internal clock
+	  The internal clock is only used for slaving against the remote clock, while
+	  the user-facing GstClock can be additionally slaved to another clock if
+	  desired. By default, if no master clock is set, this has exactly the same
+	  behaviour as before. If a master clock is set (which was not allowed before),
+	  the user-facing clock is reporting the remote clock as internal time and
+	  slaves this to the master clock.
+	  This also removes the weirdness that the internal time of the netclientclock
+	  was always the system clock time, and not the remote clock time.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750574
+
+2015-06-08 23:07:40 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From d37af32 to d9a3353
+
+2015-06-08 20:00:47 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/fakesink.c:
+	  tests: fakesink: fix string leak in unit test
+
+2015-06-09 00:52:34 +1000  Jan Schmidt <jan@centricular.com>
+
+	* plugins/elements/gstfilesink.c:
+	  filesink: Fix Windows build by using _commit instead of fsync.
+
+2015-06-08 12:22:56 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Make sure to always initialize the variables we put into the statistics structure later
+	  CID 1304676, 1304677, 1304678, 1304679.
+
+2015-06-08 12:02:39 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/helpers/gst-ptp-helper.c:
+	  ptp: Ensure that not too much is read from or written to struct ifreq.ifr_name
+
+2015-06-08 19:33:03 +1000  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/base/gstbasetransform.h:
+	  basetransform: Add Since markers for new vfuncs
+	  Add Since: 1.6 markers for the new submit_input_buffer() and
+	  generate_output() vfuncs
+
+2015-05-23 01:08:29 +1000  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	* libs/gst/base/gstbasetransform.h:
+	* tests/check/Makefile.am:
+	* tests/check/libs/.gitignore:
+	* tests/check/libs/test_transform.c:
+	* tests/check/libs/transform2.c:
+	  basetransform: Split input buffer processing from output generation
+	  Allow for sub-classes which want to collate incoming buffers or
+	  split them into multiple output buffers by separating the input
+	  buffer submission from output buffer generation and allowing
+	  for looping of one of the phases depending on pull or push mode
+	  operation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750033
+
+2015-04-16 10:32:02 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstbuffer.h:
+	* plugins/elements/gstfilesink.c:
+	  Add GST_BUFFER_FLAG_SYNC_AFTER flag, and implement in filesink.
+	  Makes it possible to get filesink to fsync() after rendering
+	  a buffer.
+
+2015-06-08 10:46:24 +0200  Руслан Ижбулатов <lrn1986@gmail.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Fix build on Windows, and in general the GI build when PTP support was not available
+	  It's not going to work on Windows still, the helper process needs to be
+	  ported.
+
+2015-06-07 23:05:53 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From 21ba2e5 to d37af32
+
+2015-06-07 17:31:50 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From c408583 to 21ba2e5
+
+2015-06-07 16:58:40 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/gst/Makefile.am:
+	* docs/libs/Makefile.am:
+	* docs/plugins/Makefile.am:
+	  docs: remove variables that we define in the snippet from common
+	  This is syncing our Makefile.am with upstream gtkdoc.
+
+2015-06-07 17:16:06 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From d676993 to c408583
+
+2015-06-07 16:44:26 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+2015-06-07 10:52:33 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstntppacket.c:
+	  netclientclock: The NTP poll interval is a signed int8, not unsigned
+
+=== release 1.5.1 ===
+
+2015-06-07 09:41:28 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gstreamer-plugins.args:
+	* docs/plugins/gstreamer-plugins.hierarchy:
+	* docs/plugins/gstreamer-plugins.signals:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* gstreamer.doap:
+	* win32/common/config.h:
+	* win32/common/gstenumtypes.c:
+	* win32/common/gstversion.h:
+	  Release 1.5.1
+
+2015-06-07 09:33:52 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/cs.po:
+	* po/de.po:
+	* po/fr.po:
+	* po/tr.po:
+	  po: Update translations
+
+2015-06-07 09:32:39 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Add Since marker to the docs for gst_ntp_clock_new()
+
+2015-06-07 09:32:12 +0200  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
+
+2015-06-07 09:08:35 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstmemory.c:
+	  memory: Fix compiler warnings in unit test
+	  gst/gstmemory.c:570:38: error: implicit conversion from enumeration type 'GstMapFlags' to different enumeration
+	  type 'GstLockFlags' [-Werror,-Wenum-conversion]
+	  fail_unless (gst_memory_lock (mem, GST_MAP_WRITE));
+	  ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
+
+2015-06-07 08:59:23 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptpclock: Use the current path delay for calculation the local/remote clock times
+	  The mean might currently be changing, and the current path delay is the
+	  closest we can get to the actual delay around the current SYNC message.
+
+2015-06-06 23:05:32 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Add some copyright stuff
+
+2015-06-06 21:43:05 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/net/Makefile.am:
+	* libs/gst/net/gstnetclientclock.c:
+	* libs/gst/net/gstnetclientclock.h:
+	* libs/gst/net/gstntppacket.c:
+	* libs/gst/net/gstntppacket.h:
+	* win32/common/libgstnet.def:
+	  netclientclock: Add NTPv4 support
+	  This uses all of the netclientclock code, except for the generation and
+	  parsing of packets. Unfortunately some code duplication was necessary
+	  because GstNetTimePacket is public API and couldn't be extended easily
+	  to support NTPv4 packets without breaking API/ABI.
+
+2015-06-06 20:39:47 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Preparation for NTPv4 support
+	  We extend our calculations to work with local send time, remote receive time,
+	  remote send time and local receive time. For the netclientclock protocol,
+	  remote receive and send time are assumed to be the same value.
+	  For the results, this modified calculation makes absolutely no difference
+	  unless the two remote times are different.
+
+2015-06-06 19:01:06 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock. Fix last commit
+	  Apparently I failed at git add -i.
+
+2015-06-06 18:42:18 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Make gst_net_client_clock_new() a thing wrapper around g_object_new()
+	  Bindings will like this, and also it fixes a FIXME comment.
+
+2015-06-06 14:34:39 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptpclock: Use #define everywhere instead of G_N_ELEMENTS()
+
+2015-06-06 14:31:16 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Filter RTTs based on the median of the last RTTs before considering them at all
+	  This improves accuracy on wifi or similar networks, where the RTT can go very
+	  high up for a single observation every now and then. Without filtering them
+	  away completely, they would still still modify the average RTT, and thus all
+	  clock estimations.
+
+2015-06-06 14:19:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptpclock: Use a system clock for the time observations instead of gst_util_get_timestamp()
+	  They don't necessarily use the same underlying clocks (e.g. on Windows), or
+	  might be configured to a different clock type (monotonic vs. real time clock).
+	  We need the values a clean system clock returns, as those are the values used
+	  by the internal clocks.
+
+2015-06-06 12:35:58 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptpclock: Fix documentation a bit
+
+2015-06-05 19:35:29 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/fakesink.c:
+	  tests: fakesink: test notify::last-message and deep-notify::last-message
+	  deep-notify::last-message seems to cause some problems, so disable for now.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=681642
+
+2015-06-05 10:02:04 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefind: Post an error if we can't typefind the data until EOS
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750439
+
+2015-06-04 19:05:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/helpers/gst-ptp-helper.c:
+	  ptp-helper: Make sure to use g_poll() for the main context
+	  The modified main context from https://bugzilla.gnome.org/show_bug.cgi?id=741054
+	  somehow calls setugid(), which abort()s setuid root applications on OSX.
+
+2015-06-04 18:32:14 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/helpers/gst-ptp-helper.c:
+	  ptp-helper: Make sure that we are running setuid root if configured that way
+
+2015-06-04 18:00:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/helpers/gst-ptp-helper.c:
+	  ptp-helper: Fix interface listing and MAC retrieval on OSX
+
+2015-06-03 19:04:15 +0300  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* tools/gst-indent:
+	  gst-indent: Add support for gindent as executable name
+	  gst-indent used to support gnuindent and indent as executable names.
+	  However, on OSX one can "brew install gnu-indent" and then the
+	  executable name will be gindent. Added support for that.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750351
+
+2015-06-03 16:42:57 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* libs/gst/helpers/.gitignore:
+	  gitignore: add libs/gst/helpers/gst-ptp-helper
+
+2015-06-03 16:34:58 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  ptp: ignore permission errors in Makefile
+	  To satisfy the buildslaves ignore permission errors in chown, chmod and setcap
+
+2015-06-03 17:06:09 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/helpers/gst-ptp-helper.c:
+	  ptp: Don't use SIOCGIFHWADDR on Apple
+	  Just #ifdef the code for now, this should be implemented around
+	  IOKit later instead of using ioctls.
+
+2015-06-03 16:28:44 +0200  Philippe Normand <philn@igalia.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  build: make install-exec-hooks depend on install-helpersPROGRAMS
+	  To avoid race conditions where make would try to change ownership and
+	  permissions of the not-yet-installed ptp helper.
+
+2015-06-03 16:08:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Fix debug output to print the difference instead of absolute values
+
+2015-06-03 15:22:31 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptpclock: fix compilation
+	  Don't put code between declarations.
+	  Fix use of uninitialized variables
+
+2015-06-03 11:04:48 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Add median based pre-filtering of delays
+	  If the delay measurement is too far away from the median of the window of last
+	  delay measurements, we discard it. This increases accuracy on wifi a lot.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749391
+
+2015-06-02 15:24:06 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Add #define to only use SYNC messages for which we can send DELAY_REQ
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749391
+
+2015-05-15 16:58:51 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/net/gstptpclock.c:
+	  ptp: Add #defines to enable/disable improvements for unreliable networks
+	  We should do some more measurements with all these and check how much sense
+	  they make for PTP. Also enabling them means not following IEEE1588-2008 by the
+	  letter anymore.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749391
+
+2015-05-14 12:18:25 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* docs/libs/gstreamer-libs-docs.sgml:
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/helpers/Makefile.am:
+	* libs/gst/helpers/gst-ptp-helper.c:
+	* libs/gst/net/Makefile.am:
+	* libs/gst/net/gstptp_private.h:
+	* libs/gst/net/gstptpclock.c:
+	* libs/gst/net/gstptpclock.h:
+	* libs/gst/net/net.h:
+	* tests/examples/Makefile.am:
+	* tests/examples/ptp/.gitignore:
+	* tests/examples/ptp/Makefile.am:
+	* tests/examples/ptp/ptp-print-times.c:
+	* win32/common/libgstnet.def:
+	  ptp: Initial implementation of a PTP clock
+	  GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in
+	  slave-only mode, that allows a GStreamer pipeline to synchronize
+	  to a PTP network clock in some specific domain.
+	  The PTP subsystem can be initialized with gst_ptp_init(), which then
+	  starts a helper process to do the actual communication via the PTP
+	  ports. This is required as PTP listens on ports < 1024 and thus
+	  requires special privileges. Once this helper process is started, the
+	  main process will synchronize to all PTP domains that are detected on
+	  the selected interfaces.
+	  gst_ptp_clock_new() then allows to create a GstClock that provides the
+	  PTP time from a master clock inside a specific PTP domain. This clock
+	  will only return valid timestamps once the timestamps in the PTP domain
+	  are known. To check this, the GstPtpClock::internal-clock property and
+	  the related notify::clock signal can be used. Once the internal clock
+	  is not NULL, the PTP domain's time is known. Alternatively you can wait
+	  for this with gst_ptp_clock_wait_ready().
+	  To gather statistics about the PTP clock synchronization,
+	  gst_ptp_statistics_callback_add() can be used. This gives the
+	  application the possibility to collect all kinds of statistics
+	  from the clock synchronization.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749391
+
+2015-06-03 13:16:15 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstclock.c:
+	* gst/gstclock.h:
+	* win32/common/libgstreamer.def:
+	  clock: Add GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC and related API
+	  gst_clock_wait_for_sync(), gst_clock_is_synced() and gst_clock_set_synced()
+	  plus a signal to asynchronously wait for the clock to be synced.
+	  This can be used by clocks to signal that they need initial synchronization
+	  before they can report any time, and that this synchronization can also get
+	  completely lost at some point. Network clocks, like the GStreamer
+	  netclientclock, NTP or PTP clocks are examples for clocks where this is useful
+	  to have as they can't report any time at all before they're synced.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749391
+
+2015-06-03 18:03:36 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst/gstallocator.h:
+	* gst/gstmemory.c:
+	* gst/gstmemory.h:
+	  memory: provide a mem_unmap function that takes the flags to unmap
+	  There are gstmemory's available that operate in two memory domains
+	  and need to ensure consistent access between these domains.
+	  Imagine a scenario where e.g. the GLMemory is mapped twice in both
+	  the GPU and the CPU domain.  On unmap or a subsequent map, it would
+	  like to ensure that the most recent data is available in the memory
+	  domain requested.  Either by flushing the writes and/or initiating a
+	  DMA transfer.  Without knowing which domain is being unmapped, the
+	  memory does not know where the most recent data is to transfer to
+	  the other memory domain.
+	  Note: this still does not allow downgrading a memory map.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750319
+
+2015-06-02 16:14:50 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst/gstmemory.c:
+	* tests/check/gst/gstmemory.c:
+	  memory: gst_memory_share may fail to exclusively lock the parent memory
+	  Now that locking exclusively dows not always succeed, we need to signal
+	  the failure case from gst_memory_init.
+	  Rather than introducing an API or funcionality change to gst_memory_init,
+	  workaround by checking exclusivity in the calling code.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750172
+
+2015-06-02 00:23:37 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst/gstbuffer.c:
+	* tests/check/gst/gstbuffer.c:
+	  buffer: locking memory exclusively may fail
+	  Attempt to return a copy of the memory instead.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750172
+
+2015-05-31 21:25:23 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst/gstminiobject.c:
+	* tests/check/gst/gstmemory.c:
+	  miniobject: disallow a double write/exclusive lock
+	  gst_memory_lock (mem, WRITE | EXCLUSIVE);
+	  gst_memory_lock (mem, WRITE | EXCLUSIVE);
+	  Succeeds when the part-miniobject.txt design doc suggests that this should fail:
+	  "A gst_mini_object_lock() can fail when a WRITE lock is requested and
+	  the exclusive counter is > 1. Indeed a GstMiniObject object with an
+	  exclusive counter 1 is locked EXCLUSIVELY by at least 2 objects and is
+	  therefore not writable."
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750172
+
+2015-06-02 20:32:35 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gsturi.c:
+	  uri: match return type of get_uri_type() implementation to declaration
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750292
+
+2015-06-03 00:12:36 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstbuffer.c:
+	  gstbuffer: Add a note about metas needing to be copied last
+
+2015-05-27 22:23:00 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstvalue.c:
+	* tests/check/gst/gstvalue.c:
+	  gstvalue: Implement gst_value_is_subset() for flagsets
+
+2015-06-02 16:33:48 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* tests/check/gst/gstprotection.c:
+	  check: Use GST_CHECK_MAIN macro
+
+2015-05-20 21:18:08 +0900  eunhae choi <eunhae1.choi@samsung.com>
+
+	* plugins/elements/gstdownloadbuffer.c:
+	  downloadbuffer: release lock before posting msg
+	  to avoid the deadlock in playbin2,
+	  send msg after release the download buffer lock.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749535
+
+2015-05-31 20:21:42 -0300  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* gst/gststructure.c:
+	  structure: add note about missing field creation on _set()
+
+2015-05-30 13:01:09 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstcaps.c:
+	* tests/check/gst/gststructure.c:
+	  tests: fix some leaks in new flagset checks
+
+2015-05-30 12:39:19 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstqueuearray.c:
+	  queuearray: remove duplicate assignment
+	  We've already done this earlier in the function,
+	  and nothing has changed since we first read it.
+
+2015-05-27 17:22:28 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/gst.c:
+	  gst/gst.c: Add a warning about DllMain to prevent misuse
+	  DllMain should not be relied on for anything except storing the DLL handle.
+	  It should also not be defined for static builds, but doing so is not
+	  straightforward and is mostly harmless, so let's just add a comment about that
+	  for now.
+
+2015-05-27 13:54:25 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstfunnel.c:
+	  funnel: Improve debug output a bit
+
+2015-05-26 14:46:16 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* docs/design/draft-klass.txt:
+	  docs: fix typo in draft-klass.txt
+
+2015-05-26 14:03:25 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* docs/code-reviews/README:
+	* docs/code-reviews/gstbin.c-1.41:
+	  code-reviews: remove obsolete code reviews
+	  This obsolete folder hasn't been touched since 2001 and has no purpose. It
+	  confuses new developers.
+
+2015-05-25 21:02:28 +1000  Matthew Waters <matthew@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: use the slightly more correct take_sample for last-sample
+	  gst_value_take_buffer() and gst_value_take_sample() both resolve to
+	  g_value_take_boxed().  Use the method with the correct name if we
+	  ever change that.
+
+2015-05-25 16:23:33 +1000  Jan Schmidt <jan@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gststructure.c:
+	* gst/gststructure.h:
+	* gst/gstvalue.c:
+	* gst/gstvalue.h:
+	* tests/check/gst/capslist.h:
+	* tests/check/gst/gstcaps.c:
+	* tests/check/gst/gststructure.c:
+	* tests/check/gst/gstvalue.c:
+	* win32/common/libgstreamer.def:
+	  gstvalue: Add GstFlagSet type
+	  GstFlagSet is a new type designed for negotiating sets
+	  of boolean capabilities flags, consisting of a 32-bit
+	  flags bitfield and 32-bit mask field. The mask field
+	  indicates which of the flags bits an element needs to have
+	  as specific values, and which it doesn't care about.
+	  This allows efficient negotiation of arrays of boolean
+	  capabilities.
+	  The standard serialisation format is FLAGS:MASK, with
+	  flags and mask fields expressed in hexadecimal, however
+	  GstFlagSet has a gst_register_flagset() function, which
+	  associates a new GstFlagSet derived type with an existing
+	  GFlags gtype. When serializing a GstFlagSet with an
+	  associated set of GFlags, it also serializes a human-readable
+	  form of the flags for easier debugging.
+	  It is possible to parse a GFlags style serialisation of a
+	  flagset, without the hex portion on the front. ie,
+	  +flag1/flag2/flag3+flag4, to indicate that
+	  flag1 & flag4 must be set, and flag2/flag3 must be unset,
+	  and any other flags are don't-care.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746373
+
+2015-05-20 20:19:29 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* gst/gstvalue.c:
+	  gstvalue: Add a comparision function for GstStructures
+
+2015-05-19 14:34:04 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	* libs/gst/net/gstnettimeprovider.c:
+	  net: keep GCancellable fd around instead of re-creating it constantly
+	  Just create the cancellable fd once and keep it around instead
+	  of creating/closing it for every single packet. Since we spend
+	  most time waiting for packets, an fd is alloced and in use pretty
+	  much all the time anyway.
+
+2015-05-18 12:52:00 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfdsrc.c:
+	  Revert "doc: Workaround gtkdoc issue"
+	  This reverts commit 460a7bf68292d057c77e84d1ea86b8e73fc081f3.
+	  This should be fixed by the gtk-doc 1.23 release.
+	  <para> cannot contain <refsect2>:
+	  http://www.docbook.org/tdg/en/html/para.html
+	  http://www.docbook.org/tdg/en/html/refsect2.html
+
+2015-05-11 10:52:23 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* plugins/elements/gstsparsefile.c:
+	  sparsefile: small cleanup
+	  The error path unrefs file->file so make sure we only go there when
+	  there is a non-NULL file->file.
+
+2015-05-16 23:29:03 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* plugins/elements/gstfdsrc.c:
+	  doc: Workaround gtkdoc issue
+	  With gtkdoc 1.22, the XML generator fails when a itemizedlist is
+	  followed by a refsect2. Workaround the issue by wrapping the refsect2
+	  into para.
+
+2015-05-13 13:28:05 -0300  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-negotiation.txt:
+	  docs/design/part-negotiation.txt: minor corrections
+
+2015-05-16 12:57:12 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* libs/gst/controller/gsttimedvaluecontrolsource.c:
+	  timedvaluecontrolsource: Check that the only iter is the end iter in the GSequence
+	  Previous patch was assuming that if the returned iter was the last iter
+	  the GSequence was empty, which is obviously wrong.
+
+2015-05-16 11:17:40 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* libs/gst/controller/gsttimedvaluecontrolsource.c:
+	  timedvaluecontrolsource: Fix removing all keyframes, and adding one back
+	  We were segfaulting because g_sequence_search was returning the iter_end,
+	  and that iterator does not contain anything and thus should not be used
+	  directly
+
+2015-05-15 20:44:08 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfakesrc.c:
+	  fakesrc: fix property description
+	  We're enterprise now folks.
+
+2015-05-15 14:57:14 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/gstpad.c:
+	  pad: bump chain function call logs from LOG to DEBUG
+	  They're really useful compared to other LOG stuff in there, so
+	  there is value is including them and not the rest.
+
+2015-05-15 13:43:12 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstobject.c:
+	* gst/gstobject.h:
+	* tests/check/gst/gstobject.c:
+	* win32/common/libgstreamer.def:
+	  gstobject: add gst_object_has_as_ancestor and deprecate previous function
+	  The old gst_object_has_ancestor will call the new code. This establishes the
+	  symetry with the new gst_object_has_as_parent.
+	  API: gst_object_has_as_ancestor()
+
+2015-05-15 08:05:50 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstobject.c:
+	* gst/gstobject.h:
+	* tests/check/gst/gstobject.c:
+	* win32/common/libgstreamer.def:
+	  gstobject: rename gst_object_has_parent to gst_object_has_as_parent
+	  This avoid confusion with a potential punction that check if a gstobject has-a
+	  parent.
+	  API: gst_object_has_as_parent()
+
+2015-05-14 15:49:43 +0800  Jian <Jian.Li@freescale.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Fix QoS/lateness checking if subclass implements prepare/prepare_list vfuncs
+	  In basesink functions gst_base_sink_chain_unlocked(), below code is used to
+	  checking if buffer is late before doing prepare call to save some effort:
+	  if (syncable && do_sync)
+	  late =
+	  gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
+	  GST_CLOCK_EARLY, 0, FALSE);
+	  if (G_UNLIKELY (late))
+	  goto dropped;
+	  But this code has problem, it should calculate jitter based on current media
+	  clock, rather than just passing 0. I found it will drop all the frames when
+	  rewind in slow speed, such as -2X.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749258
+
+2015-05-11 17:14:50 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* plugins/elements/gstfdsrc.c:
+	  fdsrc: docs: fix and update documentation
+	  Update example to use gst-launch-1.0 and fix a paragraph.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749233
+
+2015-05-09 11:53:49 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	  Add removed example directories to CRUFT_DIRS
+
+2015-05-08 14:08:42 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstparse.c:
+	* plugins/elements/gstcapsfilter.c:
+	* plugins/elements/gstfakesink.c:
+	* plugins/elements/gstfakesrc.c:
+	* plugins/elements/gstfilesink.c:
+	* plugins/elements/gstfilesrc.c:
+	* plugins/elements/gsttee.c:
+	  docs: gst-launch -> gst-launch-1.0 in example pipelines
+	  And some small example pipeline fix-ups.
+
+2015-05-09 22:10:30 -0300  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-conventions.txt:
+	  docs/design/part-conventions.txt: minor corrections
+
+2015-05-09 22:04:52 -0300  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-context.txt:
+	  docs/design/part-context.txt: minor corrections
+
+2015-05-09 22:01:04 -0300  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-clocks.txt:
+	  docs/design/part-clocks.txt: minor corrections
+
+2015-05-02 17:16:38 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/manual/appendix-porting.xml:
+	* docs/random/porting-to-1.0.txt:
+	  docs: update porting guides to mention new device probing API
+
+2015-05-01 20:37:18 -0300  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-states.txt:
+	  docs/design/part-states.txt: minor corrections
+
+2015-05-01 18:32:26 +0900  Jimmy Ohn <yongjin.ohn@lge.com>
+
+	* gst/gstevent.h:
+	  event: remove duplicated include
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748739
+
+2015-04-28 19:59:31 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	* tests/examples/Makefile.am:
+	* tests/examples/launch/.gitignore:
+	* tests/examples/launch/Makefile.am:
+	* tests/examples/launch/mp3parselaunch.c:
+	* tests/examples/metadata/.gitignore:
+	* tests/examples/metadata/Makefile.am:
+	* tests/examples/metadata/read-metadata.c:
+	* tests/examples/queue/.gitignore:
+	* tests/examples/queue/Makefile.am:
+	* tests/examples/queue/queue.c:
+	* tests/examples/typefind/.gitignore:
+	* tests/examples/typefind/Makefile.am:
+	* tests/examples/typefind/typefind.c:
+	  tests: remove some pointless ancient code examples
+
+2015-04-28 17:54:51 +0300  Ilya Konstantinov <ilya.konstantinov@gmail.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: fix GST_BASE_PARSE_FLAG_LOST_SYNC
+	  Since frame->priv->discont was cleared earlier,
+	  GST_BASE_PARSE_FLAG_LOST_SYNC was never being set.
+	  Take the chance to refactor the frame creation a bit to
+	  organize the flags setting and reset.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738237
+
+2015-03-09 19:31:36 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: respect DISCONT flag on buffers
+	  Drain the parser when a DISCONT buffer is received and then mark
+	  the next buffer to be pushed as a DISCONT one
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745927
+
+2015-04-28 15:50:46 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gsttaglist.c:
+	  taglist: Copy the tag scope too when copying tag lists
+
+2015-04-20 20:02:51 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* plugins/elements/gstidentity.c:
+	  identity: Also synchronize GAP events in sync=1
+	  https://bugzilla.gnome.org/show_bug.cgi?id=601853
+
+2015-04-20 19:31:37 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* plugins/elements/gstidentity.c:
+	* plugins/elements/gstidentity.h:
+	  identity: With sync=true, don't pre-roll
+	  To act like a real live element, block the streaming when paused, and
+	  return NO_PREROLL.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=601853
+
+2015-04-20 19:24:45 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* plugins/elements/gstidentity.c:
+	* plugins/elements/gstidentity.h:
+	  identity: Take upstream latency into account for sync=1
+	  https://bugzilla.gnome.org/show_bug.cgi?id=601853
+
+2015-04-20 19:07:27 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* plugins/elements/gstidentity.c:
+	  identity: Handle PTS and DTS separately
+	  https://bugzilla.gnome.org/show_bug.cgi?id=601853
+
+2015-04-26 17:05:48 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* .gitignore:
+	* Android.mk:
+	* gst/Makefile.am:
+	* gst/parse/Makefile.am:
+	* libs/Makefile.am:
+	* libs/gst/Makefile.am:
+	* libs/gst/base/Makefile.am:
+	* libs/gst/controller/Makefile.am:
+	* libs/gst/helpers/Makefile.am:
+	* libs/gst/net/Makefile.am:
+	* plugins/Makefile.am:
+	* plugins/elements/Makefile.am:
+	* tests/examples/controller/Makefile.am:
+	* tools/Makefile.am:
+	  Remove obsolete Android build cruft
+	  This is not needed any longer.
+
+2015-04-24 16:51:24 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* plugins/elements/gstinputselector.c:
+	* plugins/elements/gstinputselector.h:
+	  inputselector: Only try to push the first EOS received
+	  Subsequent EOS will push on the source pad that already received
+	  EOS and that will make the event function return FALSE. It needs
+	  only to push the first one and only return TRUE for the subsequent
+	  ones.
+
+2015-04-24 15:19:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstprintf.c:
+	  tests: printf: add unit test for %%
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748414
+
+2015-04-24 15:16:24 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/printf/vasnprintf.c:
+	  printf: fix invalid memory access in case of %%
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748414
+
+2015-04-23 15:55:44 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/Makefile.am:
+	  tests: define GST_CHECK_TEST_ENVIRONMENT_BEACON
+
+2015-04-23 15:54:08 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/gstcheck.h:
+	  check: optionally check env var for us to make sure test env is set up
+	  If GST_CHECK_TEST_ENVIRONMENT_BEACON is defined, check if the
+	  environment variable it is defined to is set up at the start
+	  of each test.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=747624
+
+2015-04-23 09:06:42 +0900  Changbok Chea <changbok.chea@gmail.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Remove unused assignment in perform_seek()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748345
+
+2015-04-22 11:44:00 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* tests/check/gst/gstmemory.c:
+	  test: memory: Added test to verify the allocation params
+	  New test added to verify the allocation params for the memory
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748277
+
+2015-04-22 11:04:06 -0600  Jason Litzinger <jlitzinger@control4.com>
+
+	* tests/check/gst/gstinfo.c:
+	  tests: info: add test case to reproduce infinite loop
+	  gst_debug_unset_threshold_for_name() used to go into an
+	  infinite loop when there was more than one category in
+	  the list.  This test captures the problem by failing
+	  via timeout.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748321
+
+2015-04-22 12:03:33 -0600  Jason Litzinger <jlitzinger@control4.com>
+
+	* gst/gstinfo.c:
+	  gstinfo: fix infinite loop in gst_debug_unset_threshold_for_name()
+	  Ensure iterator is advanced. The current list iteration code only
+	  advances the iterator (walk) if a match is found, which results
+	  in an infinite loop when more than one entry exists in the list.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748321
+
+2015-04-22 10:14:53 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* scripts/create-uninstalled-setup.sh:
+	  scripts: create-uninstalled-setup: miscellaneous fixes
+	  Error out if required build tools (flex, bison, pkg-config)
+	  are not present, instead of printing a message and then
+	  continuing.
+	  Check out submodules when fetching the repositories, so
+	  they're already there and ready later.
+	  Remove some 0.10 cruft.
+
+2015-04-22 09:59:24 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* .gitignore:
+	  Add INSTALL to .gitignore
+
+2015-04-22 09:56:55 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/generic/states.c:
+	  tests: error out if test environment is not actually set up properly
+	  https://bugzilla.gnome.org//show_bug.cgi?id=747624
+
+2015-04-22 09:52:58 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	  configure: can use AM_SILENT_RULES unconditionally now
+	  https://autotools.io/automake/silent.html
+
+2015-04-22 09:47:39 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	  configure: bump automake requirement to 1.14 and autoconf to 2.69
+	  This is only required for builds from git, people can still
+	  build tarballs if they only have older autotools.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=747624
+
+2015-04-22 10:32:57 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* INSTALL:
+	  Remove INSTALL file
+	  autotools automatically generate this, and when using different versions
+	  for autogen.sh there will always be changes to a file tracked by git.
+
+2015-04-20 22:07:34 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* scripts/gst-uninstalled:
+	  gstreamer-uninstalled: Update path to the GstValidate scenarios
+
+2015-04-20 09:23:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	  buffer: Check return value of meta transform function in gst_buffer_copy_into()
+	  ... by printing some debug output whenever copying a GstMeta fails.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748119
+
+2015-04-18 12:31:02 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstevent.h:
+	  event: fix header formatting
+
+2015-04-18 12:28:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstprotection.c:
+	  tests: protection: fix leak in unit test
+
+2015-04-18 12:27:46 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gst.h:
+	  gst.h: include the new gstprotection.h header
+	  https://bugzilla.gnome.org/show_bug.cgi?id=705991
+
+2015-04-15 15:33:31 +0100  Alex Ashley <bugzilla@ashley-family.net>
+
+	* docs/gst/gstreamer-docs.sgml:
+	* docs/gst/gstreamer-sections.txt:
+	* gst/Makefile.am:
+	* gst/gst_private.h:
+	* gst/gstinfo.c:
+	* gst/gstprotection.c:
+	* gst/gstprotection.h:
+	* tests/check/Makefile.am:
+	* tests/check/gst/.gitignore:
+	* tests/check/gst/gstprotection.c:
+	* win32/common/libgstreamer.def:
+	  protection: add GstProtectionMeta to support protected content
+	  In order to support some types of protected streams (such as those
+	  protected using DASH Common Encryption) some per-buffer information
+	  needs to be passed between elements.
+	  This commit adds a GstMeta type called GstProtectionMeta that allows
+	  protection specific information to be added to a GstBuffer. An example
+	  of its usage is qtdemux providing information to each output sample
+	  that enables a downstream element to decrypt it.
+	  This commit adds a utility function to select a supported protection
+	  system from the installed Decryption elements found in the registry.
+	  The gst_protection_select_system function that takes an array of
+	  identifiers and searches the registry for a element of klass Decryptor that
+	  supports one or more of the supplied identifiers. If multiple elements
+	  are found, the one with the highest rank is selected.
+	  This commit adds a unit test for the gst_protection_select_system
+	  function that adds a fake Decryptor element to the registry and then
+	  checks that it can correctly be selected by the utility function.
+	  This commit adds a unit test for GstProtectionMeta that creates
+	  GstProtectionMeta and adds & removes it from a buffer and performs some
+	  simple reference count checks.
+	  API: gst_buffer_add_protection_meta()
+	  API: gst_buffer_get_protection_meta()
+	  API: gst_protection_select_system()
+	  API: gst_protection_meta_api_get_type()
+	  API: gst_protection_meta_get_info()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=705991
+
+2015-03-16 12:35:27 +0000  Alex Ashley <bugzilla@ashley-family.net>
+
+	* gst/gstevent.c:
+	* gst/gstevent.h:
+	* tests/check/gst/gstevent.c:
+	* win32/common/libgstreamer.def:
+	  event: add new GST_EVENT_PROTECTION
+	  In order for a decrypter element to decrypt media protected using a
+	  specific protection system, it first needs all the protection system
+	  specific  information necessary (E.g. information on how to acquire
+	  the decryption keys) for that stream.
+	  The GST_EVENT_PROTECTION defined in this commit enables this information
+	  to be passed from elements that extract it (e.g. qtdemux, dashdemux) to
+	  elements that use it (E.g. a decrypter element).
+	  API: GST_EVENT_PROTECTION
+	  API: gst_event_new_protection()
+	  API: gst_event_parse_protection()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=705991
+
+2015-04-18 11:42:21 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gsttee.c:
+	  tee: fix use of possibly-freed pad in debug statement
+	  The gst_object_unref() in the block above may be dropping
+	  the last ref to the pad and free the pad. Set pad pointer
+	  to NULL here, so that we don't accidentally use a
+	  possibly-freed pad pointer in the debug log statements
+	  further below, and also use the tee element as log object
+	  since that's more appropriate anyway.
+	  Fixes valgrind warnings and crashes in tee test_stress
+	  unit test when debug logging is enabled.
+
+2015-04-18 12:00:13 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstinfo.c:
+	  tests: info: fix unit test when run with GST_DEBUG=*:9
+	  Only save the messages we're interested in and expecting.
+	  When run with *:9 we might get additional TRACE level
+	  messages from other categories and then we don't end up
+	  with the number of messages we expect.
+
+2015-04-18 11:25:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstpad.c:
+	  tests: pad: fix buffer leak in new blocking_with_probe_type_idle test
+
+2015-04-18 11:11:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstpad.c:
+	  tests: pad: fix invalid memory access in debug log message
+	  The string we put in the buffer is not NUL-terminated, so
+	  don't try to print that via %s in a debug log message.
+
+2015-04-17 15:19:07 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  helpers: on OSX, MKDIR_P is install-sh -c -d
+	  So we need to call it before cding to the bin directory.
+
+2015-04-17 13:02:12 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  helpers: install -D isn't portable, use $(MKDIR_P) instead.
+
+2015-04-14 10:47:20 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstpad.c:
+	  tests: pad: test that idle probe will block
+	  This tests add an idle probe on an idle pad from a separate thread
+	  so that the callback is called immediatelly. This callback will sit
+	  still and then we try to push a buffer on this same pad. It verifies
+	  that the idle probe blocks data passing
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747852
+
+2015-04-14 17:06:36 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstpad.c:
+	  pad: block data flow when idle probe is running
+	  When idle probe runs directly from the gst_pad_add_probe() function
+	  we need to make sure that no data flow happens as idle probe
+	  is a blocking probe. The idle probe will prevent that any
+	  buffer, bufferlist or serialized events and queries are not
+	  flowing while it is running.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747852
+
+2015-04-16 13:41:20 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gsturi.c:
+	  docs: clarify that return value of gst_filename_to_uri() must be freed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747104
+
+2015-04-15 11:02:54 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/gstbin.c:
+	* tests/check/generic/states.c:
+	  bin: undo upward state changes on children when a child fails
+	  When a bin changes states upwards, and a child fails to change,
+	  any child that was already switched will not be reset to its
+	  original state, leaving its state inconsistent with the bin,
+	  which does not change state due to the failure.
+	  If the state change was from NULL to READY, it means that deleting
+	  this bin will cause those children to be deleted while not in
+	  NULL state, which is a Bad Thing. For other upward changes, it
+	  is less of a problem, as a subsequent switch back to NULL will
+	  cause an actual downwards change on those inconsistent elements,
+	  albeit from the "wrong" state.
+	  We now reset state to the original one when a child fails.
+	  Includes unit test.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747610
+
+2015-04-15 14:45:21 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  helpers: use $(INSTALL) to ... install the helper.
+	  As it will create the folders and set permissions appropriately,
+	  better than doing it manually.
+
+2015-04-15 13:02:36 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  helpers: Fix Makefile.am to install the completion-helper correctly.
+	  + The program is installed at install-exec time, we thus need
+	  to move it in install-exec-hook, not install-data-hook.
+
+2015-04-15 11:38:35 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* libs/gst/base/gstbasesrc.c:
+	  Revert "basesrc: fix pool leak on allocation query error path"
+	  This reverts commit 84fdf50b2f98951a32fa14802b62621f1105cd35.
+	  It seems the bug was fixed independently, and the merge was
+	  automagic, yielding two extra free calls.
+
+2015-04-14 13:42:55 +0900  Suhwang Kim <suhwang.kim@lge.com>
+
+	* tests/check/gst/gstclock.c:
+	  tests: clock: fix test clock name
+	  Don't call the slave test clock "Master".
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746430
+
+2015-04-14 17:47:08 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstelementfactory.c:
+	* gst/gstelementfactory.h:
+	  elementfactory: add ENCRYPTOR class defines
+	  to go with DECRYPTOR.
+
+2015-03-16 13:11:59 +0000  Alex Ashley <bugzilla@ashley-family.net>
+
+	* gst/gstelementfactory.c:
+	* gst/gstelementfactory.h:
+	  elementfactory: add DECRYPTOR class defines
+	  An element that performs decryption does not naturally fit within any
+	  of the existing element factory class types. It is useful to be able
+	  to easily get a list of all elements that support decryption so that
+	  a union can be computed between the protection systems that have a
+	  supported decryptor and the allowed protection systems for a particular
+	  stream.
+	  This commit adds a new GST_ELEMENT_FACTORY_TYPE_DECRYPTOR and its
+	  associated string identifier "Decryptor". It also adds
+	  GST_ELEMENT_FACTORY_TYPE_DECRYPTOR to GST_ELEMENT_FACTORY_TYPE_DECODABLE
+	  so that uridecodebin can auto-plug a decryption element.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=705991
+
+2015-04-13 17:01:41 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefindelement: Use gst_event_unref() instead of gst_mini_object_unref() + casting
+
+2015-04-13 14:40:22 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefind: fix leak in gst_type_find_element_src_event()
+	  gst_type_find_element_src_event() is supposed to consume @event but wasn't
+	  doing so when it was handling the event itself.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747775
+	  Signed-off-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+2015-04-11 20:44:02 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* gst/gstvalue.c:
+	  gstvalue: reset errno before g_ascii_strtoull call
+	  "errno" already has meaningless value before g_ascii_strtoull call.
+	  This causes invalid error check without reset.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747690
+
+2015-04-12 13:13:32 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Only set DTS to segment.start on the first buffer if subclass did not provide PTS
+	  Otherwise we're going to set a rather arbitrary DTS of segment.start (usually
+	  0) for live sources, which confuses synchronization if the source started
+	  capturing at a later time. And it's especially wrong for raw media, for which
+	  we should not set any DTS at all.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747731
+
+2014-09-02 17:40:28 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefind: Run the default have-type handler after all application handlers
+	  Otherwise the CAPS event will already be forwarded downstream and
+	  the application has no way to intervene anymore.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735896
+
+2015-03-10 12:57:44 +1000  Duncan Palmer <dpalmer@digisoft.tv>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: Don't automatically enter the buffering state when use-buffering is set.
+	  There is no reason I can see to set mq->buffering = TRUE when
+	  use_buffering is set; the code here also calls update_buffering(), which
+	  will set mq->buffering = TRUE if this is warranted because of low buffer
+	  levels.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745937
+
+2015-04-10 12:32:27 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: fix cached buffer leak in chain function
+	  gst_selector_pad_chain() was popping cached buffers out of the queue without
+	  freeing those. Make sure we don't steal the GstBuffer as the cached buffer ref
+	  has been passed to the pad chain function.
+	  This can be reproduced by running the
+	  validate.file.playback.switch_subtitle_track_while_paused.test5_mkv scenario
+	  with Valgrind.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747611
+	  Signed-off-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+2015-04-08 16:04:11 +0200  Edward Hervey <edward@centricular.com>
+
+	* common:
+	* tests/check/Makefile.am:
+	* tests/examples/manual/Makefile.am:
+	  tests: Use AM_TESTS_ENVIRONMENT
+	  Needed by the new automake test runner
+
+2015-04-07 15:00:46 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* gst/gstbufferlist.c:
+	  bufferlist: make sure list is writable before adding or removing buffers
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747439
+
+2015-04-07 14:34:58 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* gst/gstbufferlist.c:
+	  bufferlist: minor docs addition for gst_buffer_list_get()
+	  Return buffer remains valid as long as list is valid
+	  and buffer is not removed from list.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747438
+
+2015-04-07 11:38:31 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: fix pool leak on allocation query error path
+	  It could be triggered by:
+	  gst-launch-1.0 videotestsrc num-buffers=20 ! videcrop bottom=214748364 ! videoconvert ! autovideosink
+	  Spotted while testing:
+	  https://bugzilla.gnome.org/show_bug.cgi?id=743910
+
+2015-04-06 18:45:37 -0700  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Forward SEGMENT_DONE events immediately
+	  There might be no more data coming afterwards, and we just drained everything
+	  that was left to be pushed anyway.
+
+2015-04-06 18:56:25 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  docs: fix cross-reference to environment variables in GstInfo
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747416
+
+2015-04-06 10:18:15 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* gst/gstmemory.c:
+	  memory: add check for writablity in resize
+	  Add guard to gst_memory_resize() to make sure the
+	  memory to be resized is actually writable.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747392
+
+2015-04-05 16:47:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/multiqueue.c:
+	  tests: multiqueue: add test to make sure initial events go through without buffers
+
+2015-04-05 16:06:44 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/queue.c:
+	  tests: queue: check that the initial events are sent on immediately
+	  Add a check that makes sure stream-start, caps, and segment events
+	  are passed on by queue without delay, i.e. even if no buffer is
+	  sent.
+
+2015-04-04 18:33:18 -0700  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Print debug output from gst_pad_link_full() if preparing linking failed
+	  Makes it easier to find linking failures in debug logs.
+
+2015-04-04 19:29:51 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstsegment.h:
+	  segment: small docs addition
+	  https://bugzilla.gnome.org/show_bug.cgi?id=690564
+
+2015-04-04 18:18:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/design/part-streams.txt:
+	* docs/design/part-synchronisation.txt:
+	  docs: design: fix some 0.10-isms in GstSegment docs
+	  1) segment.accum -> segment.base
+	  2) Refer to GstSegment members as S.foo instead of
+	  NS.foo, the event is now called a segment event
+	  rather than newsegment event.
+	  3) There's no more abs_rate field in GstSegment,
+	  and there never was an abs_applied_rate field.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=690564
+
+2015-04-04 04:14:50 +0300  Ilya Konstantinov <ilya.konstantinov@gmail.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: do not leak buffer pool in error case
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747321
+
+2015-04-03 19:12:48 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/gsturi.c:
+	  uri: Silence a compiler warning
+	  This is a false positive for use initialized. The variable is set and
+	  used enclosed in the safe if condition.
+
+2015-04-03 16:32:16 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	  doc: Add gst_segment_to_running_time_full
+
+2015-04-03 13:19:13 -0700  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Fix documentation, buffer pools are unreffed and not freed
+
+2015-04-03 20:43:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* INSTALL:
+	  Update INSTALL to the automake 1.14 version
+
+2015-04-03 18:57:36 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From bc76a8b to c8fb372
+
+2015-04-03 16:27:10 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstreamer.def:
+	  win32: fix exports
+
+2015-03-19 10:45:56 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstsegment.c:
+	* gst/gstsegment.h:
+	* win32/common/libgstreamer.def:
+	  segment: add gst_segment_is_equal
+	  It beats memcmp due to the 'reserved' fields.
+	  API: gst_segment_is_equal()
+	  Found via, but probably not directly linked to,
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738216
+
+2015-04-03 00:36:42 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstbase.def:
+	* win32/common/libgstreamer.def:
+	  win32: add new API to exports
+
+2014-08-06 10:32:39 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstpad.c:
+	* tests/check/gst/gstpad.c:
+	  pad: allow probes to remove the data item whilst returning PROBE_OK
+	  Use case: we want to block the source pad of a leaky queue and
+	  drop the buffer that causes the block. If we return PROBE_DROP
+	  then the buffer gets dropped, but we get called again. If we
+	  return PROBE_OK we can't easily drop the buffer. If we just
+	  replace the item into the GstPadProbeInfo structure with NULL,
+	  GStreamer will push a NULL buffer to the next element when we
+	  unblock the pad probe. This patch ensures it doesn't do that.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734342
+
+2015-02-12 19:39:44 -0500  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst/gstelement.c:
+	  element: Document when a clock is available from gst_element_get_clock()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744442
+
+2015-02-12 19:40:06 -0500  Olivier Crête <olivier.crete@collabora.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstpipeline.c:
+	* gst/gstpipeline.h:
+	  pipeline: Add binding friendly gst_pipeline_get_pipeline_clock()
+	  Also skip gst_pipeline_get_clock() and gst_pipeline_set_clock() from the
+	  bindings as they are confused with gst_element_*_clock().
+	  API: gst_pipeline_get_pipeline_clock()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744442
+
+2015-04-02 17:32:42 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Add Since mark for new method
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734424
+
+2015-02-20 17:50:48 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstbasetransform.c:
+	* libs/gst/base/gstbasetransform.h:
+	  basetransform: Add a method to let subclasses cleanly update srcpad caps
+	  API:
+	  gst_base_transform_update_src
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734424
+
+2015-04-02 21:18:39 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/pwg/advanced-scheduling.xml:
+	* docs/pwg/advanced-types.xml:
+	  docs: pwg: fix missing comma and 0.10-ism in code sample
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747267
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747266
+
+2015-04-02 19:29:46 +0300  Ilya Konstantinov <ilya.konstantinov@gmail.com>
+
+	* gst/gstmemory.c:
+	  memory: improve docs for _copy() and _share()
+
+2015-04-02 11:42:20 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* tests/check/elements/filesink.c:
+	  test: filesink: add tests for buffers with multiple memory blocks
+	  Update test_seeking testcase to verify the render and render_list
+	  virtual method handle buffers and buffer list containing multiple
+	  memory blocks correctly.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747223
+
+2015-04-02 09:44:33 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* gst/gstelement.h:
+	  element: Add a FIXME for 2.0 about request_new_pad VS request_pad naming
+
+2015-04-02 09:34:00 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* gst/gstelement.c:
+	  element: Fix request_new_pad introspection
+	  Marking gst_element_request_pad as the caller of the ->request_new_pad
+	  virtual method.
+
+2015-04-01 09:20:24 +0530  Prashant Gotarne <ps.gotarne@samsung.com>
+
+	* tests/check/elements/filesink.c:
+	  tests: filesink: add check for render_list virtual method
+	  GstFileSink implements the render_list virtual method to render
+	  a list of buffers. Update the test_seeking test case to also
+	  check the render_list method implementation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747100
+
+2015-04-01 12:13:17 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gst_private.h:
+	* gst/gstcaps.c:
+	* gst/gstdebugutils.c:
+	  debugutils: nicer printing of caps features
+	  Only print interesting caps features, don't
+	  append (memory:SystemMemory) to all caps,
+	  which makes them much more unwieldy and
+	  harder to read. Also use internal function
+	  to get caps features so that our printing
+	  has no side effects on the caps.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746809
+
+2015-03-26 13:05:57 +0100  Lubosz Sarnecki <lubosz.sarnecki@collabora.co.uk>
+
+	* gst/gstdebugutils.c:
+	  debugutils: plot caps features
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746809
+
+2015-03-31 23:48:22 +0900  Wonchul Lee <chul0812@gmail.com>
+
+	* gst/gstpad.c:
+	  pad: Fix a typo in a docstring
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747119
+
+2015-03-31 11:15:10 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/Makefile.am:
+	* libs/gst/base/Makefile.am:
+	* libs/gst/check/Makefile.am:
+	* libs/gst/controller/Makefile.am:
+	* libs/gst/net/Makefile.am:
+	  introspection: Don't use g-ir-scanner cache at compile time
+	  It pollutes user directories and we don't need to cache it
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747095
+
+2015-03-28 14:45:35 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: fix outdated debug message
+	  Buffer lists don't have groups any more in 1.0
+
+2015-03-27 18:20:37 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Flush-stop starts live task in paused
+	  The flush-stop event should not restart the task for live sources unless
+	  the element is playing. This was breaking seeks in pause with the rtpsrc.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=635701
+
+2015-03-27 16:23:40 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* tests/check/elements/filesink.c:
+	  tests: check location isn't truncated
+	  Test covering the recent commit where location='".abc' won't get truncated
+	  to '.ab' anymore
+	  https://bugzilla.gnome.org/show_bug.cgi?id=688625
+
+2015-03-26 17:01:06 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/gstvalue.c:
+	* tests/check/gst/gstvalue.c:
+	  gstvalue: only unwrap string delimited with "
+	  Don't unwrap strings that start but don't finish with a double quote. If a
+	  string is delimited by two quotes we unescape them and any special characters
+	  in the middle (like \" or \\). If the first character or the last character
+	  aren't a quote we assume it's part of an unescaped string.
+	  Moved some deserialize_string unit tests because we don't try to unwrap strings
+	  missing that second quote anymore.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=688625
+
+2015-03-27 17:16:03 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/parse/grammar.y:
+	  parse: check before truncating strings
+	  Don't truncate the last character of a string if it isn't necessary.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=688625
+
+2015-03-27 10:15:16 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbus.c:
+	  bus: Add guards against invalid arguments to set_flushing() and poll()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746871
+
+2015-03-25 10:49:08 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	* tests/check/libs/baseparse.c:
+	  baseparse: only post 'no valid frames' error if buffers were received
+	  Otherwise baseparse will consider empty streams to be an error while
+	  an empty stream is a valid scenario. With this patch, errors would
+	  only be emitted if the parser received data but wasn't able to
+	  produce any output from it.
+	  This change is only for push-mode operation as in pull mode an
+	  empty file can be considered an error for the one driving the
+	  pipeline
+	  Includes a unit test for it
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733171
+
+2015-03-19 10:36:11 +0100  Jose Antonio Santos Cadenas <santoscadenas@gmail.com>
+
+	* plugins/elements/gsttee.c:
+	* plugins/elements/gsttee.h:
+	* tests/check/elements/tee.c:
+	  tee: Add allow-not-linked property
+	  This property avoids not linked error when all the pads are unlinked
+	  or when there are no source pads. This is useful in dynamic pipelines
+	  where it can happen that for a short time there are no pads at all or
+	  all downstream pads are not linked yet.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746436
+
+2015-03-21 17:13:18 -0500  Michael Catanzaro <mcatanzaro@gnome.org>
+
+	* docs/gst/running.xml:
+	  docs: Fix typos
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746585
+
+2015-03-21 15:46:50 -0500  Michael Catanzaro <mcatanzaro@gnome.org>
+
+	* gst/gstpluginloader.c:
+	  pluginloader: Fix typos
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746585
+
+2015-03-24 16:04:16 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* plugins/elements/gstoutputselector.c:
+	  output-selector: add drain handling
+	  Release the latest buffer, if any, and then just let
+	  the drain be pushed downstream
+
+2015-03-24 19:32:49 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* Makefile.am:
+	  Revert "Fix distcheck"
+	  This reverts commit 56dd2d89c4eac460cbc37e2a51c1dd9e792999e8.
+	  Installing completions to a custom prefix is now fixed.
+
+2015-03-24 19:30:52 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  helpers: remove completion-helper on uninstall
+	  + And add it to CLEANFILES
+
+2015-03-18 19:38:15 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* data/completions/gst-inspect-1.0:
+	* data/completions/gst-launch-1.0:
+	* libs/gst/helpers/gst:
+	  completions: remove last unnamespaced symbols.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744877
+
+2015-03-18 14:44:21 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* data/completions/gst-inspect-1.0:
+	* data/completions/gst-launch-1.0:
+	  completions: remove deprecated shell syntax.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744877#c21
+
+2015-03-18 14:37:11 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* data/completions/gst-inspect-1.0:
+	* data/completions/gst-launch-1.0:
+	  completions: prefix shell functions with _gst
+	  + To make it more difficult for them to conflict in the
+	  global namespace.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744877#c21
+
+2015-03-24 13:13:29 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* configure.ac:
+	  bash-completion: Respect the prefix
+	  Don't try and install the bash helpers outside the defined prefix.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744877
+
+2014-11-19 13:08:45 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: Rename _activate_sinkpad to _get_active_sinkpad
+	  Removes the now unused 'pad' parameter and renames the function
+	  to something more appropriate.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739620
+
+2014-11-19 13:03:21 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: Remove pad's 'active' field
+	  This is now never read.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739620
+
+2014-11-19 12:59:12 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: Use segment-presence for running_time check
+	  When determining whether the running_time of a pad can be
+	  calculated, check if the segment is in TIME format instead
+	  of using the 'active' field.
+	  Since the latter is set through *any* activity, it's not a
+	  reliable indicator of segment presence.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739620
+
+2015-03-23 13:20:34 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
+
+	* plugins/elements/gstinputselector.c:
+	* plugins/elements/gstinputselector.h:
+	  input-selector: Remove 'blocked' flag
+	  With the disappearance of the 'block' signal, this
+	  flag cannot be set to TRUE.
+	  gst_input_selector_wait disappears as it never waits
+	  and just returns self->flushing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736891
+
+2015-03-23 12:12:51 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
+
+	* plugins/elements/gstinputselector.c:
+	* plugins/elements/gstinputselector.h:
+	  input-selector: Remove obsolete 'block' signal
+	  This signal blocks the input-selector with no means of unblocking
+	  other than a state change back to READY. It seems this signal was
+	  part of an old way of synchronously switching the selector,
+	  together with the already-removed 'switch' signal.
+	  Removing the signal is safe, as attempting to use it could only
+	  end in deadlocks. Attempting to emit an unknown signal just causes
+	  g_criticals.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736891
+
+2015-03-23 13:05:30 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: Fix waiting on EOS
+	  This apparently got broken by bc1ec4e. Since self->blocked is always
+	  FALSE, gst_input_selector_wait never actually waits.
+	  Using (!self->eos || self->blocked) && ... as the loop condition would
+	  be incorrect as well, because then the other call to the function in
+	  _chain would block until EOS, so the functions cannot be merged trivially.
+	  Since blocking is obsolete, gst_input_selector_wait will get removed anyway.
+	  As such, just inline the loop.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746518
+
+2015-03-20 07:23:53 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/selector.c:
+	  tests: input-selector: new tests for EOS handling
+	  3 new tests:
+	  1) Tests that a stream that is empty (just an EOS event)
+	  on inactive pad doesn't get through and tamper
+	  with the active pad that still has data
+	  2) Tests that a stream that is shorter than the active one
+	  (pushes EOS earlier) doesn't has its EOS pushed
+	  3) Tests that switching to an inactive stream that has received
+	  EOS will make input-selector push EOS
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746518
+
+2015-03-19 12:11:19 +0000  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/selector.c:
+	  tests: selector: remove weird semicolons at the end of test functions
+	  Even though it works, it is not needed and seems more natural
+	  to not have semicolons at the end of function declarations
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746518
+
+2014-07-17 16:33:29 +0200  Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Process SEEKING query
+	  Add QUERY_SEEKING handling to queue2, so RTMP live streams become
+	  seekable when a queue2 in download or ringbuffer mode is inserted:
+	  rtmpsrc ! queue2 ! flvdemux
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733351
+
+2015-03-21 19:37:30 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/check/libcheck/check_run.c:
+	  check: Fix uninitialized variable compiler warning with gcc
+	  check_run.c: In function 'sig_handler':
+	  check_run.c:127:13: warning: 'child_sig' may be used uninitialized in this function [-Wmaybe-uninitialized]
+	  killpg(group_pid, child_sig);
+	  ^
+	  check_run.c:130:31: warning: 'idx' may be used uninitialized in this function [-Wmaybe-uninitialized]
+	  sigaction(sig_nr, &old_action[idx], NULL);
+	  ^
+
+2015-03-21 15:19:43 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/check/libcheck/check_run.c:
+	  check: Catch SIGTERM and SIGINT in the test runner and kill all currently running tests
+	  Otherwise e.g. ctrl+c in the test runner exits the test runner, while the test
+	  itself is still running in the background, uses CPU and memory and potentially
+	  never exits (e.g. if the test ran into a deadlock or infinite loop).
+	  The reason why we have to manually kill the actual tests is that after
+	  forking they will be moved to their own process group, and as such are
+	  not receiving any signals sent to the test runner anymore. This is supposed
+	  to be done to make it easier to kill a test, which it only really does if
+	  the test itself is forking off new processes.
+	  This fix is not complete though. SIGKILL can't be caught at all, and error
+	  signals like SIGSEGV, SIGFPE are currently not caught. The latter will only
+	  happen if there is a bug in the test runner itself, and as such seem less
+	  important.
+
+2015-03-19 13:51:38 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstvalve.c:
+	  valve: Don't drop non-serialized queries when the valve is dropping
+	  Otherwise we end up dropping e.g. CAPS queries, and then upstream just
+	  negotiates to whatever format it wants to. Once the valve is not-dropping
+	  anymore this can easily result in negotiation failing completely.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746448
+
+2015-03-20 09:00:47 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gst.c:
+	* gst/gstsegment.c:
+	* gst/gstsegment.h:
+	* tests/check/gst/gstsegment.c:
+	* win32/common/libgstreamer.def:
+	  segment: remove the bounds check from _to_running_time_full()
+	  Do not do any checks for the start/stop in the new
+	  gst_segment_to_running_time_full() method, we can let this be done by
+	  the more capable gst_segment_clip() method. This allows us to remove the
+	  enum of results and only return the sign of the calculated running-time.
+	  We need to put the old clipping checks in the old
+	  gst_segment_to_running_time() still because they work slightly
+	  differently than the _clip methods.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-03-19 17:36:36 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstsegment.c:
+	* gst/gstsegment.h:
+	* tests/check/gst/gstsegment.c:
+	  segment: add option to disable clipping
+	  Add a clip argument to gst_segment_to_running_time_full() to disable
+	  the checks against the segment boundaries. This makes it possible to
+	  generate an extrapolated running-time for timestamps outside of the
+	  segment.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-03-18 16:27:36 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gst.c:
+	  gst: ref/unref new enum type in gst_init/deinit()
+
+2015-03-18 14:16:48 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* tests/misc/test-gstreamer-completion.sh:
+	* tools/gstreamer-completion:
+	  tools: remove outdated completion script
+	  + Remove the associated test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744877#c21
+
+2015-03-18 11:31:51 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstsegment.c:
+	* gst/gstsegment.h:
+	* tests/check/gst/gstsegment.c:
+	* win32/common/libgstreamer.def:
+	  segment: add helper to get negative running-time
+	  Add a helper method to get a running-time with a little more features
+	  such as detecting if the value was before or after the segment and
+	  negative running-time.
+	  API: gst_segment_to_running_time_full()
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=740575
+
+2015-03-18 10:53:30 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstsegment.c:
+	* tests/check/gst/gstsegment.c:
+	  segment: fix offset handling with non 0 start
+	  The position in the segment is relative to the start but the offset
+	  isn't, so subtract the start from the position when setting the offset.
+	  Add unit test for this as well.
+
+2015-03-18 09:36:35 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstfunnel.c:
+	  funnel: Add support for buffer lists
+
+2013-11-29 16:28:41 -0500  Olivier Crête <olivier.crete@collabora.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: remove duplicate code
+	  These are already freed by gst_base_parse_clear_queues()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679768
+
+2015-03-17 15:41:38 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpluginloader.c:
+	  pluginloader: Fix indention
+
+2015-03-13 11:08:25 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: reset skip on segments and discontinuities
+	  Large scale skip is an optimization, and thus it is safer to
+	  stop skipping than to continue. Clear skip on segments and
+	  discontinuities, as these are points where it is possible that
+	  the original idea of "bytes to skip" changes.
+
+2015-03-15 14:19:17 +0000  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: Don't grow queue infinitely if only one pad is linked
+	  This was introduced by
+	  https://bugzilla.gnome.org/show_bug.cgi?id=719893
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722891
+	  but it doesn't make any sense at all and causes huge memory leaks.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744253
+
+2015-03-14 21:07:01 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: handle empty buffer list more gracefully
+	  Don't abort, just ignore it. It's like a buffer
+	  without memories.
+
+2015-03-14 17:39:39 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstadapter.c:
+	  adapter: minor optimisation for gst_adapter_take_buffer_list()
+	  Try to allocate buffer list with a suitable size from the
+	  beginning to avoid having to re-alloc the buffer list array.
+
+2015-03-14 17:23:03 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/adapter.c:
+	  tests: add unit test for gst_adapter_take_buffer_list()
+
+2015-03-14 17:20:33 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstadapter.c:
+	* libs/gst/base/gstadapter.h:
+	* win32/common/libgstbase.def:
+	  adapter: add gst_adapter_take_buffer_list()
+	  API: gst_adapter_take_buffer_list()
+
+2015-03-14 16:05:57 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/.gitignore:
+	* tests/check/elements/.gitignore:
+	  Add new streamiddemux binaries to .gitignore
+
+2015-03-14 16:00:47 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: avoid multiple calls to gst_buffer_get_size() in macro
+
+2015-03-14 15:58:00 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstadapter.c:
+	  adapter: avoid multiple calls to gst_buffer_get_size() in macro
+
+2015-03-13 18:22:01 +0000  Ramiro Polla <ramiro.polla@collabora.co.uk>
+
+	* gst/gstelement.c:
+	  element: properly escape percent sign in documentation
+
+2015-03-14 13:37:09 +0000  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	  buffer: Use the correct enum type to fix a compiler warning
+	  gstbuffer.c:522:58: error: implicit conversion from enumeration type 'GstBufferFlags' to
+	  different enumeration type 'GstBufferCopyFlags' [-Werror,-Wenum-conversion]
+	  if (!gst_buffer_copy_into (copy, (GstBuffer *) buffer, flags, 0, -1))
+	  ~~~~~~~~~~~~~~~~~~~~                              ^~~~~
+	  gstbuffer.c:534:46: error: implicit conversion from enumeration type 'GstBufferCopyFlags' to
+	  different enumeration type 'GstBufferFlags' [-Werror,-Wenum-conversion]
+	  return gst_buffer_copy_with_flags (buffer, GST_BUFFER_COPY_ALL);
+	  ~~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~~~~~~~~~~
+	  ./gstbuffer.h:433:31: note: expanded from macro 'GST_BUFFER_COPY_ALL'
+	  ...((GstBufferCopyFlags)(GST_BUFFER_COPY_METADATA | GST_BUFFER_COPY_MEMORY))
+	  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+2015-03-14 14:06:09 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* win32/common/libgstnet.def:
+	  defs: update defs
+
+2014-10-30 15:39:21 +0000  William Manley <will@williammanley.net>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/net/Makefile.am:
+	* libs/gst/net/gstnetcontrolmessagemeta.c:
+	* libs/gst/net/gstnetcontrolmessagemeta.h:
+	  meta: Add `GstNetControlMessageMeta`
+	  GstNetAddress can be used to store ancillary data which was received with
+	  or is to be sent alongside the buffer data.  When used with socket sinks
+	  and sources which understand this meta it allows sending and receiving
+	  ancillary data such as unix credentials (See `GUnixCredentialsMessage`)
+	  and Unix file descriptions (See `GUnixFDMessage`).
+	  This will be useful for implementing protocols which use file-descriptor
+	  passing in payloaders/depayloaders without having to re-implement all the
+	  socket handling code already present in elements such as multisocketsink,
+	  etc.  This, in turn, will be useful for implementing zero-copy video IPC.
+	  This meta uses the platform independent `GSocketControlMessage` API
+	  provided by GLib as a part of GIO.  As a result this new meta does not
+	  require any new dependencies or any conditional compliation for
+	  portablility, although it is unlikely to do anything useful on non-UNIX
+	  platforms.
+
+2015-03-14 11:57:33 +0000  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/gstquery.c:
+	  allocation: Allow allocation pool without size
+	  This allow proposing a number of buffers required even if the size
+	  of buffer is unfixed. This is often the case for encoded formats.
+
+2015-03-01 13:15:40 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstbufferpool.c:
+	* tests/check/gst/gstbufferpool.c:
+	  bufferpool: Don't stop the pool in set_config()
+	  Don't stop the pool in set_config(). Instead, let the controlling
+	  element manage it. Most of the time, when an active pool is being
+	  configured is because the caps didn't change.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745377
+
+2015-03-13 18:53:11 +0000  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: drain on allocation query
+	  Allows buffers to be reclaimed when caps is to be renegotiated so
+	  that bufferpools can be stopped. As the allocation query is
+	  serialized all buffers have been already drained from the pipeline,
+	  except this last_sample one.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=682770
+
+2015-03-13 18:35:14 +0000  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: when draining, deep copy the last buffer to unref old memory
+	  Use gst_buffer_copy_deep() to force the copy of the underlying
+	  memory instead of possibly doing a shallow copy of the buffer
+	  and just referencing the memory
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745287
+
+2015-03-13 18:35:01 +0000  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstbuffer.c:
+	* gst/gstbuffer.h:
+	* tests/check/gst/gstbuffer.c:
+	* win32/common/libgstreamer.def:
+	  gstbuffer: add gst_buffer_copy_deep
+	  A variant of gst_buffer_copy that forces the underlying memory
+	  to be copied.
+	  This is added to avoid adding an extra reference to a GstMemory
+	  that might belong to a bufferpool that is trying to be drained.
+	  The use case is when the buffer copying is done to release the
+	  old buffer and all its resources.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745287
+
+2015-03-13 15:31:30 +0000  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbus.c:
+	  bus: Use g_list_free_full() instead of manually unreffing and freeing
+	  Also unref the messages, not the GList nodes.
+
+2015-03-13 13:42:46 +0000  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbus.c:
+	  bus: Fix another case where we hold the object lock while unreffing a message
+
+2015-03-13 15:28:42 +0200  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* gst/gstbus.c:
+	  bus: Unreferencing messages outside the lock
+	  Shouldn't take the lock while unreferencing messages, because that may cause
+	  more messages to be sent, which will try to take the lock and cause the app to
+	  hang.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728777
+
+2015-02-23 20:27:32 +0200  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstutils.c:
+	* gst/gstutils.h:
+	* win32/common/libgstreamer.def:
+	  utils: Add gst_bin_sync_children_states()
+	  gst_bin_sync_children_states() will iterate over all the elements of a bin and
+	  sync their states with the state of the bin. This is useful when adding many
+	  elements to a bin and would otherwise have to call
+	  gst_element_sync_state_with_parent() on each and every one of them.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745042
+
+2015-02-03 16:12:32 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/printf/vasnprintf.c:
+	  printf: handle unsigned modifier for long long
+	  Otherwise, an unsigned integer will be displayed as a signed one if we
+	  use internal print, ie HAVE_LONG_LONG_FORMAT is not defined.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746096
+
+2015-03-12 14:39:37 +0000  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gststreamiddemux.c:
+	  streamiddemux: Reset pad counter after removing all pads
+
+2014-03-04 19:40:05 +0900  HoonHee Lee <hoonhee.lee@lge.com>
+
+	* configure.ac:
+	* plugins/elements/Makefile.am:
+	* plugins/elements/gstelements.c:
+	* plugins/elements/gststreamiddemux.c:
+	* plugins/elements/gststreamiddemux.h:
+	* tests/check/Makefile.am:
+	* tests/check/elements/streamiddemux.c:
+	* tests/examples/Makefile.am:
+	* tests/examples/streamiddemux/Makefile.am:
+	* tests/examples/streamiddemux/streamiddemux-stream.c:
+	  streamiddemux: Add streamiddemux element
+	  Demultiplex a stream to multiple source pads based on the stream ids from the
+	  stream-start events. This basically reverses the behaviour of funnel.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707605
+
+2015-03-12 13:29:35 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/config.h:
+	* win32/common/gstenumtypes.c:
+	* win32/common/gstversion.h:
+	  win32: update
+
+2015-03-12 13:26:59 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/gst/.gitignore:
+	* tests/check/gst/gstprintf.c:
+	  tests: add some basic unit tests for our printf stuff
+	  To test new %I32 support.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744281
+
+2015-02-10 17:40:48 +0100  Matej Knopp <matej.knopp@gmail.com>
+
+	* gst/printf/printf-parse.c:
+	  printf: add support for %I32
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744281
+
+2015-03-12 13:14:52 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  info: move category level threshold check into log function dispatcher
+	  Minor optimisation: check category log level earlier in the
+	  log function dispatcher and not only in the default log
+	  function.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745213
+
+2015-03-12 12:59:57 +0000  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefind: Reset segment when deactivating pull mode or not running in pull mode
+	  We use the segment format to detect if we run the streaming thread or not.
+	  Without resetting we might believe we do so, although we only did in the past
+	  and are now running in e.g. push mode.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745073
+
+2015-03-08 20:42:38 +0100  Michał Dębski <debski.mi.zd@gmail.com>
+
+	* libs/gst/check/libcheck/check_msg.c:
+	* m4/check-checks.m4:
+	  check: Use mkstemp instead of tempnam if possible
+	  Using tempnam() is deprecated, this gives warning and fails the build
+	  with -Werror.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745858
+
+2015-03-11 16:36:29 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: clean up the need_preroll variable
+	  Based on patch from Song Bing <b06498@freescale.com>
+	  Don't just set the need_preroll flag to TRUE in all cases. When we
+	  are already prerolled it needs to be set to FALSE and when we go to
+	  READY we should not touch it. We should only set it to TRUE in other
+	  cases, like what the code above does.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=736655
+
+2014-12-05 14:16:52 +0900  hoonhee.lee <hoonhee.lee@lge.com>
+
+	* plugins/elements/gstfunnel.c:
+	* tests/check/elements/funnel.c:
+	  funnel: handle GAP event to forwards sticky events into downstream
+	  If no data is coming and funnel receive GAP event, need to forwards sticky events
+	  into downstream if it needs.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738202
+
+2015-03-10 16:42:44 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* libs/gst/check/libcheck/check_run.c:
+	  check: duplicate code branches
+	  CID #1226446
+
+2015-03-10 09:21:22 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	* tests/check/pipelines/queue-error.c:
+	  Fix double semicolons
+
+2015-02-22 10:12:01 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* win32/common/libgstbase.def:
+	  win32: update exports
+
+2015-02-21 20:13:04 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* libs/gst/base/gstflowcombiner.c:
+	* libs/gst/base/gstflowcombiner.h:
+	  flowcombiner: add a gst_flow_combiner_update_pad_flow() method
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744572
+	  API: gst_flow_combiner_update_pad_flow()
+
+2015-02-15 20:52:10 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* libs/gst/base/gstflowcombiner.c:
+	* libs/gst/base/gstflowcombiner.h:
+	  flowcombiner: add a gst_flow_combiner_reset() method
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744572
+	  API: gst_flow_combiner_reset()
+
+2015-03-06 10:59:58 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Fix typo in debug message
+
+2015-03-05 18:30:45 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  info: avoid malloc/free if log object is NULL
+
+2015-03-05 17:54:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  info: move __FILE__ path shortening into default log handler
+	  Instead of always shortening the __FILE__ path, even if the
+	  log message is not actually printed, which might happen if
+	  the log level is activated but the category is not, only
+	  shorten the path if we're actually going to output it and
+	  if it looks like it needs shortening. Log handlers had no
+	  guarantee that they would get a name instead of a path
+	  anyway on any architecture, so it shouldn't be a problem.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745213
+
+2015-02-27 01:16:58 +1100  Peter Urbanec <git.user@urbanec.net>
+
+	* gst/gstinfo.c:
+	  info: shorten __FILE__ on all platforms
+	  This is useful not only for MSVC, but also with gcc/Linux
+	  when doing cross-compilation builds and out-of-tree builds.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745213
+
+2015-03-04 11:02:41 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* docs/design/part-latency.txt:
+	  docs: clarify min-latency wording in part-latency.txt
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744338
+
+2015-02-26 14:43:25 +0100  Marcin Kolny <marcin.kolny@flytronic.pl>
+
+	* win32/common/gstconfig.h:
+	  win32/common/gstconfig.h: removed libxml include directive
+	  This is a leftover from 0.10 and not needed anymore.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745210
+
+2015-03-03 12:53:13 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Signal the sinkpad thread if a flow error happened
+	  It might still be waiting for a query to be handled, or the queue to become
+	  empty again for the next item. Also if downstream returns FLUSHING, flush the
+	  queue like we do in queue and multiqueue.
+
+2015-03-03 12:48:34 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstqueue.c:
+	  queue: Wake up the query function on errors from the loop function
+	  Otherwise we might wait forever for serialized queries to be handled as the
+	  loop function is stopped and as such we will never ever dequeue the query and
+	  handle it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745319
+
+2015-03-02 20:31:58 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstutils.c:
+	  utils: improve warning when linking  elements without common ancestor
+	  This comes up quite a lot and it's a common mistake, so let's
+	  try to improve the warning message a little.
+
+2015-02-27 00:33:27 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: Drop custom latency query handling
+	  The default latency query handler now implements this logic
+
+2015-02-26 15:57:20 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* scripts/gst-uninstalled:
+	  gst-unsinstalled: Add ges-launch manuals path to MANPATH.
+
+2015-02-26 13:08:48 +0530  Arun Raghavan <arun@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Don't fail latency query on unlinked pads
+	  A single unlinked pad can make the latency query fail across the
+	  pipeline, which is probably not desirable. Instead, we return a default
+	  anything goes value.
+	  Perhaps we should also be emitting a gst_message_new_latency() when a
+	  PLAYING element has one of its pads linked.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745197
+
+2014-10-22 16:43:43 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Don't emit errors on EOS if we saw GAP events
+	  If we saw GAP events (meaning the streams is advancing) before we get
+	  EOS, we should not post an ERROR, since it is not fatal.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745143
+
+2015-02-25 08:26:19 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstvalue.h:
+	* tests/check/gst/gstinfo.c:
+	  gstvalue: Make sure GST_FOURCC_ARGS produces printable characters
+	  Some systems will crash if we use non-printable characters in print/debug
+	  statements.
+	  Make sure that GST_FOURCC_ARGS never does that
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745144
+
+2015-02-25 16:11:06 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/gstutils.c:
+	  gstutils: remove incorrect Fixme comment
+	  If the checks were changed to using g_return_if_fail() the GST_DEBUG lines
+	  about the specific failure would be lost.
+
+2015-02-25 16:02:39 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/gstutils.c:
+	  gstutils: remove obsolete Fixme comment
+	  gst_pad_link_filtered() is very long gone and current
+	  gst_element_link_pads_filtered() doesn't apply to this Fixme comment.
+
+2015-02-24 21:58:00 +0100  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* scripts/gst-uninstalled:
+	  gst-uninstalled: add adaptivedemux paths from -bad
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745122
+
+2015-02-24 18:14:47 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* docs/faq/developing.xml:
+	  docs: remove dead link
+	  Remove dead link to wiki page for SubmittingPatches
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730311
+
+2015-02-24 14:07:54 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  helpers: Fix install of completion-helper.
+	  By applying the supplied transformation to the program name,
+	  for example --program-prefix.
+
+2015-02-23 16:39:43 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  completion-helper: Add missing DESTDIR
+	  Otherwise doing "make install DESTDIR" will try to write to
+	  /usr/share/...
+
+2015-02-23 21:17:16 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/gst-completion-helper.c:
+	  completion-helper: Add filtering by klass and sink caps.
+
+2015-02-21 17:13:26 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: avoid returning downstream GST_FLOW_EOS from previous segment to current upstream segment
+
+2015-02-22 10:02:25 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* libs/gst/base/gstflowcombiner.c:
+	  flowcombiner: fix documentation comment typo
+
+2015-02-22 10:01:33 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: drain segment upon SEGMENT_DONE to ensure proper event order
+
+2015-02-22 10:01:50 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: clean up some bogus commented code
+
+2015-02-23 19:10:08 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/helpers/Makefile.am:
+	  completion-helper: Append $(EXEEXT) to the name of the moved file.
+	  Fixes the build on Windows
+	  (https://ci.gstreamer.net/job/cerbero-cross-mingw32/1742/console)
+
+2015-02-23 17:23:33 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	  Fix distcheck
+	  Disable bash completion during distchecking otherwise
+	  it may try to install into a system path and fail.
+
+2015-02-23 17:16:45 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	  Dist new data directory
+	  Fixes 'make dist'
+
+2015-02-20 22:04:22 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* Makefile.am:
+	* configure.ac:
+	* data/Makefile.am:
+	* data/completions/gst-inspect-1.0:
+	* data/completions/gst-launch-1.0:
+	* libs/gst/helpers/.gitignore:
+	* libs/gst/helpers/Makefile.am:
+	* libs/gst/helpers/gst:
+	* libs/gst/helpers/gst-completion-helper.c:
+	* pkgconfig/gstreamer-uninstalled.pc.in:
+	* pkgconfig/gstreamer.pc.in:
+	  bash-completion: Implement in a different way.
+	  + Gets installed
+	  + Uses a helper tool, gst-completion-helper, installed in
+	  bash-completions/helpers.
+	  + Adds a common script that other tools can source.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744877
+
+2015-02-23 12:08:49 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/Makefile.am:
+	* gst/gst.h:
+	  GstDeviceMonitor: keep alphabetical order
+
+2015-02-20 16:22:23 -0500  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst/gstelement.c:
+	* tests/check/gst/gstelement.c:
+	  Revert "element: set pads need-parent flag to false when removing"
+	  This reverts commit 1911554cff2c4a11772b541a8215a80c728b1097.
+	  This breaks the functionality of GST_PAD_FLAG_NEED_PARENT, the reason for this
+	  flag is that if a pad is removed from a running element, you don't want
+	  functions (such as chain or event) to be called on the pad without a parent set.
+	  This can happen if you remove a request or sometimes pad from a running element.
+	  I don't see the code that caused this in tsdemux, but if it needs to unset
+	  the flag on remove, it should do it itself and then make sure that the parent
+	  exists in any pad function.
+
+2015-02-19 12:17:15 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* libs/gst/check/gstcheck.h:
+	  check: cast element in ASSERT_SET_STATE.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744777
+
+2015-02-19 01:16:52 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Use a separate query for upstream pads and let it fail if one upstream query fails
+
+2015-02-19 01:12:49 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: If the latency query fails for one of the pads, it fails overall
+
+2015-02-18 11:05:19 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstqueue.c:
+	  queue: Remove unused boolean parameter from internal functions
+
+2015-02-17 12:11:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/queue.c:
+	  queue: Add unit test for buffer list and time level handling
+
+2015-02-17 11:44:40 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstqueue.c:
+	  queue: Add support for buffer lists
+
+2015-02-17 11:41:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Count the number of buffers in a buffer list for updating the current levels
+	  instead of just assuming one buffer.
+
+2015-02-17 20:47:23 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstmessage.c:
+	  message: revive async delivery message before bus thread can run unref
+	  Revive message in dispose handler before we signal the bus thread,
+	  otherwise the bus thread might be woken up and unref the message
+	  before we had a chance to revive it yet.
+
+2015-02-16 23:02:40 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstbus.c:
+	  tests: bus: add unit test for async message delivery
+
+2015-02-16 22:39:42 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gst_private.h:
+	* gst/gstbus.c:
+	* gst/gstmessage.c:
+	  message, bus: fix async message delivery
+	  Async message delivery (where the posting thread gets blocked
+	  until the message has been processed and/or freed) was pretty
+	  much completely broken.
+	  For one, don't use GMutex implementation details to check
+	  whether a mutex has been initialized or not, esp. not
+	  implementation details that don't hold true any more with
+	  newer GLib versions where atomic ops and futexes are used
+	  (spotted by Josep Torras). This led to async message
+	  delivery no longer blocking with newer GLib versions on
+	  Linux.
+	  Secondly, after async delivery don't free mutex/GCond
+	  embedded inside the just-freed message structure.
+	  Use a new (private) mini object flag to signal GstMessage
+	  that the message being freed is part of an async delivery
+	  on the bus so that the dispose handler can keep the message
+	  alive and the bus can free it once it's done cleaning up
+	  stuff.
+
+2015-02-16 19:24:44 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  info: nicer buffer offset printing when offsets are not set
+	  Print unset offsets as 'none' instead of humongous numbers,
+	  for better readability.
+
+2015-02-16 11:35:41 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Only initialize GValue to a type once, not on every retry
+	  Otherwise we'll get warnings like this:
+	  cannot initialize GValue with type 'gboolean', the value has already been initialized as 'gboolean'
+
+2015-02-14 12:15:03 +0100  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* gst/gstutils.c:
+	  gstutils: check uri before using it in gst_pad_create_stream_id_internal
+	  If an element implements wrongly the URI query and set the uri to NULL and if
+	  the element calls gst_pad_create_stream_id at some point, it will lead to crash
+	  as the uri is not supposed to be NULL in the gst_pad_create_stream_id_internal
+	  function.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744520
+
+2015-02-13 19:43:24 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* libs/gst/controller/gsttimedvaluecontrolsource.c:
+	  timedvaluecontrolsource: Do not wrongly send value-removed
+	  And avoid freeing something we do not own
+
+2015-02-04 15:06:17 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* scripts/gst-uninstalled:
+	  gst-uninstalled: Set GST_VALIDATE_PLUGIN_PATH
+
+2015-02-12 13:34:49 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: fix documentation and debug message after latency updates
+	  Changes docs and message according to latency handling fix
+
+2015-02-12 14:50:15 +0000  Frédéric Wang <fred.wang@free.fr>
+
+	* plugins/elements/gstfdsrc.c:
+	  fdsrc: use g_ascii_strtoull() to convert size string in uri
+	  sscanf() doesn't handle G_GUINT64_FORMAT well on mingw64 it
+	  appears, leading to compiler warnings.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744034
+
+2015-02-12 14:03:15 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: gst_pad_iterate_internal_links() can return NULL if there are none
+
+2015-02-12 14:03:03 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Return NULL instead of FALSE for pointers
+
+2015-02-12 13:55:36 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Implement more useful default handling for the LATENCY query
+	  Before we just took the values from the first pad that succeded the query,
+	  now we accumulate the results of every sinkpad properly and return that
+	  result.
+
+2015-02-12 11:26:26 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/design/part-latency.txt:
+	  design/part-latency: Minor logic fix
+	  The maximum latency will be the element's minimum latency or bigger,
+	  not bigger than the element's minimum latency or bigger.
+
+2015-02-11 13:41:56 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstquery.c:
+	* libs/gst/base/gstbaseparse.c:
+	* libs/gst/base/gstbasesink.c:
+	* libs/gst/base/gstbasesrc.c:
+	* plugins/elements/gstqueue.c:
+	  Improve and fix LATENCY query handling
+	  This now follows the design docs everywhere.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744106
+
+2015-02-11 12:20:39 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/design/part-latency.txt:
+	  design/part-latency: Add more details about min/max latency handling
+	  These docs missed many details that were not obvious and because of that
+	  handled in a few different, incompatible ways in different elements and base
+	  classes.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744106
+
+2015-02-07 05:16:23 +1100  Jan Schmidt <jan@centricular.com>
+
+	* tests/check/gst/gstclock.c:
+	  tests: Fix clock regression test
+	  Fix up the values the test is checking for now that
+	  the clock regression returns parameters starting from
+	  the end of the regression range.
+
+2015-02-07 04:22:22 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclock: Don't update the clock when it desynch
+	  Add a hold off when the clock calibration suddenly loses synch,
+	  as it may be a glitch, but also make sure we update if it stays
+	  desynched for more than a few seconds
+
+2015-02-06 06:07:43 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclock: Make the RTT average ignore large values more forcefully.
+	  Smooth larger RTTs a little harder, so excessively large values
+	  perturb the average a bit less, and therefore get filtered out
+	  more strongly
+
+2015-02-05 22:55:39 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstclock-linreg.c:
+	  clock: Make linear regression x/y base start from maximum observation.
+	  Project the results of the linear regression to the end of the
+	  regression range, so they're more directly comparable to results
+	  going forward
+
+2015-02-05 13:49:47 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: add "offset" property to go with gst_pad_set_offset()
+	  So we can set the offset via gst-launch.
+
+2015-02-02 08:22:47 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstplugin.c:
+	  plugin: add more detail to logging when not loading a plugin
+	  Improve the log messages and add e.g the version number we checked.
+
+2015-02-02 17:37:44 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstpad.c:
+	  gstpad: Fix a typo in a docstring.
+
+2015-02-01 14:23:26 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gsttask.c:
+	  build: Check that _MSC_VER macro is defined
+
+2015-02-01 03:39:03 +0200  Ilya Konstantinov <ilya.konstantinov@gmail.com>
+
+	* configure.ac:
+	* gst/gsttask.c:
+	  task: Add thread name support on OS X and iOS
+
+2015-01-29 16:37:07 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstclock-linreg.c:
+	  clock: Don't use invalid objects for GST_DEBUG_OBJECT()
+	  Not sure what "clock" actually is here, it must be something defined by one of
+	  the headers that are included.
+
+2015-01-29 12:10:18 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	  buffer: Document that gst_buffer_copy_region() accepts -1 as size to copy until the end
+	  It's just a wrapper around gst_buffer_copy_into() after all.
+
+2014-12-09 16:28:56 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstsegment.c:
+	* gst/gstsegment.h:
+	  segment: Add new skip flags for clarifying trick mode playback.
+	  Add GST_SEEK_FLAG_TRICKMODE_KEY_UNITS and
+	  GST_SEEK_FLAG_TRICKMODE_NO_AUDIO, and rename GST_SEEK_FLAG_SKIP
+	  to GST_SEEK_FLAG_TRICKMODE (with backwards compat define).
+	  Do the same for the corresponding SEGMENT flags.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735666
+
+2015-01-23 08:59:27 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* libs/gst/check/gstcheck.c:
+	  check: fix another typo in the docs
+
+2015-01-22 23:10:06 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gsturi.c:
+	* tests/check/gst/gsturi.c:
+	  uri: Fix indention
+
+2015-01-21 14:10:02 +0000  David Waring <david.waring@rd.bbc.co.uk>
+
+	* tests/check/gst/gsturi.c:
+	  uri: Fix new URI parsing tests based on GNet's
+	  https://bugzilla.gnome.org/show_bug.cgi?id=743195
+
+2015-01-21 14:09:45 +0000  David Waring <david.waring@rd.bbc.co.uk>
+
+	* gst/gsturi.c:
+	  uri: Fix parsing issues
+	  Make host IPs in square brackets store only the IP, i.e. strip the brackets.
+	  Strip leading whitespace characters in URIs.
+	  Fail parsing when host part does not match any valid formats from RFC3986.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=743195
+
+2015-01-19 19:15:32 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gsturi.c:
+	  uri: Add parsing unit test based on GNet's
+	  Plus some new URIs to parse.
+	  https://git.gnome.org/browse/archive/gnet/plain/tests/check/gnet/gneturi.c
+	  https://bugzilla.gnome.org/show_bug.cgi?id=743195
+
+2015-01-22 11:29:18 +0100  Heinrich Fink <hfink@toolsonair.com>
+
+	* libs/gst/check/gstcheck.c:
+	  check: Fix doc of GST_CHECKS and GST_CHECKS_IGNORE
+	  https://bugzilla.gnome.org/show_bug.cgi?id=743335
+
+2015-01-21 18:07:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/gstcheck.c:
+	  check: Add _fail_unless() compatibility function around _ck_assert_failed()
+	  We exported this in < 1.5 and it was automatically used by many macros
+	  from the header. Keep it exported for now.
+
+2015-01-21 14:12:22 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstpad.c:
+	  gstpad: Inline apply_pad_offset()
+	  Avoid doing a function call for something which will mostly be unused
+
+2015-01-21 14:10:06 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstpad.c:
+	  gstpad: Fix debug message
+
+2015-01-21 11:45:41 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstpad.c:
+	  gstpad: Fix PROBE_NO_DATA macro
+	  The problem was that the macro was always used with 'ret' as the defaultval
+	  argument.
+	  This would result in the macro eventually expanding to
+	  if (G_UNLIKELY (ret != ret && ret != GST_FLOW_OK))
+	  ... ret != ret will always fail, and therefore we'd never call the
+	  following line.
+	  Instead of that, store the previous value locally for comparision
+
+2015-01-21 22:44:59 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclock: Fix docs typo. Clock bus messages are GST_MESSAGE_ELEMENT
+
+2015-01-15 22:32:28 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclock: Implement rate limits for polling and fix up skew limits
+	  Add the minimum-update-interval property to the clock, with a default
+	  of 50ms and don't send polling requests faster than that. That helps to
+	  ensure we spread the initial observations out a little - startup takes
+	  a little longer, but tracking is more stable.
+	  Move the discont skew limiting code inside an if statement, so that
+	  it's only done when the linear regression succeeds and the clock
+	  parameters might actually change.
+
+2015-01-15 10:05:32 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/Makefile.am:
+	* gst/gst_private.h:
+	* gst/gstclock-linreg.c:
+	* gst/gstclock.c:
+	* tests/check/gst/gstclock.c:
+	  clock: Improve slaving regression.
+	  Add domain checks for the input values, and a variable precision
+	  calculation that loops if necessary to ensure we never overflow
+	  accumulators and then silently produce garbage results.
+	  Make the (non-public) linear regression function available for
+	  unit testing by putting it in a separate source file the test
+	  can include. Add a unit test that the new regression function
+	  produces sensible results for several inputs taken from real-world
+	  captures.
+
+2015-01-10 21:42:00 +1100  Jan Schmidt <jan@centricular.com>
+
+	* configure.ac:
+	* tests/examples/Makefile.am:
+	* tests/examples/netclock/.gitignore:
+	* tests/examples/netclock/Makefile.am:
+	* tests/examples/netclock/netclock-client.c:
+	* tests/examples/netclock/netclock-server.c:
+	  netclock: Add simple network clock server and client examples
+
+2015-01-10 21:42:00 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclock: Implement sending statistic bus messages and discont limits
+	  Allow setting a GstBus on the network clock client
+	  via a new 'bus' object property. If a bus is set, the
+	  clock will output an element message containing statistics
+	  about new clock observations and the clock correlation.
+	  When the local clock is synchronised with the remote, limit the
+	  maximum jump in the clock at any point to be one average RTT to
+	  the server. Also, publish in the bus message whether we are
+	  synched with the remote or not.
+
+2015-01-10 21:42:00 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstclock.c:
+	* gst/gstclock.h:
+	* win32/common/libgstreamer.def:
+	  clock: Add gst_clock_add_observation_unapplied()
+	  gst_clock_add_observation_unapplied() adds a new master/slave clock
+	  observation and runs the regression without activating the new
+	  calibration results.
+
+2014-12-16 22:51:22 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstclock.c:
+	* gst/gstclock.h:
+	* win32/common/libgstreamer.def:
+	  clock: Add gst_clock_adjust_with_calibration()
+	  gst_clock_adjust_with_calibration() uses directly passed calibration
+	  parameters, instead of using the clock's current calibration,
+	  allowing for calculations using pending or old calibration params
+
+2015-01-21 09:45:16 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstoutputselector.c:
+	  output-selector: Constify negotiation mode GEnumValue table
+
+2015-01-20 10:35:47 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstevent.c:
+	  docs: fix typo in GstEvent docs
+	  send -> sent
+
+2015-01-20 09:19:10 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* scripts/git-update.sh:
+	* scripts/gst-uninstalled:
+	  scripts: Remove gnonlin from the scripts
+	  It is not maintain anymore and its feature are now inside the GStreamer
+	  Editing Services (for the time being).
+
+2015-01-16 19:17:31 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbin.c:
+	  bin: Pass structs we plan to modify around by pointer, not value
+	  Otherwise the struct is going to be copied, which is not very efficient. And
+	  also has the nice side effect that modifications of the struct might be
+	  done in a copy, and we later use the original struct without the changes.
+	  Caused LATENCY queries to always return the initialization values in one of my
+	  tests, instead of the actual values reported by child elements.
+
+2015-01-14 10:52:11 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* plugins/elements/gstidentity.c:
+	  identity: send gap events when dropping buffers
+
+2015-01-13 18:11:39 +0000  Phillip Wood <phillip.wood@dunelm.org.uk>
+
+	* gst/gstpreset.c:
+	  preset: fix incorrect preset version comparison
+	  Use app_version if there are no system presets, so that if the
+	  application presets are newer than the user presets they are merged.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742877
+
+2015-01-12 16:03:02 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Don't dereference NULL pointer
+	  CID 1262286
+
+2015-01-12 15:55:47 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From f2c6b95 to bc76a8b
+
+2015-01-11 23:00:29 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstpreset.c:
+	  preset: fix sorting presets
+	  The glib docs are not clear on this, but the qsort man-page is - the
+	  GCompareDataFunc does not get the strings, but pointers to them.
+
+2014-12-31 18:52:34 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: fix silly GQueue iteration code
+	  Not active by default though.
+
+2015-01-04 23:24:53 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstpreset.c:
+	  preset: don't return empty preset lists
+	  Add a shortcut for the cases where an element implements the preset iface but
+	  has no presets and return NULL instead of an empty list in that case.
+
+2015-01-04 23:08:47 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* tools/gst-inspect.c:
+	  gst-inspect: only print presets line if num-presets > 0
+	  Also check for an empty strv.
+
+2015-01-04 22:51:09 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* tools/gst-inspect.c:
+	  gst-inspect: fix output for -a
+	  Use n_print to ensure all lines are prefixed with the element name.
+
+2014-12-29 11:54:00 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/libs/Makefile.am:
+	  docs: ignore libcheck headers that use doxygen comments
+
+2014-12-29 11:52:22 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstinfo.h:
+	  docs: fix two gtk-doc warnings
+	  One by correcting the end-of-comment marker and one by making sure the function
+	  prototype in the header is in sync with the c file and doc-blob.
+
+2014-12-26 23:22:30 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* docs/libs/gstreamer-libs-sections.txt:
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	  docs: Add missing interfaces to documentation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742057
+
+2014-12-27 15:15:30 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/gstiterator.c:
+	  iterator: Fix outdated example code and accompanying documentation
+	  GstIterator no longer returns a refcounted gpointer
+
+2014-12-24 13:46:28 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Use the same waiting function for EOS and non-EOS waiting
+
+2014-12-24 13:44:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Wake up all waitings pads directly if we forward the EOS event
+	  Otherwise they might wait a bit longer unnecessarily.
+	  Also do some minor cleanup.
+
+2014-12-24 10:13:51 +0800  Song Bing <b06498@freescale.com>
+
+	* plugins/elements/gstinputselector.c:
+	* plugins/elements/gstinputselector.h:
+	  inputselector: Block when receiving an EOS event on a deactivated pad
+	  ... and only unblock when either a) the pad becomes active and the event
+	  should be forwarded or b) the active pad went EOS itself.
+	  Otherwise it can happen that we switch from a longer track that is not EOS yet
+	  to a shorter track that already is EOS, but the shorter track won't have any
+	  possibility to send its EOS event downstream anymore.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740949
+
+2014-12-23 12:54:50 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Keep a ref of the currently active sinkpad around
+	  Otherwise we can't be sure that the pointer points to a still existing
+	  pad instance after releasing the lock.
+
+2014-12-23 12:53:58 +0100  Song Bing <b06498@freescale.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Get the active sinkpad again after taking the lock when handling events
+	  It might have changed in the meantime.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741893
+
+2014-12-22 13:08:37 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Short-circuit CAPS query handling if transform_caps returns EMPTY caps
+	  Both for the peer filter caps and the converted caps based on the peer caps.
+	  If the peer filter caps are EMPTY, the peer caps query will also return
+	  EMPTY. There's no ned to both downstream/upstream with this query.
+
+2014-12-22 11:45:13 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* MAINTAINERS:
+	  MAINTAINERS: Update my mail address
+
+2014-12-21 14:12:29 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstdebugutils.c:
+	  debugutils: use a constant for the max param length
+	  Improve readability by using a define for the max-chars. Also use the unicode
+	  ellipsis as dot files are utf-8.
+
+2014-12-15 14:03:54 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* tools/gst-inspect.c:
+	  gst-inspect: print preset names
+	  If the element supports presets and ships some, print them.
+	  Fixes #741427
+
+2014-12-19 11:35:24 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstinfo.h:
+	  gstinfo: Add new maximum level debugging
+	  API: GST_LEVEL_MAX
+	  By compiling gstreamer (or plugins) with GST_LEVEL_MAX defined, only
+	  the debugging statements at or below that level will be compiled in.
+	  This allows compiling in some debugging (like errors and warnings) which
+	  helps in debugging, but without the full cpu/memory overhead of all debugging
+	  enabled.
+
+2014-12-18 12:04:22 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/check/gstcheck.c:
+	  gstcheck: fix GI annotation
+	  Add missing : to annotation
+
+2014-11-13 14:53:59 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: jump over large skips in pull mode
+	  This bypasses the dumping of buffers we still have to do in push mode.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730053
+
+2014-10-25 17:16:25 +0530  Arun Raghavan <arun@accosted.net>
+
+	* gst/gstdebugutils.c:
+	* gst/gstdebugutils.h:
+	  debugutils: Truncate parameter values that are too long
+	  This removes some information from the dumps, but improves readability.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739165
+
+2014-12-18 10:53:02 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From ef1ffdc to f2c6b95
+
+2014-12-16 16:31:21 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstcaps.c:
+	* gst/gstcaps.h:
+	* gst/gststructure.c:
+	* gst/gststructure.h:
+	* tests/check/gst/gstcaps.c:
+	* tests/check/gst/gststructure.c:
+	* win32/common/libgstreamer.def:
+	  structure/caps: Add gst_{structure,caps}_filter_and_map_in_place()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739765
+
+2014-12-16 18:14:22 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gststructure.c:
+	  structure: Add simple unit test for foreach() and map_in_place()
+
+2014-11-07 11:15:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstcaps.c:
+	* gst/gstcaps.h:
+	* tests/check/gst/gstcaps.c:
+	  caps: Add gst_caps_foreach() and gst_caps_map_in_place()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739765
+
+2014-12-16 15:53:06 +0000  Tim-Philipp Müller <tim@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 for new translatable strings
+
+2014-12-14 12:54:32 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* configure.ac:
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/libcheck/Makefile.am:
+	* libs/gst/check/libcheck/check.c:
+	* libs/gst/check/libcheck/check_log.c:
+	* libs/gst/check/libcheck/check_msg.c:
+	* libs/gst/check/libcheck/check_pack.c:
+	* libs/gst/check/libcheck/check_print.c:
+	* libs/gst/check/libcheck/check_run.c:
+	* libs/gst/check/libcheck/check_str.c:
+	  check: Have autotools generate internal-check.h
+	  Previously GStreamer got access to the libcheck interface by including
+	  libs/gst/check/check.h which in turn included internal-check.h in the
+	  same directory. internal-check.h was generated by copying
+	  libs/gst/check/libcheck/check.h which in turn was generated from
+	  check.h.in in the same directory. In this case generating
+	  libs/gst/check/libcheck/check.h is unnecessary, in addition this file
+	  was accidentally distributed in generated project tarballs.
+	  Now libs/gst/check/internal-check.h is generated directly from
+	  libs/gst/check/libcheck/check.h.in by configure. This means that the
+	  libcheck source must include internal-check.h instead of the previously
+	  generated libs/gst/check/libcheck/check.h. However the unnecessary
+	  intermediate step is now skipped.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=741359
+
+2014-12-16 10:13:03 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstbufferpool.c:
+	* tests/check/gst/gstbufferpool.c:
+	  bufferpool: Don't check size in config validation
+	  Pools are allowed to change the size in order to adapt padding. So
+	  don't check the size. Normally pool will change the size without
+	  failing set_config(), but it they endup changing the size before
+	  the validate method may fail on a false positive.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741420
 
 2014-12-16 12:21:59 +0100  Wim Taymans <wtaymans@redhat.com>
 
@@ -12,6 +5159,170 @@
 	  PERFORMANCE log the reason why a buffer could not be recycled in the
 	  bufferpool.
 
+2014-12-15 14:53:28 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* m4/check-checks.m4:
+	  check: Update version number of included libcheck
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=741550
+
+2014-12-12 21:02:22 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstreamer.def:
+	  win32: update exports
+
+2014-12-12 21:54:01 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: add new preset api
+
+2014-12-12 21:38:26 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstpreset.c:
+	* gst/gstpreset.h:
+	  preset: add gst_preset_is_editable()
+	  Add a function to check if the preset iface implementation is editable and
+	  document this from the implementers perspective.
+	  API: gst_preset_is_editable()
+
+2014-12-12 14:23:19 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* win32/common/libgstreamer.def:
+	  win32: Update def file
+
+2014-12-12 13:57:39 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstdebugutils.c:
+	  debugutils: Fix compiler warning
+	  gstdebugutils.c: In function 'gst_debug_bin_to_dot_data':
+	  gstdebugutils.c:683:530: error: 'return' with no value, in function returning non-void [-Werror]
+	  g_return_if_fail (GST_IS_BIN (bin));
+
+2014-12-12 13:15:02 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* gst/gstdebugutils.c:
+	* gst/gstdebugutils.h:
+	  debugutils: Add a gst_debug_bin_to_dot_data() method
+	  This provides the dot file as a string, rather than dumping to a file.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741425
+
+2014-12-10 11:17:11 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	* plugins/elements/gsttypefindelement.h:
+	  typefind: minor cosmetic change
+	  No nee to abbrev variab nam here, nicer to read if full.
+
+2014-12-10 11:16:09 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefind: use GST_BUFFER_OFFSET_NONE for buffer offset
+
+2014-12-07 12:55:26 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* libs/gst/check/libcheck/check.h.in:
+	  check: Avoid requring (u)intmax_t in macros
+	  Previously embedded libcheck versions did not depend on (u)intmax_t and
+	  doing so would require projects using GStreamer's check framework to add
+	  AX_CREATE_STDINT_H to their configure.ac. A workaround is to fallback to
+	  glib types. This patch assumes that glib.h is always included before
+	  internal-check.h which is ok since everything Gstreamer would include
+	  gst/gstcheck.h instead of directly including internal-check.h.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
+
+2014-12-06 19:03:04 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* libs/gst/check/libcheck/clock_gettime.c:
+	  check: Fix compilation error for iOS
+	  libcheck includes CoreServices for its compat for clock_gettime(),
+	  even though it never uses anything it declares. Let's remove it.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
+
+2014-11-15 13:26:47 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* configure.ac:
+	* libs/gst/check/gstcheck.h:
+	* libs/gst/check/libcheck/Makefile.am:
+	* libs/gst/check/libcheck/check.c:
+	* libs/gst/check/libcheck/check.h.in:
+	* libs/gst/check/libcheck/check_error.c:
+	* libs/gst/check/libcheck/check_error.h:
+	* libs/gst/check/libcheck/check_list.c:
+	* libs/gst/check/libcheck/check_log.c:
+	* libs/gst/check/libcheck/check_msg.c:
+	* libs/gst/check/libcheck/check_pack.c:
+	* libs/gst/check/libcheck/check_print.c:
+	* libs/gst/check/libcheck/check_run.c:
+	* libs/gst/check/libcheck/check_str.c:
+	* libs/gst/check/libcheck/libcompat.h:
+	* m4/check-checks.m4:
+	  check: Apply GStreamer-specific patches
+	  Reintroduced patches:
+	  * Make sure that fail_if(1) actually fails
+	  from commit 9f99d056a263e71a5e6181224829def906cf0226
+	  New patches due to updated libcheck (based on 0.9.14):
+	  * Checks in m4/check-checks.m4 to cater for new dependencies
+	  * Conditional compile-time compat POSIX fallbacks for libcheck
+	  * Avoid relative paths for libcheck header files
+	  * Make timer_create() usage depend on posix timers, not librt
+	  * Rely on default AX_PTHREAD behavior to allow HAVE_PTHREAD to be used
+	  when checking for types and functions (like clock_gettime())
+	  * Avoid double declaration of clock_gettime() when availabe outside of
+	  librt by making compat clock_gettime() declaration conditional
+	  * check 0.9.9 renamed _fail_unless() and 0.9.12 later renamed it again
+	  to _ck_assert_failed(), so ASSERT_{CRITICAL,WARNING}() now calls this
+	  function
+	  * Remove libcheck fallback infrastructure for malloc(), realloc(),
+	  gettimeofday() and snprintf() since either they appear to be
+	  available or they introduce even more dependencies.
+	  The result is an embedded check in gstreamer that has been tested by
+	  running check tests in core, -base, -good, -bad, -ugly and rtsp-server
+	  on Linux, OSX and Windows.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
+
+2014-11-15 12:53:32 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* libs/gst/check/libcheck/alarm.c:
+	* libs/gst/check/libcheck/check.c:
+	* libs/gst/check/libcheck/check.h.in:
+	* libs/gst/check/libcheck/check_error.c:
+	* libs/gst/check/libcheck/check_error.h:
+	* libs/gst/check/libcheck/check_impl.h:
+	* libs/gst/check/libcheck/check_list.c:
+	* libs/gst/check/libcheck/check_list.h:
+	* libs/gst/check/libcheck/check_log.c:
+	* libs/gst/check/libcheck/check_log.h:
+	* libs/gst/check/libcheck/check_msg.c:
+	* libs/gst/check/libcheck/check_msg.h:
+	* libs/gst/check/libcheck/check_pack.c:
+	* libs/gst/check/libcheck/check_pack.h:
+	* libs/gst/check/libcheck/check_print.c:
+	* libs/gst/check/libcheck/check_print.h:
+	* libs/gst/check/libcheck/check_run.c:
+	* libs/gst/check/libcheck/check_str.c:
+	* libs/gst/check/libcheck/check_str.h:
+	* libs/gst/check/libcheck/clock_gettime.c:
+	* libs/gst/check/libcheck/libcompat.c:
+	* libs/gst/check/libcheck/libcompat.h:
+	* libs/gst/check/libcheck/localtime_r.c:
+	* libs/gst/check/libcheck/strsignal.c:
+	* libs/gst/check/libcheck/timer_create.c:
+	* libs/gst/check/libcheck/timer_delete.c:
+	* libs/gst/check/libcheck/timer_settime.c:
+	  check: Import version 0.9.14
+	  This lifts the files almost verbatim (the changes being running though
+	  gst-indent and fixing the FSF address) from the upstream respository.
+	  Therefore this commit reverts some GStreamer-specific patches to check
+	  that will be reintroduced next.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
+
+2014-11-04 19:11:50 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	* plugins/elements/gsttypefindelement.h:
+	  typefind: Propagate input buffer offset
+	  The initial buffers might have non-default offsets, make sure they get
+	  propagated if present.
+
 2014-10-07 16:44:45 +0200  Edward Hervey <bilboed@bilboed.com>
 
 	* libs/gst/base/gstbasesink.c:
@@ -22,6 +5333,72 @@
 	  Fixes positions getting properly reported with applied_rate < 0.0
 	  https://bugzilla.gnome.org/show_bug.cgi?id=738092
 
+2014-11-28 14:17:54 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/manual/advanced-buffering.xml:
+	* gst/gstbin.c:
+	* gst/gstbus.c:
+	* gst/gstcontrolbinding.c:
+	* gst/gstdevicemonitor.c:
+	* gst/gstghostpad.c:
+	* gst/gstinfo.c:
+	* gst/gstplugin.c:
+	* gst/gststructure.c:
+	* gst/gstsystemclock.c:
+	* libs/gst/base/gstbasesink.c:
+	* libs/gst/base/gstbasetransform.c:
+	* libs/gst/base/gstcollectpads.c:
+	* libs/gst/check/gstcheck.c:
+	* libs/gst/check/gstcheck.h:
+	* libs/gst/check/gsttestclock.c:
+	* plugins/elements/gstfunnel.c:
+	* plugins/elements/gstidentity.c:
+	* plugins/elements/gstinputselector.c:
+	* tools/gst-launch.c:
+	  Don't compare booleans for equality to TRUE and FALSE
+	  TRUE is 1, but every other non-zero value is also considered true. Comparing
+	  for equality with TRUE would only consider 1 but not the others.
+	  Also normalize booleans in a few places.
+
+2014-11-30 23:50:53 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstelements_private.c:
+	  plugins: fix build on windows
+	  gstelements_private.c: In function 'gst_writev_buffers':
+	  gstelements_private.c:236:51: error: 'EWOULDBLOCK' undeclared
+
+2014-11-28 15:09:16 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfilesink.c:
+	  filesink: use writev() in ::render() to write out memories without merging them
+
+2014-11-28 15:04:27 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfilesink.c:
+	* plugins/elements/gstfilesink.h:
+	  filesink: implement ::render_list() function that uses writev()
+
+2014-11-28 14:47:20 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfdsink.c:
+	  fdsink: use writev() in ::render() to write out memories without merging them
+
+2014-11-28 14:39:33 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfdsink.c:
+	* plugins/elements/gstfdsink.h:
+	  fdsink: implement ::render_list() using writev()
+	  Write out multiple buffers possibly containing multiple
+	  memories with one writev() call, without merging the
+	  buffer memories first, like ::render() does currently.
+
+2014-11-28 14:38:30 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	* plugins/elements/gstelements_private.c:
+	* plugins/elements/gstelements_private.h:
+	  plugins: add helper function for writing buffers out with writev()
+
 2014-11-28 14:15:30 -0300  Thiago Santos <thiago.sousa.santos@collabora.com>
 
 	* libs/gst/base/gstbaseparse.c:
@@ -45,6 +5422,42 @@
 	  If we get a downstream event we want to send it to a random SINK pad
 	  (and vice-versa).
 
+2014-11-27 18:00:57 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Compare correct caps variable against NULL before comparing caps
+
+2014-11-27 17:10:19 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From f32cfcd to ef1ffdc
+
+2014-11-10 09:58:47 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* scripts/gst-uninstalled:
+	  scripts:uninstalled: Make sur the GES TestManager is registered
+	  So that whenever user work with GstValidate they can run GES tests
+	  within the gst-uninstalled environment
+
+2014-11-26 21:48:05 +0530  Arun Raghavan <git@arunraghavan.net>
+
+	* common:
+	* m4/ax_pthread.m4:
+	  build: Update ax_pthread.m4 and move it to common
+	  Has some updates for Clang support (might not work with newer Clang
+	  properly, yet), AIX support, and some misc fixes.
+
+2014-11-25 17:46:12 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/controller/gsttriggercontrolsource.c:
+	  triggercontrolsource: Fix short description for the docs
+
+2014-11-25 09:39:40 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/gst/running.xml:
+	  docs: add GST_GL_* environment variables to 'Running GStreamer' section
+
 2014-11-23 05:45:24 -0300  Thiago Santos <thiagoss@osg.samsung.com>
 
 	* plugins/elements/gstqueue2.c:
@@ -66,6 +5479,25 @@
 	  buffering should stop. Otherwise we are only stopping buffering when the
 	  queue gets completely full.
 
+2014-11-20 21:33:59 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Fix caps equality check
+	  Instead of checking if our outcaps are equivalent to the previous incaps, and
+	  if that is the case not setting any caps on the pad... compare against our
+	  previous outcaps because that's what we care about.
+	  Fixes some cases where the outcaps became equivalent to the previous incaps,
+	  but the previous outcaps were different and we were then sending buffers
+	  downstream that were corresponding to the caps we forgot to set on the pad.
+	  Resulting in crashes or image corruption.
+
+2014-11-20 13:33:12 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  common: update for bison version check patch
+	  Fix configure check with bison development version.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728946
+
 2014-11-20 13:34:32 +0100  Wim Taymans <wtaymans@redhat.com>
 
 	* gst/gststructure.c:
@@ -85,6 +5517,34 @@
 	  such as a GstCaps.
 	  We now assume dropped queries did not succeed. Dropped events
 	  and buffers are still deemed a success.
+	  Added back after previous revert, as it's been double checked.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=740003
+
+2014-11-12 13:55:23 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/gstpad.c:
+	  Revert "pad: fail dropped queries"
+	  This was pushed by mistake along with an unrelated patch.
+	  This reverts commit c7103ce4b8c1da7dcfbcf2ec83a42a376fb896e1.
+
+2014-05-13 11:18:08 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: allow skipping more data than we currently have
+	  This can be useful for skipping large unwanted data, such as
+	  large album art, when we know the size of it from a metadata
+	  header.
+
+2014-11-03 17:46:57 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/gstpad.c:
+	  pad: fail dropped queries
+	  Previously, dropping a query from a pad probe would deem the
+	  query succeeded, and the caller might then assume the query's
+	  results are valid, and thus dereference an invalid object
+	  such as a GstCaps.
+	  We now assume dropped queries did not succeed. Dropped events
+	  and buffers are still deemed a success.
 
 2014-11-12 11:30:51 +0100  Haakon Sporsheim <haakon.sporsheim@gmail.com>
 
@@ -99,62 +5559,187 @@
 	  both paused and stopped.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=740001
 
-=== release 1.4.4 ===
+2014-11-10 10:01:02 +0100  Sebastian Dröge <sebastian@centricular.com>
 
-2014-11-06 12:51:42 +0100  Sebastian Dröge <sebastian@centricular.com>
+	* tests/check/gst/gstobject.c:
+	  gstobject: Don't check booleans for equality in the unit test
+	  Every value other than 0/FALSE is TRUE, == TRUE will only check for 1.
 
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
-	* docs/plugins/inspect/plugin-coreelements.xml:
-	* gstreamer.doap:
-	* win32/common/config.h:
-	* win32/common/gstversion.h:
-	  Release 1.4.4
+2014-11-05 11:50:47 +0100  Jan Alexander Steffens (heftig) <jsteffens@make.tv>
 
-2014-11-06 12:25:58 +0100  Sebastian Dröge <sebastian@centricular.com>
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstobject.c:
+	* gst/gstobject.h:
+	* tests/check/gst/gstobject.c:
+	* win32/common/libgstreamer.def:
+	  gstobject: Add gst_object_has_parent()
+	  Adds gst_object_has_parent, which works like gst_object_has_ancestor
+	  but does not ascend further.
+	  API: gst_object_has_parent()
 
-	* 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
+2014-11-09 10:37:42 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Don't bother the subclass with setting the same caps multiple times
+
+2014-11-09 10:32:18 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Don't bother the subclass with setting the same caps multiple times
+
+2014-11-09 10:29:57 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Don't bother the subclass with setting the same caps multiple times
+
+2014-11-07 08:22:02 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gststructure.c:
+	  structure: remove conditional for G_VALUE_COLLECT_INIT
+	  This API is in glib since 2.24 and we currently require 2.32 and already use
+	  this unconditionally elsewhere.
+
+2014-11-05 19:09:39 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstpreset.c:
+	  preset: remove commented code
+	  The GQuark was never used.
+
+2014-11-07 11:34:08 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/Makefile.am:
+	* pkgconfig/gstreamer.pc.in:
+	  gstconfig: Put gstconfig.h into $(libdir)/gstreamer-1.0/include
+	  It's architecture dependent and should not be placed into the include
+	  directory as the assumption is that all those headers are architecture
+	  independent.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739767
+
+2014-11-07 10:56:42 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gsturi.c:
+	  uri: Fix gobject-introspection warnings
+	  gsturi.c:997: Error: Gst: Skipping invalid GTK-Doc comment block:
+	  /** private GstUri functions **/
+	  ^
+	  gsturi.c:1179: Error: Gst: Skipping invalid GTK-Doc comment block:
+	  /** RFC 3986 functions **/
+	  ^
+
+2014-10-24 21:25:54 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/base/gstdataqueue.c:
+	  dataqueue: Fix gst_data_queue_new() description.
+	  Reword the function docs, which haven't made any sense since
+	  gst_data_queue_new_full() was removed a few years ago.
+
+2014-11-03 18:27:21 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Answer the query position when receiving it from upstream
+	  Currently we are just returning FALSE, but we do have the information
+	  we should just answer the query the same way as when answering through
+	  the GstElement.query vmethod default implementation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739580
+
+2014-10-22 14:07:09 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstcapsfilter.c:
+	* plugins/elements/gstcapsfilter.h:
+	* tests/check/elements/capsfilter.c:
+	  capsfilter: Add an optional delayed caps change mode
+	  In this mode we accept previously set filter caps until
+	  upstream renegotiates to something that is compatible
+	  to the current filter caps.
+	  This allows dynamic caps changes in the pipeline even
+	  if there is a queue between any conversion element
+	  and the capsfilter. Without this we would get not-negotiated
+	  errors if timing is bad.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739002
+
+2014-11-02 20:16:53 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gsttoc.c:
+	  toc: minor code clean-up
+	  And get rid of g_list_prepend/g_list_reverse
+	  anti-pattern while we're at it.
+
+2014-11-02 18:51:08 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/gst.c:
+	  gst: ensure GStreamer initialization debug message is displayed
+	  The GST_INFO ("initialized GStreamer succesfully") is currently at the end of
+	  gst_init_check which isn't guaranteed to be run since GStreamer can be
+	  initialized by using init_pre and init_post directly from GOptionContext like
+	  gst-launch does. Ensure this message is displayed by moving it to init_post.
+
+2014-11-01 19:56:41 +0000  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* gst/gstbus.c:
+	* libs/gst/base/gstadapter.c:
+	  doc: Do not use deprecated gtk-doc 'Rename to' tag
+	  GObject introspection GTK-Doc tag "Rename to" has been deprecated, changing to
+	  rename-to annotation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739514
+
+2014-11-01 22:30:30 +0100  Aurélien Zanelli <aurelien.zanelli@darkosphere.fr>
+
+	* tools/gst-inspect.c:
+	  gst-inspect: add G_PARAM_DEPRECATED to known flags
+	  Display 'deprecated' instead of flag value when using G_PARAM_DEPRECATED
+	  in element properties.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739518
+
+2014-10-31 16:10:01 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/tools/gstinspect.c:
+	  tests: refactor tools check a little
+	  Use an array of constant strings so if arguments get
+	  removed from it they are not considered leaked, and
+	  valgrind is happy. Still some stuff leaking in GLib
+	  though.
+
+2014-10-30 23:14:59 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/bytereader.c:
+	  tests: fix out-of-bounds memory access in bytereader unit test
+	  Caught by -fsanitize=address / libasan.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739431
+
+2014-10-28 19:16:52 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gst.c:
+	  gst: make gst_init() thread-safe
+	  Because we can, and there isn't really any
+	  reason not to do so.
+
+2014-10-28 09:28:28 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/fdsrc.c:
+	  tests: fdsrc: don't ignore return value of write()
+	  Causes compiler warnings on some systems.
+
+2014-10-28 00:04:05 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/fdsrc.c:
+	  tests: fix fdsrc test corner case
+	  Make pipe socket non-blocking, so we don't
+	  end up being blocked in a write on the pipe
+	  while the src is eos and not reading data
+	  any more, and thus we never unblock and never
+	  notice that we're done. This would happen
+	  quite reliably on the rpi.
+
+2014-10-27 17:56:15 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From 84d06cd to 7bb2bce
+
+2014-10-25 17:15:42 +0530  Arun Raghavan <arun@accosted.net>
+
+	* gst/gstdebugutils.c:
+	  debugutils: Trivial typo fix
 
 2014-10-24 12:51:07 +0100  Tim-Philipp Müller <tim@centricular.com>
 
@@ -166,6 +5751,68 @@
 	  test_reuse_without_decoders unit test in -base
 	  sometimes, esp. on slower machines.
 
+2014-10-22 18:25:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstcontroller.def:
+	  win32: update .def for new _get_type() function for GstControlPoint
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737616
+
+2014-09-29 21:10:14 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	  timedvaluecontrolsource: Add some signals about values changes
+	  In order for user to be able to track changes in the value set in
+	  GstTimedValueControlSource the following signals have been added:
+	  * value-added
+	  * value-removed
+	  * value-changed
+	  To be able to use a GstControlPoint to be marshalled into the signals,
+	  the GstControlPoint structure is now registerd as a GBoxed type.
+	  New API:
+	  ~~~~~~~
+	  * GstTimedValueControlSource::value-added
+	  * GstTimedValueControlSource::value-removed
+	  * GstTimedValueControlSource::value-added
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737616
+
+2014-10-21 13:01:00 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From a8c8939 to 84d06cd
+
+2014-10-21 12:18:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstmessage.c:
+	  message: remove duplicate gst_message_get_type() in init
+	  Spotted by: Jan Steffens
+
+2014-10-21 12:57:45 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From 6e75498 to a8c8939
+
+2014-10-20 16:39:38 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* plugins/elements/gstidentity.c:
+	  identity: include the actual delta in the message
+	  Including the actual delta in the message makes it easy to see, if the new
+	  buffer is behind or ahead and how much.
+
+2014-10-18 18:43:43 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstvalue.c:
+	  gstvalue: Tidy initialisation
+	  Use some macros to make our value functions setup a bit
+	  tidier, and micro-optimise a few reallocs by setting an
+	  initial size for the global type arrays.
+
+2014-10-18 17:27:04 +1100  Jan Schmidt <jan@centricular.com>
+
+	* tools/gst-indent:
+	  gst-indent: Run indent twice. Once is not idempotent, twice seems to be.
+
 2014-10-16 10:13:14 +0400  Andrei Sarakeev <sarakusha@gmail.com>
 
 	* plugins/elements/gstmultiqueue.c:
@@ -173,6 +5820,55 @@
 	  Otherwise we might have unlinked streams waiting.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=738198
 
+2014-10-17 12:41:04 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gsttypefind.c:
+	  typefind: simplify registration code
+	  Remove a useless assert (we just instantiated this type). Drop the free'ing of
+	  the extension array. As we just created the instance this is always NULL.
+
+2014-10-16 10:55:36 +0200  Felix Schwarz <felix.schwarz@oss.schwarz.eu>
+
+	* docs/pwg/advanced-allocation.xml:
+	* docs/pwg/advanced-clock.xml:
+	* docs/pwg/advanced-events.xml:
+	* docs/pwg/advanced-qos.xml:
+	* docs/pwg/advanced-tagging.xml:
+	  docs: pwd: fix typos
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738612
+
+2014-10-11 19:28:21 +0200  Linus Svensson <linusp.svensson@gmail.com>
+
+	* tests/check/gst/gstbus.c:
+	  tests: Add a test for removing a bus watch
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735195
+
+2014-08-19 23:28:52 +0200  Linus Svensson <linusp.svensson@gmail.com>
+
+	* gst/gstbus.c:
+	* gst/gstbus.h:
+	* tests/check/gst/gstbus.c:
+	* win32/common/libgstreamer.def:
+	  bus: Add a function to remove a bus watch
+	  If a bus watch is added to the non default main context it's not
+	  possible to remove it using g_source_remove().
+	  Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=735195
+
+2014-10-08 22:51:56 +0530  Arun Raghavan <arun@accosted.net>
+
+	* gst/gstevent.h:
+	  docs: Update GstQOSType documentation a bit
+	  Correction for who is producing data too fast, and some other minor
+	  clarifications.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738166
+
+2014-10-08 16:03:20 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* docs/pwg/advanced-allocation.xml:
+	* docs/pwg/advanced-qos.xml:
+	  docs: pwg: fix two typos
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738153
+
 2014-10-08 15:37:37 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
 
 	* docs/pwg/advanced-negotiation.xml:
@@ -183,26 +5879,6 @@
 	  source pad.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=738153
 
-2014-10-06 13:38:21 +0200  Nicolas Huet <nicolas.huet@parrot.com>
-
-	* gst/gstsystemclock.c:
-	  systemclock: fix multi-thread entry status issue
-	  Running two threads, one executing the timer and one unscheduling it, the
-	  unscheduled status set by the second thread is sometimes overwritten by the
-	  first one.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=737999
-
-2014-09-25 16:21:51 +0100  Tim-Philipp Müller <tim@centricular.com>
-
-	* tests/check/libs/baseparse.c:
-	  tests: fix caps leak in baseparse unit test
-
-2014-10-03 13:14:25 +0200  Matej Knopp <matej.knopp@gmail.com>
-
-	* tests/check/libs/baseparse.c:
-	  tests: baseparse: set_sink_caps vfunc should't take ownership of the caps
-	  https://bugzilla.gnome.org/show_bug.cgi?id=737762
-
 2014-10-08 09:37:41 -0700  Aleix Conchillo Flaqué <aleix@oblong.com>
 
 	* plugins/elements/gstmultiqueue.c:
@@ -212,17 +5888,89 @@
 	  pushing and acquire it again afterward.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=737794
 
+2014-10-08 01:33:51 +1100  Jan Schmidt <jan@centricular.com>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: Use GST_PTR_FORMAT in debug to output buffer details
+	  Use %GST_PTR_FORMAT instead of %p in debug output so all the buffer
+	  details are output
+
+2014-10-06 13:38:21 +0200  Nicolas Huet <nicolas.huet@parrot.com>
+
+	* gst/gstsystemclock.c:
+	  systemclock: fix multi-thread entry status issue
+	  Running two threads, one executing the timer and one unscheduling it, the
+	  unscheduled status set by the second thread is sometimes overwritten by the
+	  first one.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737999
+
+2014-10-03 14:04:58 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: fix compilation
+
+2014-10-03 14:44:48 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: extract some common code into helpers
+
+2014-10-03 14:01:59 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* plugins/elements/gstinputselector.c:
+	  input-selector: small code cleanups
+	  Rename TIMESTAMP -> PTS. Move a var down to the scope where it is used. Use
+	  g_queue_free_full().
+
+2014-10-03 13:47:42 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* plugins/elements/gstinputselector.c:
+	* plugins/elements/gstinputselector.h:
+	  inputselector: fix printf format
+	  The padcount is uint. Also add comments to the instance vars.
+
+2014-10-02 03:30:24 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: don't leak caps in gst_base_parse_process_streamheader
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737762
+
+2014-10-03 13:14:25 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* tests/check/libs/baseparse.c:
+	  tests: baseparse: set_sink_caps vfunc should't take ownership of the caps
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737762
+
+2014-10-03 09:57:37 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* plugins/elements/gstfakesrc.c:
+	  fakesrc: mark the pattern property as unused
+	  Revert the previous commit which removes the pattern property of fakesrc because
+	  doing so will break ABI. Bringing the property back but marking it as unused
+	  in the property string.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737683
+
+2014-10-03 09:01:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  Revert "baseparse: don't leak caps in gst_base_parse_process_streamheader"
+	  This reverts commit 5e8b4bf085180f7a4c7ae6ec0f525baeaedd4df8.
+	  This causes refcounting criticals in the baseparse unit test.
+
+2014-10-02 13:45:34 +0100  Luis de Bethencourt <luis.bg@samsung.com>
+
+	* plugins/elements/gstfakesrc.c:
+	* plugins/elements/gstfakesrc.h:
+	  fakesrc: removing unused pattern option
+	  Eventhough the "pattern" property of fakesrc can be set, it is never used. The
+	  only pattern supported is the default 0x00 -> 0xff, and if a pattern is set by
+	  the user it is ignored. Removing the unused property and variable.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737683
+
 2014-10-02 14:55:22 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* plugins/elements/gstqueue.c:
 	  queue: Add missing break in switch
 
-2014-09-27 20:10:34 +0200  Matej Knopp <matej.knopp@gmail.com>
-
-	* plugins/elements/gstmultiqueue.c:
-	  multiqueue: update segment position on GAP events to calculate levels properly
-	  https://bugzilla.gnome.org/show_bug.cgi?id=737498
-
 2014-10-02 11:00:32 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* plugins/elements/gstqueue.c:
@@ -235,6 +5983,18 @@
 	  queue2: update segment position on GAP events to calculate levels properly
 	  https://bugzilla.gnome.org/show_bug.cgi?id=737498
 
+2014-09-27 20:10:34 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: update segment position on GAP events to calculate levels properly
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737498
+
+2014-10-02 03:30:24 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: don't leak caps in gst_base_parse_process_streamheader
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737762
+
 2014-10-02 10:13:28 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* plugins/elements/gstcapsfilter.c:
@@ -243,75 +6003,159 @@
 	  configured caps on the srcpad.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=737735
 
+2014-09-29 17:48:29 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gsturi.c:
+	  uri: Don't unconditionally use g_list_copy_deep()
+	  We don't depend on GLib 2.34 yet and just for this seems a bit useless.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737584
+
+2014-09-29 16:22:47 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* gst/gsturi.c:
+	  uri: Include our own BSD licensed copy of strcasestr() for Windows and others
+
+2014-09-29 15:54:37 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gsturi.c:
+	  uri: Fix compiler warnings with gcc
+	  These are actually not true.
+	  gsturi.c: In function '_gst_uri_string_to_table.constprop':
+	  gsturi.c:1316:27: error: 'pct_kv_sep' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+	  for (next_sep = strcasestr (value, pct_kv_sep); next_sep;
+	  ^
+	  gsturi.c:1283:24: error: 'pct_part_sep' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+	  next_sep = strcasestr (next_sep + 1, pct_part_sep)) {
+	  ^
+
+2014-09-29 12:19:35 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gsturi.c:
+	  uri: Fix memory leak in gst_uri_join()
+	  The merged path segments are a deep-copied list and we need to free the
+	  contained strings too instead of just the list nodes themselves.
+
+2014-07-31 22:18:53 +0100  David Waring <david.waring@rd.bbc.co.uk>
+
+	* docs/gst/gstreamer-docs.sgml:
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gsturi.c:
+	* gst/gsturi.h:
+	* tests/check/gst/gsturi.c:
+	* win32/common/libgstreamer.def:
+	  GstUri: Add GstUri miniobject to handle URIs in an RFC 3986 compliant fashion
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725221
+
+2014-09-27 13:57:42 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* scripts/gst-uninstalled:
+	  scripts: add gst-rpicamsrc to gst-uninstalled
+
+2014-09-25 21:21:09 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstelement.c:
+	* gst/gsterror.c:
+	* gst/gstevent.c:
+	* gst/gstregistry.c:
+	* gst/gststructure.c:
+	* gst/gsttaglist.c:
+	* gst/gstvalue.c:
+	* libs/gst/base/gstbasesink.c:
+	* libs/gst/base/gstbasesrc.c:
+	* libs/gst/check/gstcheck.c:
+	* plugins/elements/gstfilesrc.c:
+	* tests/check/tools/gstinspect.c:
+	* tools/gst-inspect.c:
+	  fixme: bump leftover 0.11 fixme comments
+
+2014-09-25 21:04:23 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstevent.c:
+	  event: 'newsegment' to 'segment' in the docs
+	  Brings the api-docs in sync with the 1.0 api rename.
+
+2014-09-25 20:23:31 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: move the quick return up
+	  Don't assign local vars if we skip anyway. Add logging for failure conditio
+
+2014-09-25 19:01:52 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	* common:
+	  tests: parallelise 'make valgrind'
+	  Use $(MAKE) instead of 'make' inside the Makefile,
+	  otherwise the make will run as if -j1 had been
+	  specified and complain about the job server not
+	  being available, and with $(MAKE) in inherits the
+	  parent make's settings it seems.
+	  Upgrade common submodule for parallel check-valgrind.
+	  Let this settle a bit before upgrading the other modules.
+
+2014-09-25 18:57:32 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstbase.def:
+	  win32: update .def file
+	  It's sorted. If it's unsorted, make check-exports fails.
+
+2014-09-25 18:55:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  info: remove confusing warning about running under valgrind
+	  We're not actually doing anything differently anywhere when
+	  we detect that we're running under valgrind, so let's not
+	  print that confusing message that makes people wonder how
+	  they can switch it off so they can valgrind the normal
+	  code paths. Seeing that we're not doing that nor have done
+	  so in the last 10 years we might just as well remove the
+	  entire check actually.
+
+2014-09-25 16:21:51 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/baseparse.c:
+	  tests: fix caps leak in baseparse unit test
+
+2014-09-25 14:54:23 +0200  Jonas Holmberg <jonashg@axis.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstflowcombiner.c:
+	* libs/gst/base/gstflowcombiner.h:
+	* tests/check/libs/flowcombiner.c:
+	* win32/common/libgstbase.def:
+	  flowcombiner: add a gst_flow_combiner_clear() method
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737359
+	  API: gst_flow_combiner_clear()
+
 2014-09-24 10:11:54 +0200  Thibault Saunier <tsaunier@gnome.org>
 
 	* scripts/gst-uninstalled:
 	  scripts: Handle gst-python in gst-uninstalled
 	  https://bugzilla.gnome.org/show_bug.cgi?id=709082
 
-=== release 1.4.3 ===
-
-2014-09-24 12:19:55 +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.4.3
-
-2014-09-24 11:15: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
-
 2014-06-03 14:23:30 +0200  Thibault Saunier <tsaunier@gnome.org>
 
 	* plugins/elements/gstcapsfilter.c:
 	  capsfilter: Remove EOS event from pending_event list on FLUSH_STOP
 	  https://bugzilla.gnome.org/show_bug.cgi?id=709868
 
+2014-09-22 14:27:05 +0100  William Manley <will@williammanley.net>
+
+	* gst/gstbuffer.c:
+	  docs: Fix GstBuffer typo "memory bock" -> "memory block"
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737117
+
+2014-09-22 17:27:31 +0100  William Manley <will@williammanley.net>
+
+	* gst/gstbuffer.c:
+	  docs: Improve gst_buffer_get_meta() to clear up confusion
+	  I was confused by the existence of `gst_buffer_get_meta` as it suggested
+	  to me that you should only attach one of any type of GstMeta to a buffer.
+	  It's perfectly fine to attach multiple from a single API so I'm
+	  documenting that here.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=737129
+
 2014-09-22 19:05:32 +0200  Marcin Kolny <marcin.kolny@flytronic.pl>
 
 	* gst/gstdatetime.h:
@@ -324,6 +6168,13 @@
 	  queue: Do not forget to release the QUEUE_LOCK in the out_flow_error path
 	  Avoiding deadlocks!
 
+2014-09-23 12:53:18 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* libs/gst/base/gstbasesrc.h:
+	  docs: fix a small contradition in the docs
+	  The vmethod get_size() shall return the size in 'format' as configured by
+	  _set_format().
+
 2014-09-22 09:33:04 +0200  Thibault Saunier <tsaunier@gnome.org>
 
 	* plugins/elements/gstqueue.c:
@@ -334,11 +6185,6 @@
 	  someone connected on the bus (sync) tries to DOT the pipeline.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=737102
 
-2014-08-13 14:02:47 +0200  Thibault Saunier <tsaunier@gnome.org>
-
-	* scripts/git-update.sh:
-	  script:udpate: Try to rebase local changes when updating
-
 2014-09-19 12:02:46 -0300  Thiago Santos <thiagoss@osg.samsung.com>
 
 	* plugins/elements/gstqueue2.c:
@@ -353,62 +6199,13 @@
 	  messages at the same time.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=736969
 
-=== release 1.4.2 ===
+2014-09-19 09:42:10 +0530  Ravi Kiran K N <ravi.kiran@samsung.com>
 
-2014-09-19 14:19:08 +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.4.2
-
-2014-09-19 10:45: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:
-	  Update .po files
+	* gst/gsturi.c:
+	  gsturi: Remove unnecessary code
+	  gst_uri_handler_set_uri() function has new_uri, location and colon
+	  are not necessary, they can be removed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736877
 
 2014-09-19 00:33:58 +0100  Tim-Philipp Müller <tim@centricular.com>
 
@@ -417,24 +6214,40 @@
 	  docs: pwg: fix some links to the API docs
 	  https://bugzilla.gnome.org/show_bug.cgi?id=736762
 
+2014-09-18 18:55:47 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstfilesrc.c:
+	  filesrc: remove FIXME
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735878
+
+2014-09-17 21:49:18 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst/gst.c:
+	  gst: Fix spelling error
+	  Thank to Adrian Owen for reporting this error.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736839
+
 2014-09-17 17:17:10 +0200  Ognyan Tonchev <ognyan@axis.com>
 
 	* plugins/elements/gsttypefindelement.c:
 	  typefindelement: do not leak sticky events in flush_stop
 	  https://bugzilla.gnome.org/show_bug.cgi?id=736813
 
+2014-09-12 14:42:23 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstinfo.c:
+	  info: avoid global variable for log_file
+	  Use user_data to pass the log_file handle to the logger-function.
+	  If one wants to change the log target (e.g. GST_DEBUG_FILE), simply call
+	  gst_debug_remove_log_function() and re-add the handler with the new log-target
+	  using gst_debug_add_log_function ().
+
 2014-09-16 13:48:18 +0200  Ognyan Tonchev <ognyan@axis.com>
 
 	* gst/gstevent.c:
 	  event: add annotations to gst_event_parse_toc_select()
 	  https://bugzilla.gnome.org/show_bug.cgi?id=736739
 
-2014-09-16 12:17:48 +0200  Ognyan Tonchev <ognyan@axis.com>
-
-	* gst/gstquery.c:
-	  query: Add annotations to gst_query_add_allocation_pool()
-	  https://bugzilla.gnome.org/show_bug.cgi?id=736736
-
 2014-09-11 18:01:58 -0300  Thiago Santos <thiagoss@osg.samsung.com>
 
 	* plugins/elements/gstmultiqueue.c:
@@ -448,6 +6261,17 @@
 	  messages at the same time.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=736295
 
+2014-09-16 16:07:40 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* docs/pwg/other-base.xml:
+	  docs: fix typo
+
+2014-09-16 12:17:48 +0200  Ognyan Tonchev <ognyan@axis.com>
+
+	* gst/gstquery.c:
+	  query: Add annotations to gst_query_add_allocation_pool()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736736
+
 2014-09-15 16:38:17 +0200  Aurélien Zanelli <aurelien.zanelli@parrot.com>
 
 	* libs/gst/base/gstbasesrc.c:
@@ -461,6 +6285,55 @@
 	  check: Use the name parameter of gst_check_setup_src_pad_by_name() and the sink variant
 	  This was hardcoded to "sink" / "src" by accident in previous refactoring.
 
+2014-09-13 20:12:52 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstcapsfilter.c:
+	* plugins/elements/gstdownloadbuffer.c:
+	* plugins/elements/gstfakesink.c:
+	* plugins/elements/gstinputselector.c:
+	* plugins/elements/gstmultiqueue.c:
+	* plugins/elements/gstoutputselector.c:
+	* plugins/elements/gstqueue.c:
+	* plugins/elements/gstqueue2.c:
+	* plugins/elements/gstvalve.c:
+	  coreelements: mark properties with MUTABLE_PLAYING
+
+2014-09-11 15:52:32 +0200  Thibault Saunier <tsaunier@gnome.org>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/check/Makefile.am:
+	* libs/gst/check/gstcheck.c:
+	* libs/gst/check/gstcheck.h:
+	  check: Add a function to check destruction of objects
+	  Add a method letting people to ensure that unreffing one object
+	  leads to its destruction, and possibly the destruction of more object
+	  (think destruction of a GstBin etc...).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736477
+
+2014-09-12 14:10:40 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-inspect.c:
+	  tools: gst-inspect: don't list pad functions
+	  Don't print all the different pad functions, it's just
+	  confusing and no one has ever needed to know this for
+	  anything ever anyway, it's just useless information.
+	  Besides, we also label the default implementations as
+	  'custom' implementations (the code that tries to
+	  prevent that doesn't actually work it seems).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736377
+
+2014-09-12 15:22:19 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Make sure the buffer to get/pull_range() has at least the requested size
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735861
+
+2014-09-05 18:36:02 +0000  Tiago <tiagokatcipis@gmail.com>
+
+	* libs/gst/check/gstcheck.c:
+	  check: Adding documentation to the gst_check_setup_sink_pad_by_name function
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734190
+
 2014-09-10 14:53:00 +0200  Ognyan Tonchev <ognyan@axis.com>
 
 	* gst/gstquery.c:
@@ -473,6 +6346,38 @@
 	  valve: fix typo in description
 	  https://bugzilla.gnome.org/show_bug.cgi?id=736455
 
+2014-09-09 20:43:02 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbaseparse.h:
+	  baseparse: minor docs fix
+
+2014-09-03 17:38:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstdevicemonitor.c:
+	  devicemonitor: fix typo in sample code in docs
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735975
+
+2014-08-25 11:34:48 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* tests/check/gst/gstpad.c:
+	  tests: add flush-stop on inactive pad test
+	  Check that pushing flush-stop on an inactive pad does not clear the
+	  flushing flag.
+
+2014-08-21 15:49:17 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstpad.c:
+	  pad: don't accept flush-stop on inactive pads
+	  Inactive pads should at all times have the flushing flag set. This means
+	  that when we get a flush-stop on an inactive pad we must ignore it.
+	  On sinkpads, make this more explicit. We used to not clear the flush
+	  flag but remove the events and then return an error because the flushing
+	  flag was set. Now just simply refuse the event without doing anything.
+	  On srcpads, check that we are trying to push a flush-stop event and
+	  refuse it. We would allow this and mark the srcpad as non-flushing
+	  anymore.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=735357
+
 2014-08-27 17:06:57 +0530  Ravi Kiran K N <ravi.kiran@samsung.com>
 
 	* plugins/elements/gstoutputselector.c:
@@ -480,11 +6385,137 @@
 	  Fixes tests/icles/output-selector-test
 	  https://bugzilla.gnome.org/show_bug.cgi?id=729811
 
-2014-09-03 17:38:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+2014-08-28 17:24:56 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
 
-	* gst/gstdevicemonitor.c:
-	  devicemonitor: fix typo in sample code in docs
-	  https://bugzilla.gnome.org/show_bug.cgi?id=735975
+	* docs/manual/advanced-dataaccess.xml:
+	  manual: fix typo in advanced-dataaccess.xml
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735609
+
+2014-08-26 20:14:40 +0200  Arnaud Vrac <avrac@freebox.fr>
+
+	* gst/gstbuffer.c:
+	  buffer: do not touch memory tag flag when copying buffer flags
+	  The tag memory flag will be set later if the memory is also copied. This
+	  patch avoids buffers being freed needlessly in bufferpools.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735574
+
+2014-07-15 16:06:49 +0200  Linus Svensson <linusp.svensson@gmail.com>
+
+	* gst/gstbus.c:
+	  bus: gst_bus_add_watch() can return 0 on error
+	  Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=735195
+
+2014-08-25 13:44:30 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: handle streamheaders by prepending them to the stream
+	  Add a first_buffer boolean state flag to have baseparse do actions
+	  before pushing data. This is used to check the caps for streamheader
+	  buffers that are prepended to the stream, but only if the first buffer
+	  isn't already marked with the _HEADER flag. In this case, it is assumed
+	  that the _HEADER marked buffer is the same as the streamheader.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735070
+
+2014-08-27 11:01:01 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstconcat.c:
+	  concat: Allow seeking on the currently playing stream
+	  This is consistent with the stream time reporting.
+
+2014-08-23 12:24:27 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstpad.h:
+	  pad: add g-i 'transfer full' annotations to chain and chain_list functions
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735210
+
+2014-08-22 10:32:38 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstpad.h:
+	  pad: annotate GstPadEventFunction event with 'transfer full'
+	  The callback is supposed to take ownership of the event so
+	  best to be explicit about it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=735210
+
+2014-08-20 12:55:51 +0200  Linus Svensson <linussn@axis.com>
+
+	* tests/check/elements/queue.c:
+	  tests: add test that triggers deadlock in state change of queue
+	  When receiving FLASH_STOP in a state transition to READY, a queue
+	  element can end up with an active task that will never end.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734688
+
+2014-08-21 14:02:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstqueue.c:
+	  queue: fix race when flush-stop event comes in whilst shutting down
+	  Don't re-start the queue push task on the source pad when a
+	  flush-stop event comes in and we're in the process of shutting
+	  down, otherwise that task will never be stopped again.
+	  When the element is set to READY state, the pads get de-activated.
+	  The source pad gets deactivated before the queue's own activate_mode
+	  function on the source pads gets called (which will stop the thread),
+	  so checking whether the pad is active before re-starting the task on
+	  receiving flush-stop should be fine. The problem would happen when the
+	  flush-stop handler was called just after the queue's activate mode
+	  function had stopped the task.
+	  Spotted and debugged by Linus Svensson <linux.svensson@axis.com>
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734688
+
+2014-08-06 14:01:09 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstbytereader.c:
+	* libs/gst/base/gstbytereader.h:
+	* tests/check/libs/bytereader.c:
+	* win32/common/libgstbase.def:
+	  bytereader: add gst_byte_reader_peek_sub_reader() and _get_sub_reader()
+	  Adds API to get or peek a sub-reader of a certain size from
+	  a given byte reader. This is useful when parsing nested chunks,
+	  one can easily get a byte reader for a sub-chunk and make
+	  sure one never reads beyond the sub-chunk boundary.
+	  API: gst_byte_reader_peek_sub_reader()
+	  API: gst_byte_reader_get_sub_reader()
+
+2014-07-25 16:39:40 +0200  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  docs: make explicit that the caps passed to gst_base_src_set_caps() are 'tranfer none'
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733741
+
+2014-08-14 18:53:40 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: always proxy caps query
+	  Otherwise it would only be proxied for the active pad which can lead
+	  upstream to use an incompatible caps for the downstream element.
+	  Even if a reconfigure event is sent upstream when the pad is activated, this
+	  will save the caps reconfiguration if it is already using an acceptable caps.
+
+2014-08-14 14:37:56 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstdataqueue.h:
+	  base: and fix build with new g-i again
+
+2014-08-14 14:25:06 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstdataqueue.h:
+	  base: remove g-i annotation that makes older g-ir-scanner crash
+	  Just remove one skip annotation that causes this:
+	  ** (g-ir-compiler:12458): ERROR **: Caught NULL node, parent=empty
+	  with older g-i versions such as 1.32.1.
+
+2014-08-13 14:12:00 +0200  Philippe Normand <philn@igalia.com>
+
+	* gst/gstbus.c:
+	  bus: destroy signal watch from the context it was mapped to
+	  Don't rely on g_source_remove() because it operates on the main
+	  context. If a signal watch was added to a new thread-default context
+	  g_source_remove() would have no effect. So simply use
+	  g_source_destroy() to avoid this problem.
+	  Additionally the source_id was removed from GstBusPrivate because it
+	  was redundant with the signal watch GSource also stored in that
+	  structure.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734716
 
 2014-08-07 12:18:04 +0200  Thibault Saunier <thibault.saunier@collabora.com>
 
@@ -518,110 +6549,6 @@
 	  taking the maximum buffering of the single queue as the reference point.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=734412
 
-2014-08-26 20:14:40 +0200  Arnaud Vrac <avrac@freebox.fr>
-
-	* gst/gstbuffer.c:
-	  buffer: do not touch memory tag flag when copying buffer flags
-	  The tag memory flag will be set later if the memory is also copied. This
-	  patch avoids buffers being freed needlessly in bufferpools.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=735574
-
-=== release 1.4.1 ===
-
-2014-08-27 15:03:36 +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.4.1
-
-2014-08-27 14:22:21 +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
-
-2014-08-21 14:02:16 +0100  Tim-Philipp Müller <tim@centricular.com>
-
-	* plugins/elements/gstqueue.c:
-	  queue: fix race when flush-stop event comes in whilst shutting down
-	  Don't re-start the queue push task on the source pad when a
-	  flush-stop event comes in and we're in the process of shutting
-	  down, otherwise that task will never be stopped again.
-	  When the element is set to READY state, the pads get de-activated.
-	  The source pad gets deactivated before the queue's own activate_mode
-	  function on the source pads gets called (which will stop the thread),
-	  so checking whether the pad is active before re-starting the task on
-	  receiving flush-stop should be fine. The problem would happen when the
-	  flush-stop handler was called just after the queue's activate mode
-	  function had stopped the task.
-	  Spotted and debugged by Linus Svensson <linux.svensson@axis.com>
-	  https://bugzilla.gnome.org/show_bug.cgi?id=734688
-
-2014-08-14 18:53:40 -0300  Thiago Santos <thiagoss@osg.samsung.com>
-
-	* plugins/elements/gstinputselector.c:
-	  inputselector: always proxy caps query
-	  Otherwise it would only be proxied for the active pad which can lead
-	  upstream to use an incompatible caps for the downstream element.
-	  Even if a reconfigure event is sent upstream when the pad is activated, this
-	  will save the caps reconfiguration if it is already using an acceptable caps.
-
-2014-08-14 14:37:56 +0100  Tim-Philipp Müller <tim@centricular.com>
-
-	* libs/gst/base/gstdataqueue.h:
-	  base: and fix build with new g-i again
-
-2014-08-14 14:25:06 +0100  Tim-Philipp Müller <tim@centricular.com>
-
-	* libs/gst/base/gstdataqueue.h:
-	  base: remove g-i annotation that makes older g-ir-scanner crash
-	  Just remove one skip annotation that causes this:
-	  ** (g-ir-compiler:12458): ERROR **: Caught NULL node, parent=empty
-	  with older g-i versions such as 1.32.1.
-
 2014-08-13 13:01:23 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* plugins/elements/gstmultiqueue.c:
@@ -669,19 +6596,105 @@
 	  error upstream, so nothing is going to post an error message and
 	  the pipeline just idles around.
 
-2014-07-27 03:06:16 +0000  Руслан Ижбулатов <lrn1986@gmail.com>
+2014-08-12 20:03:06 +0530  Arun Raghavan <arun@accosted.net>
 
-	* gst/gstpoll.c:
-	  poll: Prevent false-negative from WAKE_EVENT() on W32
-	  SetEvent() seems to not call SetLastError(0) internally, so checking last
-	  error after calling SetEvent() may return the error from an earlier W32 API
-	  call. Fix this by calling SetlastError(0) explicitly.
-	  Currently WAKE_EVENT() code is cramped into a macro and doesn't look to be
-	  entirely correct. Particularly, it does not check the return value of
-	  SetEvent(), only the thread-local W32 error value. It is likely that SetEvent()
-	  actually just returns non-zero value, but the code mistakenly thinks that the
-	  call has failed, because GetLastError() seems to indicate so.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=733805
+	* gst/gstpad.c:
+	  docs: Trivial pad documentation fix
+	  Presumably a copy-pasto.
+
+2014-08-08 09:54:02 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/elements/.gitignore:
+	* tests/check/elements/concat.c:
+	  concat: Add unit tests for concat element
+
+2014-08-08 09:13:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	* docs/plugins/gstreamer-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* plugins/elements/gstconcat.c:
+	  concat: Add documentation and integrate into documentation build
+
+2014-08-07 14:42:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/Makefile.am:
+	* plugins/elements/gstconcat.c:
+	* plugins/elements/gstconcat.h:
+	* plugins/elements/gstelements.c:
+	  concat: Add new element that concatenates multiple streams
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734470
+
+2014-08-09 10:57:56 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstcaps.c:
+	  tests: caps: add check for caps with features intersection
+	  Checks that a caps without features doesn't intersect with
+	  one that has features
+
+2014-08-07 14:54:37 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/examples/controller/audio-example.c:
+	* tests/examples/controller/text-color-example.c:
+	  examples: controller: fix typo in comments
+
+2014-08-06 13:58:22 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstbytereader.h:
+	  bytereader: use unchecked inline variant for get_remaining in more places
+	  We've already done the g_return_*_if_fail (reader != NULL)
+	  dance in those places, so no need to do it again.
+
+2014-08-06 14:43:08 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstutils.c:
+	  utils: Ghostpads can be request pads too but check if the pad has a template
+	  Otherwise we dereference NULL in some cases and crash.
+
+2014-08-06 12:34:42 +0200  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* docs/manual/appendix-programs.xml:
+	* tests/check/gst/gstbin.c:
+	* tests/check/pipelines/parse-launch.c:
+	* tests/examples/launch/mp3parselaunch.c:
+	  tests: Add missing unrefs of objects after use
+	  Unreffing the objects returned by gst_bin_get_by_name() and
+	  gst_pipeline_get_use() were missing in several tests, so add these.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734345
+
+2014-08-06 12:55:57 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstutils.c:
+	  utils: Fix unititialized variable compiler warning
+
+2014-07-13 15:31:08 +0200  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* tests/check/gst/gstutils.c:
+	  tests: Add test verifying gst_element_link_pads_full()
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733119
+
+2014-07-13 15:28:32 +0200  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* gst/gstutils.c:
+	  utils: Unref/release pads in error cases when linking pads
+	  Previously gst_element_link_pads_full() forgot to unreference or release
+	  request pads in several error cases. Also comments were added mentioning
+	  why releasing is not necessary in some places.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733119
+
+2014-08-01 17:27:39 -0300  Tiago Cesar Katcipis <tiago.katcipis@digitro.com.br>
+
+	* libs/gst/check/gstcheck.c:
+	  gstcheck: add docs for gst_check_setup_src_pad_by_name()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=734142
+
+2014-07-31 18:32:03 +0200  Edward Hervey <edward@collabora.com>
+
+	* Makefile.am:
+	* common:
+	  Makefile: Add usage of build-checks step
+	  Allows building checks without running them
 
 2014-07-30 15:46:22 +0300  Mohammed Sameer <msameer@foolab.org>
 
@@ -700,6 +6713,7 @@
 	  If the current max-buffers limit it infinite and a finite value is
 	  requested, switch to the MAX (requested, current-value) to set some
 	  limit but not below what we know that we've needed so far.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733637
 	  https://bugzilla.gnome.org/show_bug.cgi?id=733837
 
 2014-07-24 22:02:58 +0200  Sebastian Rasmussen <sebras@hotmail.com>
@@ -710,6 +6724,28 @@
 	  when doing delaying setting a property.
 	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733697
 
+2014-07-27 02:37:08 +0000  Руслан Ижбулатов <lrn1986@gmail.com>
+
+	* tools/gst-launch.c:
+	  gst-launch: Support SIGINT (Ctrl+C) on W32
+	  W32 has no SIGINT, but it does have SetConsoleCtrlHandler(), which sets up
+	  a handler for Ctrl+C.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733814
+
+2014-07-27 03:06:16 +0000  Руслан Ижбулатов <lrn1986@gmail.com>
+
+	* gst/gstpoll.c:
+	  poll: Prevent false-negative from WAKE_EVENT() on W32
+	  SetEvent() seems to not call SetLastError(0) internally, so checking last
+	  error after calling SetEvent() may return the error from an earlier W32 API
+	  call. Fix this by calling SetlastError(0) explicitly.
+	  Currently WAKE_EVENT() code is cramped into a macro and doesn't look to be
+	  entirely correct. Particularly, it does not check the return value of
+	  SetEvent(), only the thread-local W32 error value. It is likely that SetEvent()
+	  actually just returns non-zero value, but the code mistakenly thinks that the
+	  call has failed, because GetLastError() seems to indicate so.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733805
+
 2014-07-26 14:42:54 +0100  Tim-Philipp Müller <tim@centricular.com>
 
 	* gst/gst.h:
@@ -717,6 +6753,90 @@
 	  It's a public header of gstreamer core, so #include <gst/gst.h>
 	  should make the API available.
 
+2014-07-25 11:45:56 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gsttypefindelement.c:
+	  typefindelement: remove prototype for function that no longer exists
+
+2014-07-24 14:39:11 -0300  Thiago Santos <ts.santos@osg.sisa.samsung.com>
+
+	* libs/gst/base/gstbytereader.c:
+	* libs/gst/base/gstbytereader.h:
+	* tests/check/libs/bytereader.c:
+	* win32/common/libgstbase.def:
+	  bytereader: add gst_byte_reader_masked_scan_uint32_peek
+	  Adds gst_byte_reader_masked_scan_uint32_peek just like
+	  GstAdapter has a _peek and non _peek version
+	  Upgraded tests to check that the returned value is correct in the
+	  _peek version
+	  API: gst_byte_reader_masked_scan_uint32_peek
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728356
+
+2014-06-26 14:09:25 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstbufferlist.c:
+	  bufferlist: pre-allocate buffer array in one go with the buffer list
+	  We can now create and free a buffer list with one slice alloc/free
+	  call in most cases, instead of one slice alloc/free for the list,
+	  one slice alloc/free for the GArray, and one malloc/free for the
+	  GArray array. In practice we know the max size of our buffer list
+	  from the start, so can avoid reallocs.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=732284
+
+2014-07-23 21:27:48 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gst_private.h:
+	* gst/gstdebugutils.c:
+	  private: allow internal access to the debug base-time
+	  Moving the extern to the head lets us access this from other parts as well. This
+	  is neeed in the tracer branch.
+
+2014-07-23 00:15:17 +0530  Arun Raghavan <arun@accosted.net>
+
+	* scripts/git-update.sh:
+	  scripts: Use git pull --rebase
+	  No point introducing redundant merge commits.
+
+2014-07-21 12:41:08 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/gst/gsttaglist.c:
+	  Revert "tests: taglist: add basic test for taglists serialization"
+	  This reverts commit 85d23d19b7de40541d63b0bc76d8b646c321af26.
+	  There was already a gsttag.c tests file, this test has been merged
+	  in it in the previous commit
+
+2014-07-21 12:40:47 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/gst/gsttag.c:
+	  tests: tag: add the empty taglist serialization test
+	  Adds the test to the appropriate and already existing file.
+
+2014-07-14 18:46:54 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/gst/gsttaglist.c:
+	  tests: taglist: add basic test for taglists serialization
+	  Make sure it works with empty taglists
+
+2014-07-14 18:25:50 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/gst/gststructure.c:
+	  tests: gststructure: serialization of tag event structure
+	  Adds a test that checks that the serialization of a tag event structure
+	  works without problems
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733131
+
+2014-07-14 18:23:43 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/gstvalue.c:
+	  gstvalue: add GstTagList compare function
+	  When serializing GstStructures from events in GDP it will add a taglist
+	  as a GstStructure field, having the compare function allows comparison of
+	  GstStructures to check if the serialized/deserialized version matches the
+	  original one, among other cases.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733131
+
 2014-07-09 15:48:10 +0200  Srimanta Panda <srimanta@axis.com>
 
 	* plugins/elements/gstfunnel.c:
@@ -729,6 +6849,40 @@
 	  sinkpads and assumes eos is not present yet.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=732851
 
+2014-07-17 16:05:00 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstpipeline.c:
+	  pipeline: Add unit test for resetting of the start time
+	  Also check if this properly affects basesink elements to not
+	  report the old start time but the real current position when
+	  setting to PAUSED again.
+
+2014-07-15 18:19:24 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpipeline.c:
+	  pipeline: Reset the start time when going from PAUSED to READY too
+
+2014-07-15 17:19:10 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpipeline.c:
+	  pipeline: Reset start time in READY->PAUSED before chaining up
+	  Otherwise bin will change the state of the child elements without
+	  distributing the new start time.
+
+2014-06-28 17:58:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstelements_private.c:
+	  elements: improve buffer flags to string utility function
+	  Avoid relocations and refactor so that we don't calculate
+	  the fixed and known at compile time maximum string size
+	  every time. Also skip the mini object flags which we are
+	  not going to print anyway.
+
+2014-07-19 18:04:31 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
 === release 1.4.0 ===
 
 2014-07-19 16:46:41 +0200  Sebastian Dröge <sebastian@centricular.com>
diff --git a/INSTALL b/INSTALL
index b42a17a..2099840 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,48 +1,80 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
 Basic Installation
 ==================
 
-   These are generic installation instructions.
+   Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
 
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
 those values to create a `Makefile' in each directory of the package.
 It may also create one or more `.h' files containing system-dependent
 definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
 
    If you need to do unusual things to compile the package, please try
 to figure out how `configure' could check whether to do them, and mail
 diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
 
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
 
-The simplest way to compile this package is:
+   The simplest way to compile this package is:
 
   1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
+     `./configure' to configure the package for your system.
 
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
 
   2. Type `make' to compile the package.
 
   3. Optionally, type `make check' to run any self-tests that come with
-     the package.
+     the package, generally using the just-built uninstalled binaries.
 
   4. Type `make install' to install the programs and any data files and
-     documentation.
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
 
-  5. You can remove the program binaries and object files from the
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
      source code directory by typing `make clean'.  To also remove the
      files that `configure' created (so you can compile the package for
      a different kind of computer), type `make distclean'.  There is
@@ -51,62 +83,119 @@
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
 Compilers and Options
 =====================
 
    Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
 
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
 
 Compiling For Multiple Architectures
 ====================================
 
    You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+own directory.  To do this, you can use GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
 the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
 
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
 
 Installation Names
 ==================
 
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
+options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
 
    If the package supports it, you can cause programs to be installed
 with an extra prefix or suffix on their names by giving `configure' the
 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
 
-Optional Features
-=================
-
    Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
@@ -119,25 +208,80 @@
 you can use the `configure' options `--x-includes=DIR' and
 `--x-libraries=DIR' to specify their locations.
 
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
 Specifying the System Type
 ==========================
 
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
      CPU-COMPANY-SYSTEM
 
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
+where SYSTEM can have one of these forms:
 
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
 
 Sharing Defaults
 ================
@@ -150,19 +294,56 @@
 `CONFIG_SITE' environment variable to the location of the site script.
 A warning: not all `configure' scripts look for a site script.
 
-Operation Controls
+Defining Variables
 ==================
 
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
    `configure' recognizes the following options to control how it
 operates.
 
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
 `--help'
-     Print a summary of the options to `configure', and exit.
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
 
 `--quiet'
 `--silent'
@@ -175,8 +356,15 @@
      Look for the package's source code in directory DIR.  Usually
      `configure' can determine that directory automatically.
 
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
 
-`configure' also accepts some other, not widely useful, options.
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/MAINTAINERS b/MAINTAINERS
index 558ddff..72aac8e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5,7 +5,7 @@
  Wim Taymans <wim.taymans@gmail.com>
  David Schleef <ds@schleef.org>
  Tim-Philipp Müller <tim centricular net>
- Sebastian Dröge <slomo circular-chaos org>
+ Sebastian Dröge <slomo@coaxion.net>
 
 Maintainer-related issues should be addressed to:
 
diff --git a/Makefile.am b/Makefile.am
index 900342b..503ffb3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,7 +11,8 @@
 	docs \
 	po \
 	m4 \
-	common
+	common \
+	data
 
 if BUILD_TOOLS
 SUBDIRS += tools
@@ -23,7 +24,8 @@
 	docs \
 	po \
 	m4 \
-	common
+	common \
+	data
 
 # include before EXTRA_DIST for win32 assignment
 include $(top_srcdir)/common/win32.mak
@@ -85,16 +87,22 @@
 
 if HAVE_CHECK
 check-valgrind:
-	cd tests/check && make check-valgrind
+	$(MAKE) -C tests/check check-valgrind
 
 check-torture:
-	cd tests/check && make torture
+	$(MAKE) -C tests/check torture
+
+build-checks:
+	$(MAKE) -C tests/check build-checks
 else
 check-valgrind:
 	echo "'check' library not installed, skipping"
 
 check-torture:
 	echo "'check' library not installed, skipping"
+
+build-checks:
+	echo "'check' library not installed, skipping"
 endif
 
 # FIXME: this target should be run every time we do "make release"
@@ -197,8 +205,13 @@
 
 CRUFT_DIRS = \
 	$(top_builddir)/tests/examples/xml \
+	$(top_builddir)/tests/examples/launch \
+	$(top_builddir)/tests/examples/metadata \
+	$(top_builddir)/tests/examples/queue \
+	$(top_builddir)/tests/examples/typefind \
 	$(top_builddir)/gst/tmp-introspect* \
-	$(top_builddir)/libs/gst/*/tmp-introspect*
+	$(top_builddir)/libs/gst/*/tmp-introspect* \
+	$(top_srcdir)/docs/plugins/tmpl
 
 include $(top_srcdir)/common/cruft.mak
 
diff --git a/Makefile.in b/Makefile.in
index cfdec17..7e49416 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -26,7 +26,17 @@
 # set CRUFT_FILES and/or CRUFT_DIRS in your Makefile.am when you include this
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -91,16 +101,6 @@
 host_triplet = @host@
 target_triplet = @target@
 @BUILD_TOOLS_TRUE@am__append_1 = tools
-DIST_COMMON = $(top_srcdir)/common/win32.mak \
-	$(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak \
-	$(top_srcdir)/common/coverage/lcov.mak \
-	$(top_srcdir)/common/cruft.mak INSTALL NEWS README AUTHORS \
-	ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/configure $(am__configure_deps) \
-	$(srcdir)/config.h.in $(srcdir)/stamp.h.in \
-	$(srcdir)/gstreamer.spec.in ABOUT-NLS COPYING TODO compile \
-	config.guess config.rpath config.sub depcomp install-sh \
-	missing ltmain.sh
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -110,6 +110,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -127,7 +128,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -140,6 +141,8 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
@@ -231,6 +234,14 @@
 ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(srcdir)/gstreamer.spec.in $(srcdir)/stamp.h.in \
+	$(top_srcdir)/common/coverage/lcov.mak \
+	$(top_srcdir)/common/cruft.mak $(top_srcdir)/common/po.mak \
+	$(top_srcdir)/common/release.mak \
+	$(top_srcdir)/common/win32.mak ABOUT-NLS AUTHORS COPYING \
+	ChangeLog INSTALL NEWS README TODO compile config.guess \
+	config.rpath config.sub depcomp install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -285,7 +296,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -376,6 +392,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -387,9 +404,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -411,6 +430,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -472,8 +492,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -539,6 +561,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -554,7 +577,7 @@
 DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-docbook
 aclocaldir = $(datadir)/aclocal
 aclocal_DATA = gst-element-check-@GST_API_VERSION@.m4
-SUBDIRS = pkgconfig gst libs plugins tests docs po m4 common \
+SUBDIRS = pkgconfig gst libs plugins tests docs po m4 common data \
 	$(am__append_1)
 
 # These are all the possible subdirs
@@ -563,7 +586,8 @@
 	docs \
 	po \
 	m4 \
-	common
+	common \
+	data
 
 
 # the MANIFEST contains all win32 related files that should be disted
@@ -635,8 +659,13 @@
 
 CRUFT_DIRS = \
 	$(top_builddir)/tests/examples/xml \
+	$(top_builddir)/tests/examples/launch \
+	$(top_builddir)/tests/examples/metadata \
+	$(top_builddir)/tests/examples/queue \
+	$(top_builddir)/tests/examples/typefind \
 	$(top_builddir)/gst/tmp-introspect* \
-	$(top_builddir)/libs/gst/*/tmp-introspect*
+	$(top_builddir)/libs/gst/*/tmp-introspect* \
+	$(top_srcdir)/docs/plugins/tmpl
 
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -657,7 +686,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -667,7 +695,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/win32.mak $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak:
+$(top_srcdir)/common/win32.mak $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	$(SHELL) ./config.status --recheck
@@ -916,15 +944,15 @@
 	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
-	@echo WARNING: "Support for shar distribution archives is" \
-	               "deprecated." >&2
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
 	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__post_remove_distdir)
 
 dist-shar: distdir
-	@echo WARNING: "Support for distribution archives compressed with" \
-		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
 	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
 	$(am__post_remove_distdir)
@@ -960,18 +988,18 @@
 	esac
 	chmod -R a-w $(distdir)
 	chmod u+w $(distdir)
-	mkdir $(distdir)/_build $(distdir)/_inst
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
 	chmod a-w $(distdir)
 	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
 	  && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
 	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
 	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	    --srcdir=.. --prefix="$$dc_install_base" \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1154,6 +1182,8 @@
 	ps ps-am tags tags-am uninstall uninstall-aclocalDATA \
 	uninstall-am
 
+.PRECIOUS: Makefile
+
 
 win32-debug:
 	@echo; \
@@ -1290,16 +1320,22 @@
 @GST_GCOV_ENABLED_FALSE@	echo "Need to reconfigure with --enable-gcov"
 
 @HAVE_CHECK_TRUE@check-valgrind:
-@HAVE_CHECK_TRUE@	cd tests/check && make check-valgrind
+@HAVE_CHECK_TRUE@	$(MAKE) -C tests/check check-valgrind
 
 @HAVE_CHECK_TRUE@check-torture:
-@HAVE_CHECK_TRUE@	cd tests/check && make torture
+@HAVE_CHECK_TRUE@	$(MAKE) -C tests/check torture
+
+@HAVE_CHECK_TRUE@build-checks:
+@HAVE_CHECK_TRUE@	$(MAKE) -C tests/check build-checks
 @HAVE_CHECK_FALSE@check-valgrind:
 @HAVE_CHECK_FALSE@	echo "'check' library not installed, skipping"
 
 @HAVE_CHECK_FALSE@check-torture:
 @HAVE_CHECK_FALSE@	echo "'check' library not installed, skipping"
 
+@HAVE_CHECK_FALSE@build-checks:
+@HAVE_CHECK_FALSE@	echo "'check' library not installed, skipping"
+
 # FIXME: this target should be run every time we do "make release"
 # find a way of automating that
 win32-update:
diff --git a/NEWS b/NEWS
index 910c80e..7fd2c05 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,2 @@
-This is GStreamer 1.4.5
+This is GStreamer 1.5.91
 
diff --git a/README b/README
index da0cab4..f175b1b 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-GStreamer 1.3.x development series
+GStreamer 1.5.x development series
 
 WHAT IT IS
 ----------
diff --git a/RELEASE b/RELEASE
index bd64ff8..4d69093 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,28 +1,16 @@
 
-Release notes for GStreamer 1.4.5
-
-The GStreamer team is pleased to announce a bugfix release of the stable
-1.4 release series. The 1.4 release series is adding new features on top
-of the 1.2 series and is part of the API and ABI-stable 1.x release
-series of the GStreamer multimedia framework that contains new features.
-The 1.4.x bugfix releases only contain important bugfixes compared to 1.4.0.
+Release notes for GStreamer 1.5.91
 
 
-Binaries for Android, iOS, Mac OS X and Windows are provided by the
-GStreamer project for this release.
+The GStreamer team is pleased to announce the second release candidate for the
+stable 1.6 release series. The 1.6 release series is adding new features on top of
+the 1.0, 1.2 and 1.4 series and is part of the API and ABI-stable 1.x release
+series of the GStreamer multimedia framework. The final 1.6.0 release is planned
+in the next few days unless any major bugs are found.
 
 
-The 1.x series is a stable series targeted at end users. It is not API
-or ABI compatible with the 0.10.x series. It can, however, be installed
-in parallel with the 0.10.x series and will not affect an existing
-0.10.x installation.
-
-
-The stable 1.4.x release series is API and ABI compatible with 1.0.x and
-any other 1.x release series in the future. Compared to 1.0.x it contains
-some new features and more intrusive changes that were considered too
-risky as a bugfix.
-
+Binaries for Android, iOS, Mac OS X and Windows will be provided separately by
+the GStreamer project.
 
 
 This module, gstreamer, only contains core functionality.
@@ -48,9 +36,13 @@
 
 Bugs fixed in this release
      
-      * 736969 : queue2: dead lock when buffering
-      * 738092 : basesink: clamp reported position based on direction
-      * 740001 : task: race condition when pausing and stopping
+      * 754036 : bin: Make sure we don't add/remove a bin to/from itself
+      * 754040 : Investigate why caps negotiation is slower than in 1.4
+      * 754193 : harness: misc bugfixes
+      * 754661 : harness: Fix race for gst_harness_element_ref
+      * 754875 : configure.ac: no socketpair() check causes unresolved reference
+      * 754975 : bin: trivial fix in critical log when threadpool alloc fails
+      * 755019 : gstreamer: Fix error leak during failure cases
 
 ==== Download ====
 
@@ -87,9 +79,15 @@
         
 Contributors to this release
     
-      * Edward Hervey
-      * Haakon Sporsheim
+      * Arun Raghavan
+      * Havard Graff
+      * Igor Rondarev
+      * Nicolas Dufresne
+      * Sebastian Dröge
+      * Stian Selnes
       * Thiago Santos
-      * Vincent Penquerc'h
-      * Wim Taymans
+      * Thibault Saunier
+      * Tim-Philipp Müller
+      * Vineeth TM
+      * Vivia Nikolaidou
  
\ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
index 89d665c..5c0404d 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.15], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,14 @@
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # Figure out how to run the assembler.                      -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -78,7 +78,7 @@
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -130,7 +130,7 @@
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -161,7 +161,7 @@
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -352,7 +352,7 @@
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -428,7 +428,7 @@
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -518,8 +518,8 @@
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -593,6 +593,9 @@
     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
   fi
 fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
 ])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
@@ -622,7 +625,7 @@
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -633,7 +636,7 @@
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\	*)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -643,7 +646,7 @@
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -665,7 +668,7 @@
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -700,7 +703,7 @@
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -750,7 +753,7 @@
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -787,7 +790,7 @@
 fi
 ])
 
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -821,7 +824,7 @@
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -850,7 +853,7 @@
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -897,7 +900,7 @@
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1132,7 +1135,7 @@
 sys.exit(sys.hexversion < minverhex)"
   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1151,7 +1154,7 @@
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1232,7 +1235,7 @@
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1292,7 +1295,7 @@
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1320,7 +1323,7 @@
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1339,7 +1342,7 @@
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1477,6 +1480,7 @@
 m4_include([common/m4/as-libtool.m4])
 m4_include([common/m4/as-version.m4])
 m4_include([common/m4/ax_create_stdint_h.m4])
+m4_include([common/m4/ax_pthread.m4])
 m4_include([common/m4/gst-arch.m4])
 m4_include([common/m4/gst-args.m4])
 m4_include([common/m4/gst-check.m4])
@@ -1495,7 +1499,6 @@
 m4_include([common/m4/gtk-doc.m4])
 m4_include([common/m4/introspection.m4])
 m4_include([common/m4/pkg.m4])
-m4_include([m4/ax_pthread.m4])
 m4_include([m4/check-checks.m4])
 m4_include([m4/gettext.m4])
 m4_include([m4/iconv.m4])
diff --git a/autogen.sh b/autogen.sh
index 65e9379..ed7101d 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -13,7 +13,6 @@
 olddir=`pwd`
 cd "$srcdir"
 
-DIE=0
 package=gstreamer
 srcfile=gstreamer.doap
 
@@ -56,24 +55,25 @@
 autogen_options $@
 
 printf "+ check for build tools"
-if test ! -z "$NOCHECK"; then echo ": skipped version checks"; else  echo; fi
-version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 " \
-              "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 68 || DIE=1
-version_check "automake" "$AUTOMAKE automake automake-1.11" \
-              "ftp://ftp.gnu.org/pub/gnu/automake/" 1 11 || DIE=1
-version_check "autopoint" "autopoint" \
-              "ftp://ftp.gnu.org/pub/gnu/gettext/" 0 17 || DIE=1
-version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \
-              "ftp://ftp.gnu.org/pub/gnu/libtool/" 2 2 6 || DIE=1
-version_check "pkg-config" "" \
-              "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
+if test -z "$NOCHECK"; then
+  echo
 
-die_check $DIE
+  printf "  checking for autoreconf ... "
+  echo
+  which "autoreconf" 2>/dev/null || {
+    echo "not found! Please install the autoconf package."
+    exit 1
+  }
 
-aclocal_check || DIE=1
-autoheader_check || DIE=1
-
-die_check $DIE
+  printf "  checking for pkg-config ... "
+  echo
+  which "pkg-config" 2>/dev/null || {
+    echo "not found! Please install pkg-config."
+    exit 1
+  }
+else
+  echo ": skipped version checks"
+fi
 
 # if no arguments specified then this will be printed
 if test -z "$*" && test -z "$NOCONFIGURE"; then
@@ -87,23 +87,14 @@
 toplevel_check $srcfile
 
 # autopoint
-if test -d po ; then
-  tool_run "$autopoint" "--force"
+if test -d po && grep ^AM_GNU_GETTEXT_VERSION configure.ac >/dev/null ; then
+  tool_run "autopoint" "--force"
 fi
 
 # aclocal
 if test -f acinclude.m4; then rm acinclude.m4; fi
 
-tool_run "$libtoolize" "--copy --force"
-tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
-tool_run "$autoheader"
-
-# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode
-echo timestamp > stamp-h.in 2> /dev/null
-
-tool_run "$autoconf"
-debug "automake: $automake"
-tool_run "$automake" "--add-missing --copy"
+autoreconf --force --install || exit 1
 
 test -n "$NOCONFIGURE" && {
   echo "+ skipping configure stage for package $package, as requested."
diff --git a/common/Makefile.am b/common/Makefile.am
index 25966fc..1eac7d8 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -8,7 +8,7 @@
 	parallel-subdirs.mak \
 	gst-autogen.sh \
 	check-exports \
-	c-to-xml.py mangle-tmpl.py scangobj-merge.py \
+	c-to-xml.py mangle-db.py scangobj-merge.py \
 	gtk-doc-plugins.mak \
 	plugins.xsl gstdoc-scangobj \
 	gst.supp check.mak \
diff --git a/common/Makefile.in b/common/Makefile.in
index 6c35ad6..c37a36c 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,8 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = common
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ChangeLog \
-	README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -89,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -106,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -119,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -178,6 +188,7 @@
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in ChangeLog README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -214,7 +225,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -305,6 +321,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -316,9 +333,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -340,6 +359,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -401,8 +421,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -468,6 +490,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -489,7 +512,7 @@
 	parallel-subdirs.mak \
 	gst-autogen.sh \
 	check-exports \
-	c-to-xml.py mangle-tmpl.py scangobj-merge.py \
+	c-to-xml.py mangle-db.py scangobj-merge.py \
 	gtk-doc-plugins.mak \
 	plugins.xsl gstdoc-scangobj \
 	gst.supp check.mak \
@@ -517,7 +540,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu common/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu common/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -812,6 +834,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/common/check.mak b/common/check.mak
index 611546a..8a90b5d 100644
--- a/common/check.mak
+++ b/common/check.mak
@@ -16,37 +16,38 @@
 # run any given test by running make test.check
 # if the test fails, run it again at at least debug level 2
 %.check: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$* ||							\
-	$(TESTS_ENVIRONMENT)					\
+	$(AM_TESTS_ENVIRONMENT)					\
 	GST_DEBUG=$$GST_DEBUG,*:2				\
 	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # just like 'check', but don't run it again if it fails (useful for debugging)
 %.check-norepeat: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # run any given test in a loop
 %.torture: %
 	@for i in `seq 1 $(LOOPS)`; do				\
-	$(TESTS_ENVIRONMENT)					\
+	$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$*; done
 
 # run any given test in an infinite loop
 %.forever: %
 	@while true; do						\
-	$(TESTS_ENVIRONMENT)					\
+	$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$* || break; done
 
 # valgrind any given test by running make test.valgrind
 %.valgrind: %
-	@$(TESTS_ENVIRONMENT)					\
+	@valgrind_log=$(subst /,-,$*-valgrind.log);		\
+	$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=360					\
 	G_SLICE=always-malloc					\
 	$(LIBTOOL) --mode=execute				\
@@ -55,16 +56,16 @@
 	--tool=memcheck --leak-check=full --trace-children=yes	\
 	--show-possibly-lost=no                                 \
 	--leak-resolution=high --num-callers=20			\
-	./$* 2>&1 | tee valgrind.log
-	@if grep "==" valgrind.log > /dev/null 2>&1; then	\
-	    rm valgrind.log;					\
+	./$* 2>&1 | tee $$valgrind_log ;			\
+	if grep "==" $$valgrind_log > /dev/null 2>&1; then	\
+	    rm $$valgrind_log;					\
 	    exit 1;						\
-	fi
-	@rm valgrind.log
+	fi ;							\
+	rm $$valgrind_log
 
 # valgrind any given test and generate suppressions for it
 %.valgrind.gen-suppressions: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=360					\
 	G_SLICE=always-malloc					\
 	$(LIBTOOL) --mode=execute				\
@@ -94,7 +95,7 @@
 
 # gdb any given test by running make test.gdb
 %.gdb: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_FORK=no						\
 	$(LIBTOOL) --mode=execute				\
 	gdb $*
@@ -150,19 +151,13 @@
 # valgrind all tests
 valgrind: $(TESTS)
 	@echo "Valgrinding tests ..."
-	@failed=0;							\
+	@failed=0; valgrind_targets="";					\
 	for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do	\
-		$(MAKE) $$t.valgrind;					\
-		if test "$$?" -ne 0; then                               \
-			echo "Valgrind error for test $$t";		\
-			failed=`expr $$failed + 1`;			\
-			whicht="$$whicht $$t";				\
-		fi;							\
+	  valgrind_targets="$$valgrind_targets $$t.valgrind";		\
 	done;								\
-	if test "$$failed" -ne 0; then					\
-		echo "$$failed tests had leaks or errors under valgrind:";	\
-		echo "$$whicht";					\
-		false;							\
+	if ! $(MAKE) $$valgrind_targets ; then				\
+	  echo "Some tests had leaks or errors under valgrind";		\
+	  false;							\
 	fi
 
 # valgrind all tests until failure
@@ -210,11 +205,14 @@
 GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_API_VERSION)
 inspect:
 	@echo "Inspecting features ..."
-	@for e in `$(TESTS_ENVIRONMENT) $(GST_INSPECT) | head -n -2 	\
+	@for e in `$(AM_TESTS_ENVIRONMENT) $(GST_INSPECT) | head -n -2 	\
 	  | cut -d: -f2`;						\
 	  do echo Inspecting $$e;					\
 	     $(GST_INSPECT) $$e > /dev/null 2>&1; done
 
+# build all tests
+build-checks: $(TESTS)
+
 help:
 	@echo
 	@echo "make check                         -- run all checks"
@@ -237,6 +235,7 @@
 	@echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions"
 	@echo "                                               and save to suppressions.log"
 	@echo "make inspect                       -- inspect all plugin features"
+	@echo "make build-checks                  -- build all checks (but don't run them)"
 	@echo
 	@echo
 	@echo "Additionally, you can use the GST_CHECKS environment variable to"
diff --git a/common/gst-autogen.sh b/common/gst-autogen.sh
index 78cab66..71049e6 100644
--- a/common/gst-autogen.sh
+++ b/common/gst-autogen.sh
@@ -20,216 +20,6 @@
   fi
 }
 
-version_get ()
-# based on the command's version output, set variables
-# _MAJOR, _MINOR, _MICRO, _VERSION, using the given prefix as variable prefix
-#
-# arg 1: command binary name
-# arg 2: (uppercased) variable name prefix
-{
-  COMMAND=$1
-  VARPREFIX=`echo $2 | tr .,- _`
-  local ${VARPREFIX}_VERSION
-
-  # strip everything that's not a digit, then use cut to get the first field
-  pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1`
-  debug "pkg_version $pkg_version"
-  # remove any non-digit characters from the version numbers to permit numeric
-  # comparison
-  pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
-  pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
-  pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
-  test -z "$pkg_major" && pkg_major=0
-  test -z "$pkg_minor" && pkg_minor=0
-  test -z "$pkg_micro" && pkg_micro=0
-  debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
-  eval ${VARPREFIX}_MAJOR=$pkg_major
-  eval ${VARPREFIX}_MINOR=$pkg_minor
-  eval ${VARPREFIX}_MICRO=$pkg_micro
-  eval ${VARPREFIX}_VERSION=$pkg_version
-}
-
-version_compare ()
-# Checks whether the version of VARPREFIX is equal to or
-# newer than the requested version
-# arg1: VARPREFIX
-# arg2: MAJOR
-# arg3: MINOR
-# arg4: MICRO
-{
-  VARPREFIX=`echo $1 | tr .,- _`
-  MAJOR=$2
-  MINOR=$3
-  MICRO=$4
-
-  eval pkg_major=\$${VARPREFIX}_MAJOR;
-  eval pkg_minor=\$${VARPREFIX}_MINOR;
-  eval pkg_micro=\$${VARPREFIX}_MICRO;
-
-  #start checking the version
-  debug "version_compare: $VARPREFIX against $MAJOR.$MINOR.$MICRO"
-
-    # reset check
-    WRONG=
-
-    if [ ! "$pkg_major" -gt "$MAJOR" ]; then
-      debug "major: $pkg_major <= $MAJOR"
-      if [ "$pkg_major" -lt "$MAJOR" ]; then
-        debug "major: $pkg_major < $MAJOR"
-        WRONG=1
-      elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
-        debug "minor: $pkg_minor <= $MINOR"
-        if [ "$pkg_minor" -lt "$MINOR" ]; then
-          debug "minor: $pkg_minor < $MINOR"
-          WRONG=1
-        elif [ "$pkg_micro" -lt "$MICRO" ]; then
-          debug "micro: $pkg_micro < $MICRO"
-	  WRONG=1
-        fi
-      fi
-    fi
-    if test ! -z "$WRONG"; then
-      debug "version_compare: $VARPREFIX older than $MAJOR.$MINOR.$MICRO"
-      return 1
-    fi
-    debug "version_compare: $VARPREFIX equal to/newer than $MAJOR.$MINOR.$MICRO"
-    return 0
-}
-
-
-version_check ()
-# check the version of a package
-# first argument : package name (executable)
-# second argument : optional path where to look for it instead
-# third argument : source download url
-# rest of arguments : major, minor, micro version
-# all consecutive ones : suggestions for binaries to use
-# (if not specified in second argument)
-{
-  PACKAGE=$1
-  PKG_PATH=$2
-  URL=$3
-  MAJOR=$4
-  MINOR=$5
-  MICRO=$6
-
-  # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
-  if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
-  debug "major $MAJOR minor $MINOR micro $MICRO"
-  VERSION=$MAJOR
-  if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
-  if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
-
-  debug "major $MAJOR minor $MINOR micro $MICRO"
-
-  for SUGGESTION in $PKG_PATH; do
-    COMMAND="$SUGGESTION"
-
-    # don't check if asked not to
-    test -z "$NOCHECK" && {
-      printf "  checking for $COMMAND >= $VERSION ... "
-    } || {
-      # we set a var with the same name as the package, but stripped of
-      # unwanted chars
-      VAR=`echo $PACKAGE | sed 's/-//g'`
-      debug "setting $VAR"
-      eval $VAR="$COMMAND"
-      return 0
-    }
-
-    which $COMMAND > /dev/null 2>&1
-    if test $? -eq 1;
-    then 
-      debug "$COMMAND not found"
-      continue
-    fi
-
-    VARPREFIX=`echo $COMMAND | sed 's/-//g' | tr [:lower:] [:upper:]`
-    version_get $COMMAND $VARPREFIX
-
-    version_compare $VARPREFIX $MAJOR $MINOR $MICRO
-    if test $? -ne 0; then
-      echo "found $pkg_version, not ok !"
-      continue
-    else
-      echo "found $pkg_version, ok."
-      # we set a var with the same name as the package, but stripped of
-      # unwanted chars
-      VAR=`echo $PACKAGE | sed 's/-//g'`
-      debug "setting $VAR"
-      eval $VAR="$COMMAND"
-      return 0
-    fi
-  done
-
-  echo "$PACKAGE not found !"
-  echo "You must have $PACKAGE installed to compile $package."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at $URL"
-  return 1;
-}
-
-aclocal_check ()
-{
-  # normally aclocal is part of automake
-  # so we expect it to be in the same place as automake
-  # so if a different automake is supplied, we need to adapt as well
-  # so how's about replacing automake with aclocal in the set var,
-  # and saving that in $aclocal ?
-  # note, this will fail if the actual automake isn't called automake*
-  # or if part of the path before it contains it
-  if [ -z "$automake" ]; then
-    echo "Error: no automake variable set !"
-    return 1
-  else
-    aclocal=`echo $automake | sed s/automake/aclocal/`
-    debug "aclocal: $aclocal"
-    if [ "$aclocal" != "aclocal" ];
-    then
-      CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
-    fi
-    if [ ! -x `which $aclocal` ]; then
-      echo "Error: cannot execute $aclocal !"
-      return 1
-    fi
-  fi
-}
-
-autoheader_check ()
-{
-  # same here - autoheader is part of autoconf
-  # use the same voodoo
-  if [ -z "$autoconf" ]; then
-    echo "Error: no autoconf variable set !"
-    return 1
-  else
-    autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
-    debug "autoheader: $autoheader"
-    if [ "$autoheader" != "autoheader" ];
-    then
-      CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
-    fi
-    if [ ! -x `which $autoheader` ]; then
-      echo "Error: cannot execute $autoheader !"
-      return 1
-    fi
-  fi
-
-}
-
-die_check ()
-{
-  # call with $DIE
-  # if set to 1, we need to print something helpful then die
-  DIE=$1
-  if test "x$DIE" = "x1";
-  then
-    echo
-    echo "- Please get the right tools before proceeding."
-    echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
-    exit 1
-  fi
-}
 
 autogen_options ()
 {
diff --git a/common/gst-indent b/common/gst-indent
index 732b2ba..b5e808f 100755
--- a/common/gst-indent
+++ b/common/gst-indent
@@ -9,13 +9,19 @@
 
 version=`gnuindent --version 2>/dev/null`
 if test "x$version" = "x"; then
-  version=`indent --version 2>/dev/null`
+  version=`gindent --version 2>/dev/null`
   if test "x$version" = "x"; then
-    echo "GStreamer git pre-commit hook:"
-    echo "Did not find GNU indent, please install it before continuing."
-    exit 1
+    version=`indent --version 2>/dev/null`
+    if test "x$version" = "x"; then
+      echo "GStreamer git pre-commit hook:"
+      echo "Did not find GNU indent, please install it before continuing."
+      exit 1
+    else
+      INDENT=indent
+    fi
+  else
+    INDENT=gindent
   fi
-  INDENT=indent
 else
   INDENT=gnuindent
 fi
diff --git a/common/gst.supp b/common/gst.supp
index 2c60392..81f98a9 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -3965,3 +3965,58 @@
    ...
    fun:g_quark_from*_string
 }
+
+{
+  <timer_create suppressions for earlier valgrind versions that complain>
+  Memcheck:Param
+  timer_create(evp)
+  fun:timer_create@@GLIBC_2.3.3
+}
+
+{
+   closures aren't valgrind friendly (bgo#739850)
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:calloc
+   ...
+   fun:g_cclosure_new
+}
+
+{
+   closures aren't valgrind friendly (bgo#739850)
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:malloc
+   ...
+   fun:g_closure_add_invalidate_notifier
+}
+
+{
+   closures aren't valgrind friendly (bgo#739850)
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:calloc
+   ...
+   fun:g_closure_new_simple
+}
+
+{
+   glib/giomodules2 (from libsoup.supp)
+   Memcheck:Leak
+   ...
+   fun:_g_io_module_get_default
+}
+
+{
+   <valgrind bug when trying to parse "infinity" from "interleaved">
+   Memcheck:Addr8
+   fun:__GI___strncasecmp_l
+   fun:____strtod_l_internal
+   fun:gst_value_deserialize_double
+}
+
+{
+   <glibc overreads/conditionals>
+   Memcheck:Addr8
+   fun:do_lookup_x
+}
diff --git a/common/gstdoc-scangobj b/common/gstdoc-scangobj
index 4ad9786..906857c 100755
--- a/common/gstdoc-scangobj
+++ b/common/gstdoc-scangobj
@@ -110,6 +110,8 @@
 my $new_prerequisites_filename = "$OUTPUT_DIR/$MODULE.prerequisites.new";
 my $old_args_filename = "$OUTPUT_DIR/$MODULE.args";
 my $new_args_filename = "$OUTPUT_DIR/$MODULE.args.new";
+my $old_sections_filename = "$OUTPUT_DIR/$MODULE-sections";
+my $new_sections_filename = "$OUTPUT_DIR/$MODULE-sections.new";
 
 my $debug_log="g_message";
 if (!defined($VERBOSE) or $VERBOSE eq "0") {
@@ -437,32 +439,30 @@
 const gchar *interfaces_filename = "$new_interfaces_filename";
 const gchar *prerequisites_filename = "$new_prerequisites_filename";
 const gchar *args_filename = "$new_args_filename";
+const gchar *sections_filename = "$new_sections_filename";
 
 
 static void output_signals (void);
-static void output_object_signals (FILE *fp,
-				   GType object_type);
-static void output_object_signal (FILE *fp,
-				  const gchar *object_class_name,
+static void output_object_signals (FILE *fp, GType object_type);
+static void output_object_signal (FILE *fp, const gchar *object_class_name,
 				  guint signal_id);
-static const gchar * get_type_name (GType type,
-			            gboolean * is_pointer);
+static const gchar * get_type_name (GType type, gboolean * is_pointer);
 static void output_object_hierarchy (void);
-static void output_hierarchy (FILE *fp,
-			      GType type,
-			      guint level);
+static void output_hierarchy (FILE *fp, GType type, guint level);
 
 static void output_object_interfaces (void);
-static void output_interfaces (FILE *fp,
-			       GType type);
+static void output_interfaces (FILE *fp, GType type);
 
 static void output_interface_prerequisites (void);
-static void output_prerequisites (FILE *fp,
-			          GType type);
+static void output_prerequisites (FILE *fp, GType type);
 
 static void output_args (void);
 static void output_object_args (FILE *fp, GType object_type);
 
+static void output_sections (void);
+static void output_object_section (FILE *fp, GType object_type);
+
+
 int
 main (G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[])
 {
@@ -475,6 +475,8 @@
   output_object_interfaces ();
   output_interface_prerequisites ();
   output_args ();
+  
+  output_sections ();
 
   return 0;
 }
@@ -1570,6 +1572,139 @@
     break;
   }
 }
+
+static void
+output_sections (void)
+{
+  FILE *fp;
+  gint i;
+
+  fp = fopen (sections_filename, "w");
+  if (fp == NULL)
+    {
+      g_warning ("Couldn't open output file: %s : %s", sections_filename, g_strerror(errno));
+      return;
+    }
+
+  for (i = 0; object_types[i]; i++) { }
+  qsort (object_types, i, sizeof (GType), compare_types);
+    
+  for (i = 0; object_types[i]; i++) {
+    output_object_section (fp, object_types[i]);
+  }
+
+  fclose (fp);
+}
+
+static gboolean
+find_by_type (GstPluginFeature *f, gpointer data) {
+  return (GST_IS_ELEMENT_FACTORY(f) && 
+      ((GType)data == gst_element_factory_get_element_type (GST_ELEMENT_FACTORY(f))));
+}
+
+static void
+output_object_section (FILE *fp, GType object_type)
+{
+  /* e.g. GstFakeSink */
+  const gchar *tn = g_type_name (object_type);
+  const gchar *cct = &tn[3]; /* cut 'Gst' */
+  gchar *title, *lct, *uct;
+  gint i, j, l = strlen(cct);
+  gpointer class;
+  GParamSpec **properties;
+  guint n_properties;
+  const gchar *ptn;
+  gchar *ptns;
+  GString *strbuf = g_string_new (NULL);
+  GList *fl;
+  GstPluginFeature *f = NULL;
+  gboolean need_unserscore = TRUE, have_abbrev = FALSE;
+  
+  fl = gst_registry_feature_filter (gst_registry_get(), find_by_type, TRUE, 
+    (gpointer)object_type);
+  if (fl) {
+    f = fl->data;
+    g_list_free(fl);
+  }
+  if (f) {
+    title = g_strdup (gst_plugin_feature_get_name(f));
+    g_object_unref (f);
+  } else {
+    title = g_ascii_strdown(cct, -1);
+  }
+  
+  /* turn CamelCase into '_' separated all lower, resulting string is atmost
+   * twice as long, special casing for abbevs like GstTCPClientSink */
+  lct = g_malloc(2*l);
+  for (i = 0, j = 0; i < l; i++) {
+    if (g_ascii_isupper (cct[i])) {
+      if (need_unserscore) {
+        if (i > 0) {
+          lct[j++] = '_';
+        }
+      } else {
+        have_abbrev = TRUE;
+      }
+      lct[j++] = g_ascii_tolower(cct[i]);
+      need_unserscore = FALSE;
+    } else {
+      if (have_abbrev) {
+        lct[j] = lct[j-1];
+        lct[j-1] = '_';
+        j++;
+        have_abbrev = FALSE;
+      }
+      lct[j++] = cct[i];
+      need_unserscore = TRUE;
+    }
+  }
+  lct[j] = '\\0';
+  uct = g_ascii_strup(lct, -1);
+  
+  /* scan properties and find local enums */
+  class = g_type_class_peek (object_type);
+  properties = g_object_class_list_properties (class, &n_properties);
+  qsort (properties, n_properties, sizeof (GParamSpec *), compare_param_specs);
+  for (i = 0; i < n_properties; i++) {
+    GParamSpec *spec = properties[i];
+    if (!(G_IS_PARAM_SPEC_ENUM (spec) || G_IS_PARAM_SPEC_FLAGS (spec))) {
+      continue;
+    }
+    ptn = g_type_name(spec->value_type);
+    // does it start with tn?
+    if (strncmp(tn, ptn, strlen(tn))) {
+      continue;
+    }
+    g_string_append_c(strbuf, '\\n');
+    g_string_append(strbuf, ptn);
+  }
+  ptns = g_string_free (strbuf, FALSE);
+
+  /* later we can remove the SUBSECTION Standart/Private, since we only need to
+   * highlight what is public API */
+  fprintf (fp, "<SECTION>\\n"
+               "<FILE>element-%s</FILE>\\n"
+               "<TITLE>%s</TITLE>\\n"
+               "Gst%s%s\\n"
+               "<SUBSECTION Standard>\\n"
+               "Gst%sClass\\n"
+               "GST_%s\\n"
+               "GST_%s_CAST\\n"
+               "GST_IS_%s\\n"
+               "GST_%s_CLASS\\n"
+               "GST_IS_%s_CLASS\\n"
+               "GST_TYPE_%s\\n"
+               "<SUBSECTION Private>\\n"
+               "gst_%s_get_type\\n"
+               "</SECTION>\\n\\n",
+               title, title, cct, ptns, 
+               cct, uct, uct, uct, uct, uct, uct, lct);
+  g_free (title);
+  g_free (lct);
+  g_free (uct);
+  g_free (ptns);
+}
+
 EOT
 
 close OUTPUT;
@@ -1614,4 +1749,4 @@
 #&UpdateFileIfChanged ($old_prerequisites_filename, $new_prerequisites_filename, 0);
 #&UpdateFileIfChanged ($old_signals_filename, $new_signals_filename, 0);
 #&UpdateFileIfChanged ($old_args_filename, $new_args_filename, 0);
-
+#&UpdateFileIfChanged ($old_sections_filename, $new_sections_filename, 0);
diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak
index f19e7d7..997a672 100644
--- a/common/gtk-doc-plugins.mak
+++ b/common/gtk-doc-plugins.mak
@@ -16,6 +16,16 @@
 update: scanobj-update
 	$(MAKE) check-outdated-docs
 
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
 # We set GPATH here; this gives us semantics for GNU make
 # which are more like other make's VPATH, when it comes to
 # whether a source that is a target of one rule is then
@@ -44,11 +54,9 @@
 # maintainers and result is commited to git
 DOC_STAMPS =				\
 	scan-build.stamp		\
-	tmpl-build.stamp		\
 	sgml-build.stamp		\
 	html-build.stamp		\
 	scan.stamp			\
-	tmpl.stamp			\
 	sgml.stamp			\
 	html.stamp
 
@@ -122,7 +130,7 @@
 	    scanobj_options="--verbose"; \
 	fi; \
 	$(INSPECT_ENVIRONMENT) 					\
-	CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"				\
+	CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)"	\
 	CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)"	\
 	LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"				\
 	$(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)"	\
@@ -161,29 +169,9 @@
 	    --ignore-headers="$(IGNORE_HFILES)";			\
 	touch scan-build.stamp
 
-#### update templates; done on every build ####
-
-# in a non-srcdir build, we need to copy files from the previous step
-# and the files from previous runs of this step
-tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES)
-	@echo '  DOC   Rebuilding template files'
-	@if test x"$(srcdir)" != x. ; then				\
-	    for f in $(SCANOBJ_FILES) $(SCAN_FILES);			\
-	    do								\
-	        if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;	\
-	    done;							\
-	fi
-	@gtkdoc-mktmpl --module=$(DOC_MODULE)
-	@$(PYTHON) \
-		$(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl
-	@touch tmpl-build.stamp
-
-tmpl.stamp: tmpl-build.stamp
-	@true
-
 #### xml ####
 
-sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
+sgml-build.stamp: scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
 	@echo '  DOC   Building XML'
 	@-mkdir -p xml
 	@for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \
@@ -199,6 +187,7 @@
 		--output-format=xml \
 		--ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \
 		$(MKDB_OPTIONS)
+	@$(PYTHON) $(top_srcdir)/common/mangle-db.py xml
 	@cp ../version.entities xml
 	@touch sgml-build.stamp
 
diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
index 9d76889..f8edf40 100644
--- a/common/gtk-doc.mak
+++ b/common/gtk-doc.mak
@@ -3,7 +3,16 @@
 ###########################################################################
 # thomas: except of course that we did
 
-# thomas: copied from glib-2
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
 # We set GPATH here; this gives us semantics for GNU make
 # which are more like other make's VPATH, when it comes to
 # whether a source that is a target of one rule is then
@@ -81,15 +90,22 @@
 		--ignore-headers="$(IGNORE_HFILES)"
 	@if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null; then	\
 	    echo "  DOC   Introspecting gobjects"; \
+	    scanobj_options=""; \
+	    gtkdoc-scangobj 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
+	    if test "$$?" = "0"; then \
+	        if test "x$(V)" = "x1"; then \
+	            scanobj_options="--verbose"; \
+	        fi; \
+	    fi; \
 	    GST_PLUGIN_SYSTEM_PATH_1_0=`cd $(top_builddir) && pwd`		\
 	    GST_PLUGIN_PATH_1_0=						\
 	    GST_REGISTRY_1_0=doc-registry.xml				\
 	    $(GTKDOC_EXTRA_ENVIRONMENT)					\
-	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"				\
+	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)"	\
 	    CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)"				\
 	    LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"				\
 	    gtkdoc-scangobj --type-init-func="gst_init(NULL,NULL)"	\
-	        --module=$(DOC_MODULE) ;				\
+	        $$scanobj_options --module=$(DOC_MODULE) ;				\
 	else								\
 	    for i in $(SCANOBJ_FILES) ; do				\
 	       test -f $$i || touch $$i ;				\
diff --git a/common/m4/Makefile.am b/common/m4/Makefile.am
index 3d387ee..cdcec8c 100644
--- a/common/m4/Makefile.am
+++ b/common/m4/Makefile.am
@@ -11,6 +11,7 @@
 	as-python.m4 \
 	as-version.m4 \
 	ax_create_stdint_h.m4 \
+	ax_pthread.m4 \
 	glib-gettext.m4 \
 	gst-arch.m4 \
 	gst-args.m4 \
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 4f6ed35..6861659 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = common/m4
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -142,6 +153,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -153,7 +165,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -244,6 +261,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -255,9 +273,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -279,6 +299,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -340,8 +361,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -407,6 +430,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -432,6 +456,7 @@
 	as-python.m4 \
 	as-version.m4 \
 	ax_create_stdint_h.m4 \
+	ax_pthread.m4 \
 	glib-gettext.m4 \
 	gst-arch.m4 \
 	gst-args.m4 \
@@ -475,7 +500,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu common/m4/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu common/m4/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -650,6 +674,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/m4/ax_pthread.m4 b/common/m4/ax_pthread.m4
similarity index 83%
rename from m4/ax_pthread.m4
rename to common/m4/ax_pthread.m4
index d90de34..d383ad5 100644
--- a/m4/ax_pthread.m4
+++ b/common/m4/ax_pthread.m4
@@ -82,7 +82,7 @@
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-#serial 18
+#serial 21
 
 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
 AC_DEFUN([AX_PTHREAD], [
@@ -103,8 +103,8 @@
         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_RESULT($ax_pthread_ok)
+        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
+        AC_MSG_RESULT([$ax_pthread_ok])
         if test x"$ax_pthread_ok" = xno; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
@@ -164,6 +164,20 @@
         ;;
 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.
+
+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"
+
 if test x"$ax_pthread_ok" = xno; then
 for flag in $ax_pthread_flags; do
 
@@ -178,7 +192,7 @@
                 ;;
 
                 pthread-config)
-                AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
                 if test x"$ax_pthread_config" = xno; then continue; fi
                 PTHREAD_CFLAGS="`pthread-config --cflags`"
                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
@@ -193,7 +207,7 @@
         save_LIBS="$LIBS"
         save_CFLAGS="$CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        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
@@ -219,7 +233,7 @@
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        AC_MSG_RESULT($ax_pthread_ok)
+        AC_MSG_RESULT([$ax_pthread_ok])
         if test "x$ax_pthread_ok" = xyes; then
                 break;
         fi
@@ -245,9 +259,9 @@
                 [attr_name=$attr; break],
                 [])
         done
-        AC_MSG_RESULT($attr_name)
+        AC_MSG_RESULT([$attr_name])
         if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
                                [Define to necessary symbol if this constant
                                 uses a non-standard name on your system.])
         fi
@@ -261,45 +275,54 @@
             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})
+        AC_MSG_RESULT([$flag])
         if test "x$flag" != xno; then
             PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
         fi
 
         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], [
+                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.]))
+            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
 
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        # More AIX lossage: must compile with xlc_r or cc_r
-        if test x"$GCC" != xyes; then
-          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
-        else
-          PTHREAD_CC=$CC
+        # More AIX lossage: compile with *_r variant
+        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])])])
+                ;;
+            esac
         fi
-else
-        PTHREAD_CC="$CC"
 fi
 
-AC_SUBST(PTHREAD_LIBS)
-AC_SUBST(PTHREAD_CFLAGS)
-AC_SUBST(PTHREAD_CC)
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+AC_SUBST([PTHREAD_LIBS])
+AC_SUBST([PTHREAD_CFLAGS])
+AC_SUBST([PTHREAD_CC])
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
 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])
+        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
         :
 else
         ax_pthread_ok=no
diff --git a/common/m4/gst-arch.m4 b/common/m4/gst-arch.m4
index 077a20b..4ad7680 100644
--- a/common/m4/gst-arch.m4
+++ b/common/m4/gst-arch.m4
@@ -45,9 +45,15 @@
     xalpha*)
       HAVE_CPU_ALPHA=yes
       AC_DEFINE(HAVE_CPU_ALPHA, 1, [Define if the target CPU is an Alpha]) ;;
+    xarc*)
+      HAVE_CPU_ARC=yes
+      AC_DEFINE(HAVE_CPU_ARC, 1, [Define if the target CPU is an ARC]) ;;
     xarm*)
       HAVE_CPU_ARM=yes
       AC_DEFINE(HAVE_CPU_ARM, 1, [Define if the target CPU is an ARM]) ;;
+    xaarch64*)
+      HAVE_CPU_AARCH64=yes
+      AC_DEFINE(HAVE_CPU_AARCH64, 1, [Define if the target CPU is AARCH64]) ;;
     xsparc*)
       HAVE_CPU_SPARC=yes
       AC_DEFINE(HAVE_CPU_SPARC, 1, [Define if the target CPU is a SPARC]) ;;
@@ -84,6 +90,7 @@
   AM_CONDITIONAL(HAVE_CPU_PPC,        test "x$HAVE_CPU_PPC" = "xyes")
   AM_CONDITIONAL(HAVE_CPU_PPC64,      test "x$HAVE_CPU_PPC64" = "xyes")
   AM_CONDITIONAL(HAVE_CPU_ALPHA,      test "x$HAVE_CPU_ALPHA" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_ARC,        test "x$HAVE_CPU_ARC" = "xyes")
   AM_CONDITIONAL(HAVE_CPU_ARM,        test "x$HAVE_CPU_ARM" = "xyes")
   AM_CONDITIONAL(HAVE_CPU_SPARC,      test "x$HAVE_CPU_SPARC" = "xyes")
   AM_CONDITIONAL(HAVE_CPU_HPPA,       test "x$HAVE_CPU_HPPA" = "xyes")
@@ -104,7 +111,7 @@
   AC_MSG_CHECKING([if unaligned memory access works correctly])
   if test x"$as_cv_unaligned_access" = x ; then
     case $host in
-      alpha*|arm*|hp*|mips*|sh*|sparc*|ia64*)
+      alpha*|arc*|arm*|aarch64*|hp*|mips*|sh*|sparc*|ia64*)
         _AS_ECHO_N([(blacklisted) ])
         as_cv_unaligned_access=no
 	;;
diff --git a/common/m4/gst-error.m4 b/common/m4/gst-error.m4
index bce80d2..d6487cc 100644
--- a/common/m4/gst-error.m4
+++ b/common/m4/gst-error.m4
@@ -76,14 +76,6 @@
             ])
           done
       ])
-    else
-      dnl Add -fno-strict-aliasing for GLib versions before 2.19.8
-      dnl as before G_LOCK and friends caused strict aliasing compiler
-      dnl warnings.
-      PKG_CHECK_EXISTS([glib-2.0 < 2.19.8], [
-        AS_COMPILER_FLAG(-fno-strict-aliasing,
-            ERROR_CFLAGS="$ERROR_CFLAGS -fno-strict-aliasing")
-	])
     fi
   fi
 
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
index 63f0f46..5b9cd8b 100644
--- a/common/m4/gst-glib2.m4
+++ b/common/m4/gst-glib2.m4
@@ -120,6 +120,10 @@
   GIO_LIBDIR="`$PKG_CONFIG --variable=libdir gio-2.0`"
   AC_DEFINE_UNQUOTED(GIO_LIBDIR, "$GIO_LIBDIR",
       [The GIO library directory.])
+  GIO_PREFIX="`$PKG_CONFIG --variable=prefix gio-2.0`"
+  AC_DEFINE_UNQUOTED(GIO_PREFIX, "$GIO_PREFIX",
+      [The GIO install prefix.])
+
   AC_SUBST(GIO_CFLAGS)
   AC_SUBST(GIO_LIBS)
   AC_SUBST(GIO_LDFLAGS)
diff --git a/common/m4/gst-parser.m4 b/common/m4/gst-parser.m4
index b002047..382ef72 100644
--- a/common/m4/gst-parser.m4
+++ b/common/m4/gst-parser.m4
@@ -15,7 +15,7 @@
   bison_version=`$BISON_PATH --version | head -n 1 |  sed 's/^[[^0-9]]*//' | sed 's/[[^0-9]]*$//' | cut -d' ' -f1`
   AC_MSG_CHECKING([bison version $bison_version >= $bison_min_version])
 
-  if perl -we "exit ((v$bison_version ge v$bison_min_version) ? 0 : 1)"; then
+  if perl -we "exit (('v$bison_version' ge 'v$bison_min_version') ? 0 : 1)"; then
     AC_MSG_RESULT([yes])
   else
     AC_MSG_ERROR([no])
diff --git a/common/m4/gst-x11.m4 b/common/m4/gst-x11.m4
index d3baf2d..c41ddff 100644
--- a/common/m4/gst-x11.m4
+++ b/common/m4/gst-x11.m4
@@ -9,7 +9,11 @@
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 
   dnl now try to find the HEADER
-  AC_CHECK_HEADER(X11/Xlib.h, HAVE_X="yes", HAVE_X="no")
+  HAVE_X="no"
+  AC_CHECK_HEADER([X11/Xlib.h], [
+    dnl and then the library with the most uniquitous function
+    AC_CHECK_LIB(X11, [XSync], [HAVE_X="yes"], [], [$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS])
+  ], [], [AC_INCLUDES_DEFAULT])
 
   if test "x$HAVE_X" = "xno"
   then
diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4
index 589721c..162be57 100644
--- a/common/m4/introspection.m4
+++ b/common/m4/introspection.m4
@@ -62,6 +62,7 @@
        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
        INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+       INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);"
     fi
     AC_SUBST(INTROSPECTION_SCANNER)
     AC_SUBST(INTROSPECTION_COMPILER)
@@ -71,6 +72,7 @@
     AC_SUBST(INTROSPECTION_CFLAGS)
     AC_SUBST(INTROSPECTION_LIBS)
     AC_SUBST(INTROSPECTION_MAKEFILE)
+    AC_SUBST(INTROSPECTION_INIT)
 
     AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
 ])
diff --git a/common/mangle-db.py b/common/mangle-db.py
new file mode 100644
index 0000000..463e5bc
--- /dev/null
+++ b/common/mangle-db.py
@@ -0,0 +1,71 @@
+# -*- Mode: Python -*-
+# vi:si:et:sw=4:sts=4:ts=4
+
+"""
+Insert includes for the element-*-details.xml files into the related docbook
+files.
+"""
+
+from __future__ import print_function, unicode_literals
+
+import codecs
+import glob
+import os
+import sys
+
+import xml.dom.minidom
+
+def patch(related, details):
+    try:
+        doc = xml.dom.minidom.parse(related)
+    except IOError:
+        return
+
+    # find the insertion point
+    elem = None
+    for e in doc.childNodes:
+        if e.nodeType == e.ELEMENT_NODE and e.localName == 'refentry':
+            elem = e
+            break
+    if elem == None:
+        return
+
+    elem2 = None
+    for e in elem.childNodes:
+        if e.nodeType == e.ELEMENT_NODE and e.localName == 'refsect1':
+            id = e.getAttributeNode('id')
+            role = e.getAttributeNode('role')
+            if id and id.nodeValue.endswith('.description') and role and role.nodeValue == 'desc':
+                elem2 = e
+                break
+    if elem2 == None:
+        return
+
+    # insert include
+    include = doc.createElement('include')
+    include.setAttribute('xmlns', 'http://www.w3.org/2003/XInclude')
+    include.setAttribute('href', details)
+    fallback = doc.createElement('fallback')
+    fallback.setAttribute('xmlns', 'http://www.w3.org/2003/XInclude')
+    include.appendChild(fallback)
+    elem2.appendChild(include)
+
+    # store patched file
+    result = codecs.open(related, mode="w", encoding="utf-8")
+    #result = open(related, "wb")
+    doc.writexml(result)
+    result.close()
+
+def main():
+    if not len(sys.argv) == 2:
+        sys.stderr.write('Please specify the xml/ dir')
+        sys.exit(1)
+
+    xmldir = sys.argv[1]
+
+    # parse all *-details.xml files and patch includes into the corresponding
+    # xml files
+    for details in glob.glob("%s/element-*-details.xml" % xmldir):
+        patch (details.replace("-details", ""), os.path.basename(details))
+
+main()
diff --git a/common/mangle-tmpl.py b/common/mangle-tmpl.py
deleted file mode 100644
index 51ea8c2..0000000
--- a/common/mangle-tmpl.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# -*- Mode: Python -*-
-# vi:si:et:sw=4:sts=4:ts=4
-
-"""
-use the output from gst-xmlinspect.py to mangle tmpl/*.sgml and
-insert/overwrite Short Description and Long Description
-"""
-
-# FIXME: right now it uses pygst and scans on its own;
-# we really should use inspect/*.xml instead since the result of
-# gst-xmlinspect.py is committed by the docs maintainer, who can be
-# expected to have pygst, but this step should be done for every docs build,
-# so no pygst allowed
-
-# read in inspect/*.xml
-# for every tmpl/element-(name).xml: mangle with details from element
-
-from __future__ import print_function, unicode_literals
-
-import glob
-import re
-import sys
-import os
-
-class Tmpl:
-    def __init__(self, filename):
-        self.filename = filename
-        self._sectionids = []
-        self._sections = {}
-
-    def read(self):
-        """
-        Read and parse the sections from the given file.
-        """
-        lines = open(self.filename).readlines()
-        matcher = re.compile("<!-- ##### SECTION (\S+) ##### -->\n")
-        id = None
-
-        for line in lines:
-            match = matcher.search(line)
-            if match:
-                id = match.expand("\\1")
-                self._sectionids.append(id)
-                self._sections[id] = []
-            else:
-                if not id:
-                    sys.stderr.write(
-                        "WARNING: line before a SECTION header: %s" % line)
-                else:
-                    self._sections[id].append(line)
-
-    def get_section(self, id):
-        """
-        Get the content from the given section.
-        """
-        return self._sections[id]
-
-    def set_section(self, id, content):
-        """
-        Replace the given section id with the given content.
-        """
-        self._sections[id] = content
-
-    def output(self):
-        """
-        Return the output of the current template in the tmpl/*.sgml format.
-        """
-        lines = []
-        for id in self._sectionids:
-            lines.append("<!-- ##### SECTION %s ##### -->\n" % id)
-            for line in self._sections[id]:
-                lines.append(line)
-
-        return "".join(lines)
-
-    def write(self, backup=False):
-        """
-        Write out the template file again, backing up the previous one.
-        """
-        if backup:
-            target = self.filename + ".mangle.bak"
-            os.rename(self.filename, target)
-
-        handle = open(self.filename, "w")
-        handle.write(self.output())
-        handle.close()
-
-import xml.dom.minidom
-
-def get_elements(file):
-    elements = {}
-    doc = xml.dom.minidom.parse(file)
-
-    elem = None
-    for e in doc.childNodes:
-        if e.nodeType == e.ELEMENT_NODE and e.localName == 'plugin':
-            elem = e
-            break
-    if elem == None:
-        return None
-
-    elem2 = None
-    for e in elem.childNodes:
-        if e.nodeType == e.ELEMENT_NODE and e.localName == 'elements':
-            elem2 = e
-            break
-    if elem2 == None:
-        return None
-
-    elem = elem2
-
-    for e in elem.childNodes:
-        if e.nodeType == e.ELEMENT_NODE and e.localName == 'element':
-            name = None
-            description = None
-
-            for e2 in e.childNodes:
-                if e2.nodeType == e2.ELEMENT_NODE and e2.localName == 'name':
-                    name = e2.childNodes[0].nodeValue.encode("UTF-8")
-                elif e2.nodeType == e2.ELEMENT_NODE and e2.localName == 'description':
-                    if e2.childNodes:
-                      description = e2.childNodes[0].nodeValue.encode("UTF-8")
-                    else:
-                      description = 'No description'
-
-            if name != None and description != None:
-                elements[name] = {'description': description}
-
-    return elements
-
-def main():
-    if not len(sys.argv) == 3:
-        sys.stderr.write('Please specify the inspect/ dir and the tmpl/ dir')
-        sys.exit(1)
-
-    inspectdir = sys.argv[1]
-    tmpldir = sys.argv[2]
-
-    # parse all .xml files; build map of element name -> short desc
-    #for file in glob.glob("inspect/plugin-*.xml"):
-    elements = {}
-    for file in glob.glob("%s/plugin-*.xml" % inspectdir):
-        elements.update(get_elements(file))
-
-    for file in glob.glob("%s/element-*.sgml" % tmpldir):
-        base = os.path.basename(file)
-        element = base[len("element-"):-len(".sgml")]
-        tmpl = Tmpl(file)
-        tmpl.read()
-        if element in elements.keys():
-            description = elements[element]['description']
-            tmpl.set_section("Short_Description", "%s\n\n" % description)
-
-        # put in an include if not yet there
-        line = '<include xmlns="http://www.w3.org/2003/XInclude" href="' + \
-            'element-' + element + '-details.xml">' + \
-            '<fallback xmlns="http://www.w3.org/2003/XInclude" />' + \
-            '</include>\n'
-        section = tmpl.get_section("Long_Description")
-        if not section[0]  == line:
-            section.insert(0, line)
-        tmpl.set_section("Long_Description", section)
-        tmpl.write()
-
-main()
diff --git a/common/scangobj-merge.py b/common/scangobj-merge.py
index 4a9f1fc..46736b4 100755
--- a/common/scangobj-merge.py
+++ b/common/scangobj-merge.py
@@ -8,8 +8,9 @@
 
 from __future__ import print_function, unicode_literals
 
-import sys
+import codecs
 import os
+import sys
 
 def debug(*args):
     pass
@@ -105,10 +106,12 @@
 class GDoc:
     def load_file(self, filename):
         try:
-            lines = open(filename).readlines()
+            lines = codecs.open(filename, encoding='utf-8').readlines()
             self.load_data("".join(lines))
         except IOError:
             print ("WARNING - could not read from %s" % filename)
+        except UnicodeDecodeError as e:
+            print ("WARNING - could not parse %s: %s" % (filename, e))
 
     def save_file(self, filename, backup=False):
         """
@@ -116,7 +119,7 @@
         """
         olddata = None
         try:
-            lines = open(filename).readlines()
+            lines = codecs.open(filename, encoding='utf-8').readlines()
             olddata = "".join(lines)
         except IOError:
             print ("WARNING - could not read from %s" % filename)
@@ -128,7 +131,7 @@
             if backup:
                 os.rename(filename, filename + '.bak')
 
-        handle = open(filename, "w")
+        handle = codecs.open(filename, "w", encoding='utf-8')
         handle.write(newdata)
         handle.close()
 
diff --git a/compile b/compile
index 531136b..a85b723 100755
--- a/compile
+++ b/compile
@@ -3,7 +3,7 @@
 
 scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
diff --git a/config.guess b/config.guess
index 1f5c50c..1659250 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
 
-timestamp='2014-03-23'
+timestamp='2015-08-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -24,12 +24,12 @@
 # program.  This Exception is an additional permission under section 7
 # of the GNU General Public License, version 3 ("GPLv3").
 #
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 #
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
 
 
 me=`echo "$0" | sed -e 's,.*/,,'`
@@ -50,7 +50,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -168,20 +168,27 @@
 	# Note: NetBSD doesn't particularly care about the vendor
 	# portion of the name.  We always set it to "unknown".
 	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || \
+	    echo unknown)`
 	case "${UNAME_MACHINE_ARCH}" in
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    sh3el) machine=shl-unknown ;;
 	    sh3eb) machine=sh-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
+		;;
 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
 	# to ELF recently, or will in the future.
 	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
 			| grep -q __ELF__
@@ -197,6 +204,13 @@
 		os=netbsd
 		;;
 	esac
+	# Determine ABI tags.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		;;
+	esac
 	# The OS release
 	# Debian GNU/NetBSD machines have a different userland, and
 	# thus, need a distinct triplet. However, they do not need
@@ -207,13 +221,13 @@
 		release='-gnu'
 		;;
 	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
 		;;
 	esac
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
+	echo "${machine}-${os}${release}${abi}"
 	exit ;;
     *:Bitrig:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -235,6 +249,9 @@
     *:MirBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
 	exit ;;
+    *:Sortix:*:*)
+	echo ${UNAME_MACHINE}-unknown-sortix
+	exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	*4.0)
@@ -579,8 +596,9 @@
 	else
 		IBM_ARCH=powerpc
 	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
+	if [ -x /usr/bin/lslpp ] ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 	else
 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
 	fi
@@ -932,6 +950,9 @@
     crisv32:Linux:*:*)
 	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
+    e2k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     frv:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
@@ -1020,7 +1041,7 @@
 	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
 	exit ;;
     x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
 	exit ;;
     xtensa*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
diff --git a/config.h.in b/config.h.in
index b00caea..ebc6782 100644
--- a/config.h.in
+++ b/config.h.in
@@ -22,6 +22,9 @@
 /* The GIO modules directory. */
 #undef GIO_MODULE_DIR
 
+/* The GIO install prefix. */
+#undef GIO_PREFIX
+
 /* GStreamer API Version */
 #undef GST_API_VERSION
 
@@ -67,6 +70,12 @@
 /* location of the installed gst-plugin-scanner */
 #undef GST_PLUGIN_SCANNER_INSTALLED
 
+/* location of the installed gst-ptp-helper */
+#undef GST_PTP_HELPER_INSTALLED
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
 /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
    CoreFoundation framework. */
 #undef HAVE_CFLOCALECOPYCURRENT
@@ -78,9 +87,15 @@
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
+/* Define if the target CPU is AARCH64 */
+#undef HAVE_CPU_AARCH64
+
 /* Define if the target CPU is an Alpha */
 #undef HAVE_CPU_ALPHA
 
+/* Define if the target CPU is an ARC */
+#undef HAVE_CPU_ARC
+
 /* Define if the target CPU is an ARM */
 #undef HAVE_CPU_ARM
 
@@ -124,6 +139,22 @@
    */
 #undef HAVE_DCGETTEXT
 
+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ALARM
+
+/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you
+   don't. */
+#undef HAVE_DECL_LOCALTIME_R
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRDUP
+
+/* Define to 1 if you have the declaration of `strsignal', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRSIGNAL
+
 /* Defined if we have dladdr () */
 #undef HAVE_DLADDR
 
@@ -133,6 +164,9 @@
 /* Define to 1 if you have the `fgetpos' function. */
 #undef HAVE_FGETPOS
 
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
 #undef HAVE_FSEEKO
 
@@ -148,9 +182,15 @@
 /* defined if the compiler implements __FUNCTION__ */
 #undef HAVE_FUNCTION
 
+/* getifaddrs() and AF_LINK is available */
+#undef HAVE_GETIFADDRS_AF_LINK
+
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
+/* Define to 1 if you have the `getpid' function. */
+#undef HAVE_GETPID
+
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
@@ -176,6 +216,9 @@
    declares uintmax_t. */
 #undef HAVE_INTTYPES_H_WITH_UINTMAX
 
+/* Define to 1 if you have the `rt' library (-lrt). */
+#undef HAVE_LIBRT
+
 /* Define to 1 if you have the `localtime_r' function. */
 #undef HAVE_LOCALTIME_R
 
@@ -188,6 +231,9 @@
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
 /* Define to 1 if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 
@@ -227,15 +273,39 @@
 /* Have PTHREAD_PRIO_INHERIT. */
 #undef HAVE_PTHREAD_PRIO_INHERIT
 
+/* Have function pthread_setname_np(const char*) */
+#undef HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
+
+/* PTP support available */
+#undef HAVE_PTP
+
+/* Use capabilities for permissions in PTP helper */
+#undef HAVE_PTP_HELPER_CAPABILITIES
+
+/* Use setuid-root for permissions in PTP helper */
+#undef HAVE_PTP_HELPER_SETUID
+
+/* PTP helper setuid group */
+#undef HAVE_PTP_HELPER_SETUID_GROUP
+
+/* PTP helper setuid user */
+#undef HAVE_PTP_HELPER_SETUID_USER
+
 /* Define to 1 if the system has the type `ptrdiff_t'. */
 #undef HAVE_PTRDIFF_T
 
 /* Define if RDTSC is available */
 #undef HAVE_RDTSC
 
+/* Define to 1 if you have the `setitimer' function. */
+#undef HAVE_SETITIMER
+
 /* Define to 1 if you have the `sigaction' function. */
 #undef HAVE_SIGACTION
 
+/* SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR is available */
+#undef HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
@@ -249,12 +319,30 @@
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
+/* Define to 1 if you have the `strcasestr' function. */
+#undef HAVE_STRCASESTR
+
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
+/* Define to 1 if you have the `strsignal' function. */
+#undef HAVE_STRSIGNAL
+
+/* Define to 1 if `it_interval' is a member of `struct itimerspec'. */
+#undef HAVE_STRUCT_ITIMERSPEC_IT_INTERVAL
+
+/* Define to 1 if `it_value' is a member of `struct itimerspec'. */
+#undef HAVE_STRUCT_ITIMERSPEC_IT_VALUE
+
+/* Define to 1 if `tv_nsec' is a member of `struct timespec'. */
+#undef HAVE_STRUCT_TIMESPEC_TV_NSEC
+
+/* Define to 1 if `tv_sec' is a member of `struct timespec'. */
+#undef HAVE_STRUCT_TIMESPEC_TV_SEC
+
 /* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H
 
@@ -279,12 +367,18 @@
 /* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H
 
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
 /* Define to 1 if you have the <sys/utsname.h> header file. */
 #undef HAVE_SYS_UTSNAME_H
 
 /* Define to 1 if you have the <sys/wait.h> header file. */
 #undef HAVE_SYS_WAIT_H
 
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
 /* Have tm_gmtoff field in struct tm */
 #undef HAVE_TM_GMTOFF
 
@@ -315,6 +409,12 @@
 /* Define to 1 if you have the <winsock2.h> header file. */
 #undef HAVE_WINSOCK2_H
 
+/* Define to 1 if you have the `_getpid' function. */
+#undef HAVE__GETPID
+
+/* Define to 1 if you have the `_strdup' function. */
+#undef HAVE__STRDUP
+
 /* the host CPU */
 #undef HOST_CPU
 
@@ -383,6 +483,12 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* Need to define the itimerspec structure */
+#undef STRUCT_ITIMERSPEC_DEFINITION_MISSING
+
+/* Need to define the timespec structure */
+#undef STRUCT_TIMESPEC_DEFINITION_MISSING
+
 /* the target CPU */
 #undef TARGET_CPU
 
@@ -421,9 +527,15 @@
 /* We need at least WinXP SP2 for __stat64 */
 #undef __MSVCRT_VERSION__
 
+/* clockid_t */
+#undef clockid_t
+
 /* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
    not define. */
 #undef intmax_t
 
 /* Define to `unsigned int' if <sys/types.h> does not define. */
 #undef size_t
+
+/* timer_t */
+#undef timer_t
diff --git a/config.sub b/config.sub
index bba4efb..1acc966 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
 
-timestamp='2014-09-11'
+timestamp='2015-08-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@
 # of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -68,7 +68,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -117,7 +117,7 @@
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
@@ -255,12 +255,13 @@
 	| arc | arceb \
 	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
 	| avr | avr32 \
+	| ba \
 	| be32 | be64 \
 	| bfin \
 	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
+	| e2k | epiphany \
+	| fido | fr30 | frv | ft32 \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| hexagon \
 	| i370 | i860 | i960 | ia64 \
@@ -305,7 +306,7 @@
 	| riscv32 | riscv64 \
 	| rl78 | rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -313,6 +314,7 @@
 	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
 	| ubicom32 \
 	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| visium \
 	| we32k \
 	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
@@ -327,6 +329,9 @@
 	c6x)
 		basic_machine=tic6x-unknown
 		;;
+	leon|leon[3-9])
+		basic_machine=sparc-$basic_machine
+		;;
 	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
@@ -372,12 +377,13 @@
 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| ba-* \
 	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
+	| e2k-* | elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
@@ -424,12 +430,13 @@
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
+	| riscv32-* | riscv64-* \
 	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
 	| tahoe-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
 	| tile*-* \
@@ -437,6 +444,7 @@
 	| ubicom32-* \
 	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
 	| vax-* \
+	| visium-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
@@ -513,6 +521,9 @@
 		basic_machine=i386-pc
 		os=-aros
 		;;
+        asmjs)
+		basic_machine=asmjs-unknown
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -774,6 +785,9 @@
 		basic_machine=m68k-isi
 		os=-sysv
 		;;
+	leon-*|leon[3-9]-*)
+		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+		;;
 	m68knommu)
 		basic_machine=m68k-unknown
 		os=-linux
@@ -1365,7 +1379,7 @@
 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
 	      | -sym* | -kopensolaris* | -plan9* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
+	      | -aos* | -aros* | -cloudabi* | -sortix* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
diff --git a/configure b/configure
index ead78ab..31b3402 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.4.5.
+# Generated by GNU Autoconf 2.69 for GStreamer 1.5.91.
 #
 # 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.4.5'
-PACKAGE_STRING='GStreamer 1.4.5'
+PACKAGE_VERSION='1.5.91'
+PACKAGE_STRING='GStreamer 1.5.91'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -642,10 +642,22 @@
 SUBUNIT_FALSE
 SUBUNIT_TRUE
 ENABLE_SUBUNIT
+HAVE_CLOCK_GETTIME_FALSE
+HAVE_CLOCK_GETTIME_TRUE
+HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE
+HAVE_TIMER_CREATE_SETTIME_DELETE_TRUE
+HAVE_STRSIGNAL_FALSE
+HAVE_STRSIGNAL_TRUE
+HAVE_LOCALTIME_R_FALSE
+HAVE_LOCALTIME_R_TRUE
+HAVE_ALARM_FALSE
+HAVE_ALARM_TRUE
+HAVE_FORK
 CHECK_VERSION
 CHECK_MICRO_VERSION
 CHECK_MINOR_VERSION
 CHECK_MAJOR_VERSION
+GST_PTP_HELPER_INSTALLED
 GST_PLUGIN_SCANNER_INSTALLED
 GST_PLUGIN_LDFLAGS
 GST_OBJ_LIBS
@@ -689,6 +701,7 @@
 GST_HAVE_POSIX_TIMERS_DEFINE
 HAVE_MMAP_FALSE
 HAVE_MMAP_TRUE
+SOCKET_LIBS
 HAVE_GSL
 GSL_LIBS
 HAVE_GMP
@@ -757,6 +770,7 @@
 HAVE_DOCBOOK2PS
 HAVE_INTROSPECTION_FALSE
 HAVE_INTROSPECTION_TRUE
+INTROSPECTION_INIT
 INTROSPECTION_MAKEFILE
 INTROSPECTION_LIBS
 INTROSPECTION_CFLAGS
@@ -805,6 +819,8 @@
 HAVE_CPU_SPARC_TRUE
 HAVE_CPU_ARM_FALSE
 HAVE_CPU_ARM_TRUE
+HAVE_CPU_ARC_FALSE
+HAVE_CPU_ARC_TRUE
 HAVE_CPU_ALPHA_FALSE
 HAVE_CPU_ALPHA_TRUE
 HAVE_CPU_PPC64_FALSE
@@ -813,6 +829,15 @@
 HAVE_CPU_PPC_TRUE
 HAVE_CPU_I386_FALSE
 HAVE_CPU_I386_TRUE
+HAVE_PTP_HELPER_CAPABILITIES_FALSE
+HAVE_PTP_HELPER_CAPABILITIES_TRUE
+HAVE_PTP_HELPER_SETUID_FALSE
+HAVE_PTP_HELPER_SETUID_TRUE
+HAVE_PTP_FALSE
+HAVE_PTP_TRUE
+SETCAP
+HAVE_CAP
+CAP_LIBS
 BUILD_TOOLS_FALSE
 BUILD_TOOLS_TRUE
 BUILD_BENCHMARKS_FALSE
@@ -824,6 +849,12 @@
 GST_PLUGIN_BUILD_STATIC_FALSE
 GST_PLUGIN_BUILD_STATIC_TRUE
 GST_PLUGIN_LIBTOOLFLAGS
+ENABLE_BASH_COMPLETION_FALSE
+ENABLE_BASH_COMPLETION_TRUE
+BASH_HELPERS_DIR
+BASH_COMPLETION_DIR
+BASH_COMPLETION_LIBS
+BASH_COMPLETION_CFLAGS
 GST_PKG_CONFIG_PATH
 GST_PACKAGE_ORIGIN
 GST_PACKAGE_NAME
@@ -998,6 +1029,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -1054,12 +1086,16 @@
 with_pkg_config_path
 with_package_name
 with_package_origin
+with_bash_completion_dir
 enable_static_plugins
 enable_tests
 enable_failing_tests
 enable_benchmarks
 enable_tools
 enable_poisoning
+with_ptp_helper_setuid_user
+with_ptp_helper_setuid_group
+with_ptp_helper_permissions
 enable_largefile
 enable_introspection
 enable_docbook
@@ -1085,6 +1121,8 @@
 PKG_CONFIG
 VALGRIND_CFLAGS
 VALGRIND_LIBS
+BASH_COMPLETION_CFLAGS
+BASH_COMPLETION_LIBS
 CCAS
 CCASFLAGS
 CXX
@@ -1136,6 +1174,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1388,6 +1427,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1525,7 +1573,7 @@
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1638,7 +1686,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.4.5 to adapt to many kinds of systems.
+\`configure' configures GStreamer 1.5.91 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1678,6 +1726,7 @@
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1709,7 +1758,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer 1.4.5:";;
+     short | recursive ) echo "Configuration of GStreamer 1.5.91:";;
    esac
   cat <<\_ACEOF
 
@@ -1793,6 +1842,18 @@
   --with-pkg-config-path  colon-separated list of pkg-config(1) dirs
   --with-package-name     specify package name to use in plugins
   --with-package-origin   specify package origin URL to use in plugins
+  --with-bash-completion-dir=PATH
+                          Install the bash auto-completion script in this
+                          directory. [default=yes]
+  --with-ptp-helper-setuid-user
+                          User to switch to when installing gst-ptp-helper
+                          setuid root
+  --with-ptp-helper-setuid-group
+                          Group to switch to when installing gst-ptp-helper
+                          setuid root
+  --with-ptp-helper-permissions
+                          how to gain PTP permissions (none, setuid-root,
+                          capabilities, auto)
   --with-html-dir=PATH    path to installed docs
   --with-memory-alignment 8,N,malloc,pagesize (default is 32)
 
@@ -1810,6 +1871,10 @@
               C compiler flags for VALGRIND, overriding pkg-config
   VALGRIND_LIBS
               linker flags for VALGRIND, overriding pkg-config
+  BASH_COMPLETION_CFLAGS
+              C compiler flags for BASH_COMPLETION, overriding pkg-config
+  BASH_COMPLETION_LIBS
+              linker flags for BASH_COMPLETION, overriding pkg-config
   CCAS        assembler compiler command (defaults to CC)
   CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
   CXX         C++ compiler command
@@ -1891,7 +1956,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer configure 1.4.5
+GStreamer configure 1.5.91
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2166,6 +2231,126 @@
 
 } # ac_fn_c_check_func
 
+# ac_fn_c_check_header_preproc LINENO HEADER VAR
+# ----------------------------------------------
+# Tests whether HEADER is present, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_preproc ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_preproc
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------------------------------------------ ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer ##
+## ------------------------------------------------------------------------ ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
 # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
 # ---------------------------------------------
 # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
@@ -2333,97 +2518,6 @@
 
 } # ac_fn_cxx_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------------------------------------------ ##
-## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer ##
-## ------------------------------------------------------------------------ ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
 # -------------------------------------------
 # Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2478,6 +2572,63 @@
 
 } # ac_fn_c_check_type
 
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
+
 # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
 # --------------------------------------------
 # Tries to find the compile-time value of EXPR in a program that includes
@@ -2664,7 +2815,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.4.5, which was
+It was created by GStreamer $as_me 1.5.91, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3159,7 +3310,7 @@
 
 
 
-am__api_version='1.14'
+am__api_version='1.15'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -3351,7 +3502,7 @@
 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\	*)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -3645,7 +3796,7 @@
 
 # Define the identity of the package.
  PACKAGE='gstreamer'
- VERSION='1.4.5'
+ VERSION='1.5.91'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3679,8 +3830,8 @@
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
@@ -3856,9 +4007,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.4.5 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.4.5 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.4.5 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.5.91 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.5.91 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.5.91 | cut -d'.' -f3)
 
 
 
@@ -3869,7 +4020,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.4.5 | cut -d'.' -f4)
+  NANO=$(echo 1.5.91 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8527,10 +8678,10 @@
 done
 
 
-  GST_CURRENT=405
+  GST_CURRENT=590
   GST_REVISION=0
-  GST_AGE=405
-  GST_LIBVERSION=405:0:405
+  GST_AGE=590
+  GST_LIBVERSION=590:0:590
 
 
 
@@ -15718,6 +15869,182 @@
   fi
 
 
+
+# Check whether --with-bash-completion-dir was given.
+if test "${with_bash_completion_dir+set}" = set; then :
+  withval=$with_bash_completion_dir;
+else
+  with_bash_completion_dir=yes
+fi
+
+
+if test "x$with_bash_completion_dir" = "xyes"
+then
+    extra_args=
+
+    if test "x$prefix" != "xNONE"
+    then
+        extra_args="--define-variable=prefix=\"$prefix\""
+    fi
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASH_COMPLETION" >&5
+$as_echo_n "checking for BASH_COMPLETION... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$BASH_COMPLETION_CFLAGS"; then
+        pkg_cv_BASH_COMPLETION_CFLAGS="$BASH_COMPLETION_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bash-completion >= 2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "bash-completion >= 2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BASH_COMPLETION_CFLAGS=`$PKG_CONFIG --cflags "bash-completion >= 2.0" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$BASH_COMPLETION_LIBS"; then
+        pkg_cv_BASH_COMPLETION_LIBS="$BASH_COMPLETION_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bash-completion >= 2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "bash-completion >= 2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BASH_COMPLETION_LIBS=`$PKG_CONFIG --libs "bash-completion >= 2.0" 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
+	        BASH_COMPLETION_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "bash-completion >= 2.0"`
+        else
+	        BASH_COMPLETION_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "bash-completion >= 2.0"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$BASH_COMPLETION_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                BASH_COMPLETION_DIR="$datadir/bash-completion/completions"
+elif test $pkg_failed = untried; then
+	BASH_COMPLETION_DIR="$datadir/bash-completion/completions"
+else
+	BASH_COMPLETION_CFLAGS=$pkg_cv_BASH_COMPLETION_CFLAGS
+	BASH_COMPLETION_LIBS=$pkg_cv_BASH_COMPLETION_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	BASH_COMPLETION_DIR="`eval pkg-config $extra_args --variable=completionsdir bash-completion`"
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASH_COMPLETION" >&5
+$as_echo_n "checking for BASH_COMPLETION... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$BASH_COMPLETION_CFLAGS"; then
+        pkg_cv_BASH_COMPLETION_CFLAGS="$BASH_COMPLETION_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bash-completion >= 2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "bash-completion >= 2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BASH_COMPLETION_CFLAGS=`$PKG_CONFIG --cflags "bash-completion >= 2.0" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$BASH_COMPLETION_LIBS"; then
+        pkg_cv_BASH_COMPLETION_LIBS="$BASH_COMPLETION_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bash-completion >= 2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "bash-completion >= 2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BASH_COMPLETION_LIBS=`$PKG_CONFIG --libs "bash-completion >= 2.0" 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
+	        BASH_COMPLETION_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "bash-completion >= 2.0"`
+        else
+	        BASH_COMPLETION_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "bash-completion >= 2.0"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$BASH_COMPLETION_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                BASH_HELPERS_DIR="$datadir/bash-completion/helpers"
+elif test $pkg_failed = untried; then
+	BASH_HELPERS_DIR="$datadir/bash-completion/helpers"
+else
+	BASH_COMPLETION_CFLAGS=$pkg_cv_BASH_COMPLETION_CFLAGS
+	BASH_COMPLETION_LIBS=$pkg_cv_BASH_COMPLETION_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	BASH_HELPERS_DIR="`eval pkg-config $extra_args --variable=helpersdir bash-completion`"
+fi
+else
+    BASH_COMPLETION_DIR="$with_bash_completion_dir/completions"
+    BASH_HELPERS_DIR="$with_bash_completion_dir/helpers"
+fi
+
+
+
+ if test "x$with_bash_completion_dir" != "xno"; then
+  ENABLE_BASH_COMPLETION_TRUE=
+  ENABLE_BASH_COMPLETION_FALSE='#'
+else
+  ENABLE_BASH_COMPLETION_TRUE='#'
+  ENABLE_BASH_COMPLETION_FALSE=
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static plugins or not" >&5
 $as_echo_n "checking whether to build static plugins or not... " >&6; }
 # Check whether --enable-static-plugins was given.
@@ -15863,6 +16190,324 @@
 
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether PTP support can be enabled" >&5
+$as_echo_n "checking whether PTP support can be enabled... " >&6; }
+case "$host_os" in
+  *android*)
+        HAVE_PTP=no
+    ;;
+  mingw*|pw32*|cygwin*)
+        HAVE_PTP=no
+    ;;
+  darwin*)
+        ac_fn_c_check_header_preproc "$LINENO" "MobileCoreServices/MobileCoreServices.h" "ac_cv_header_MobileCoreServices_MobileCoreServices_h"
+if test "x$ac_cv_header_MobileCoreServices_MobileCoreServices_h" = xyes; then :
+  HAVE_PTP="no"
+else
+  HAVE_PTP="yes"
+fi
+
+
+    ;;
+  linux*|darwin*|solaris*|netbsd*|freebsd*|openbsd*|kfreebsd*|dragonfly*|gnu*)
+    HAVE_PTP=yes
+    ;;
+  *)
+    HAVE_PTP=no
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_PTP" >&5
+$as_echo "$HAVE_PTP" >&6; }
+
+
+# Check whether --with-ptp-helper-setuid-user was given.
+if test "${with_ptp_helper_setuid_user+set}" = set; then :
+  withval=$with_ptp_helper_setuid_user;
+    if test "x$withval" != "x"
+    then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTP_HELPER_SETUID_USER "$withval"
+_ACEOF
+
+    fi
+
+fi
+
+
+
+# Check whether --with-ptp-helper-setuid-group was given.
+if test "${with_ptp_helper_setuid_group+set}" = set; then :
+  withval=$with_ptp_helper_setuid_group;
+    if test "x$withval" != "x"
+    then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTP_HELPER_SETUID_GROUP "$withval"
+_ACEOF
+
+    fi
+
+fi
+
+
+
+# Check whether --with-ptp-helper-permissions was given.
+if test "${with_ptp_helper_permissions+set}" = set; then :
+  withval=$with_ptp_helper_permissions;
+else
+  with_ptp_helper_permissions=auto
+fi
+
+
+gst_ptp_have_cap=no
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cap_init in -lcap" >&5
+$as_echo_n "checking for cap_init in -lcap... " >&6; }
+if ${ac_cv_lib_cap_cap_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcap  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cap_init ();
+int
+main ()
+{
+return cap_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_cap_cap_init=yes
+else
+  ac_cv_lib_cap_cap_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cap_cap_init" >&5
+$as_echo "$ac_cv_lib_cap_cap_init" >&6; }
+if test "x$ac_cv_lib_cap_cap_init" = xyes; then :
+  HAVE_CAP=yes
+else
+  HAVE_CAP=no
+fi
+
+  if test "x$HAVE_CAP" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "sys/capability.h" "ac_cv_header_sys_capability_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_capability_h" = xyes; then :
+  :
+else
+  HAVE_CAP=no
+fi
+
+
+    if test "x$HAVE_CAP" = "xyes"; then
+            CAP_LIBS="-lcap"
+
+                       gst_ptp_have_cap=yes
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+# Extract the first word of "setcap", so it can be a program name with args.
+set dummy setcap; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SETCAP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $SETCAP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_SETCAP="$SETCAP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/bin:/usr/sbin:/sbin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_SETCAP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_SETCAP" && ac_cv_path_SETCAP="no"
+  ;;
+esac
+fi
+SETCAP=$ac_cv_path_SETCAP
+if test -n "$SETCAP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETCAP" >&5
+$as_echo "$SETCAP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x$HAVE_PTP" = "xyes"; then
+
+$as_echo "#define HAVE_PTP 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR" >&5
+$as_echo_n "checking for SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+        #include <sys/ioctl.h>
+        #include <net/if.h>
+
+int
+main ()
+{
+
+        struct ifreq ifr;
+        struct ifconf ifc;
+        ioctl(0, SIOCGIFCONF, &ifc);
+        ioctl(0, SIOCGIFFLAGS, &ifr);
+        ioctl(0, SIOCGIFHWADDR, &ifr);
+        int dummy = ifr.ifr_hwaddr.sa_data[0];
+
+  ;
+  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; }
+
+$as_echo "#define HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR 1" >>confdefs.h
+
+
+else
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getifaddrs() and AF_LINK" >&5
+$as_echo_n "checking for getifaddrs() and AF_LINK... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+        #include <ifaddrs.h>
+        #include <net/if.h>
+        #include <net/if_dl.h>
+
+int
+main ()
+{
+
+        struct ifaddrs *ifaddr;
+        getifaddrs(&ifaddr);
+        int dummy = (ifaddr->ifa_flags & IFF_LOOPBACK) && ifaddr->ifa_addr->sa_family != AF_LINK;
+
+  ;
+  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; }
+
+$as_echo "#define HAVE_GETIFADDRS_AF_LINK 1" >>confdefs.h
+
+
+else
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to install gst-ptp-helper" >&5
+$as_echo_n "checking how to install gst-ptp-helper... " >&6; }
+if test "x$with_ptp_helper_permissions" = "xauto"; then
+    if test "x$gst_ptp_have_cap" = "xyes" -a "x$SETCAP" != "xno"; then
+        with_ptp_helper_permissions="capabilities"
+    else
+        with_ptp_helper_permissions="setuid-root"
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_ptp_helper_permissions" >&5
+$as_echo "$with_ptp_helper_permissions" >&6; }
+
+case "$with_ptp_helper_permissions" in
+  none)
+    ;;
+  setuid-root)
+
+$as_echo "#define HAVE_PTP_HELPER_SETUID 1" >>confdefs.h
+
+    ;;
+  capabilities)
+
+$as_echo "#define HAVE_PTP_HELPER_CAPABILITIES 1" >>confdefs.h
+
+    ;;
+  *)
+    as_fn_error $? "Invalid parameter $with_ptp_helper_permissions" "$LINENO" 5
+    ;;
+esac
+
+fi
+
+ if test "x$HAVE_PTP" = "xyes"; then
+  HAVE_PTP_TRUE=
+  HAVE_PTP_FALSE='#'
+else
+  HAVE_PTP_TRUE='#'
+  HAVE_PTP_FALSE=
+fi
+
+ if test "x$with_ptp_helper_permissions" = "xsetuid-root"; then
+  HAVE_PTP_HELPER_SETUID_TRUE=
+  HAVE_PTP_HELPER_SETUID_FALSE='#'
+else
+  HAVE_PTP_HELPER_SETUID_TRUE='#'
+  HAVE_PTP_HELPER_SETUID_FALSE=
+fi
+
+ if test "x$with_ptp_helper_permissions" = "xcapabilities"; then
+  HAVE_PTP_HELPER_CAPABILITIES_TRUE=
+  HAVE_PTP_HELPER_CAPABILITIES_FALSE='#'
+else
+  HAVE_PTP_HELPER_CAPABILITIES_TRUE='#'
+  HAVE_PTP_HELPER_CAPABILITIES_FALSE=
+fi
+
+
 
 
 
@@ -15929,11 +16574,21 @@
 
 $as_echo "#define HAVE_CPU_ALPHA 1" >>confdefs.h
  ;;
+    xarc*)
+      HAVE_CPU_ARC=yes
+
+$as_echo "#define HAVE_CPU_ARC 1" >>confdefs.h
+ ;;
     xarm*)
       HAVE_CPU_ARM=yes
 
 $as_echo "#define HAVE_CPU_ARM 1" >>confdefs.h
  ;;
+    xaarch64*)
+      HAVE_CPU_AARCH64=yes
+
+$as_echo "#define HAVE_CPU_AARCH64 1" >>confdefs.h
+ ;;
     xsparc*)
       HAVE_CPU_SPARC=yes
 
@@ -16238,6 +16893,14 @@
   HAVE_CPU_ALPHA_FALSE=
 fi
 
+   if test "x$HAVE_CPU_ARC" = "xyes"; then
+  HAVE_CPU_ARC_TRUE=
+  HAVE_CPU_ARC_FALSE='#'
+else
+  HAVE_CPU_ARC_TRUE='#'
+  HAVE_CPU_ARC_FALSE=
+fi
+
    if test "x$HAVE_CPU_ARM" = "xyes"; then
   HAVE_CPU_ARM_TRUE=
   HAVE_CPU_ARM_FALSE='#'
@@ -16338,7 +17001,7 @@
 $as_echo_n "checking if unaligned memory access works correctly... " >&6; }
   if test x"$as_cv_unaligned_access" = x ; then
     case $host in
-      alpha*|arm*|hp*|mips*|sh*|sparc*|ia64*)
+      alpha*|arc*|arm*|aarch64*|hp*|mips*|sh*|sparc*|ia64*)
         $as_echo_n "(blacklisted) " >&6
         as_cv_unaligned_access=no
 	;;
@@ -21576,7 +22239,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking bison version $bison_version >= $bison_min_version" >&5
 $as_echo_n "checking bison version $bison_version >= $bison_min_version... " >&6; }
 
-  if perl -we "exit ((v$bison_version ge v$bison_min_version) ? 0 : 1)"; then
+  if perl -we "exit (('v$bison_version' ge 'v$bison_min_version') ? 0 : 1)"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
   else
@@ -21776,6 +22439,7 @@
        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
        INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+       INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);"
     fi
 
 
@@ -21786,6 +22450,7 @@
 
 
 
+
      if test "x$found_introspection" = "xyes"; then
   HAVE_INTROSPECTION_TRUE=
   HAVE_INTROSPECTION_FALSE='#'
@@ -23446,6 +24111,37 @@
         ;;
 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.
+
+{ $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; }
+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
 
@@ -23515,7 +24211,7 @@
         save_LIBS="$LIBS"
         save_CFLAGS="$CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        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
@@ -23613,12 +24309,13 @@
             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; }
+        { $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
@@ -23631,8 +24328,7 @@
 
                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-                    #include <pthread.h>
+#include <pthread.h>
 int
 main ()
 {
@@ -23661,9 +24357,20 @@
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        # More AIX lossage: must compile with xlc_r or cc_r
-        if test x"$GCC" != xyes; then
-          for ac_prog in xlc_r cc_r
+        # More AIX lossage: compile with *_r variant
+        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 #(
+  x/*) :
+    if as_fn_executable_p ${CC}_r; then :
+  PTHREAD_CC="${CC}_r"
+fi ;; #(
+  *) :
+    for ac_prog in ${CC}_r
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -23704,26 +24411,32 @@
 
   test -n "$PTHREAD_CC" && break
 done
-test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
-
-        else
-          PTHREAD_CC=$CC
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+ ;;
+esac ;; #(
+  *) :
+     ;;
+esac
+                ;;
+            esac
         fi
-else
-        PTHREAD_CC="$CC"
 fi
 
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
 
 
 
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
 if test x"$ax_pthread_ok" = xyes; then
-        HAVE_PTHREAD=yes
+
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
+
         :
 else
         ax_pthread_ok=no
-        HAVE_PTHREAD=no
+
 fi
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -23732,7 +24445,7 @@
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
- if test "x$HAVE_PTHREAD" = "xyes"; then
+ if test "x$ax_pthread_ok" = "xyes"; then
   HAVE_PTHREAD_TRUE=
   HAVE_PTHREAD_FALSE='#'
 else
@@ -23755,6 +24468,46 @@
 done
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_setname_np(const char*)" >&5
+$as_echo_n "checking for pthread_setname_np(const char*)... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+pthread_setname_np("example")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+for ac_header in sys/uio.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_uio_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_UIO_H 1
+_ACEOF
+
+fi
+
+done
+
+
 for ac_header in valgrind/valgrind.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default
@@ -24011,6 +24764,18 @@
 
 
 
+for ac_func in strcasestr
+do :
+  ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr"
+if test "x$ac_cv_func_strcasestr" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRCASESTR 1
+_ACEOF
+
+fi
+done
+
+
 for ac_func in gmtime_r
 do :
   ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r"
@@ -24208,6 +24973,58 @@
 done
 
 
+ac_fn_c_check_func "$LINENO" "socketpair" "ac_cv_func_socketpair"
+if test "x$ac_cv_func_socketpair" = xyes; then :
+
+else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socketpair in -lsocket" >&5
+$as_echo_n "checking for socketpair in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_socketpair+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socketpair ();
+int
+main ()
+{
+return socketpair ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_socketpair=yes
+else
+  ac_cv_lib_socket_socketpair=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socketpair" >&5
+$as_echo "$ac_cv_lib_socket_socketpair" >&6; }
+if test "x$ac_cv_lib_socket_socketpair" = xyes; then :
+
+    SOCKET_LIBS="-lsocket"
+
+
+fi
+
+
+fi
+
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken poll" >&5
 $as_echo_n "checking for broken poll... " >&6; }
@@ -25499,6 +26316,13 @@
 #define GIO_LIBDIR "$GIO_LIBDIR"
 _ACEOF
 
+  GIO_PREFIX="`$PKG_CONFIG --variable=prefix gio-2.0`"
+
+cat >>confdefs.h <<_ACEOF
+#define GIO_PREFIX "$GIO_PREFIX"
+_ACEOF
+
+
 
 
 
@@ -26007,52 +26831,6 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
 $as_echo "$flag_ok" >&6; }
 
-    else
-                        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 < 2.19.8\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 < 2.19.8") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -fno-strict-aliasing" >&5
-$as_echo_n "checking to see if compiler understands -fno-strict-aliasing... " >&6; }
-
-  save_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -fno-strict-aliasing"
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  flag_ok=yes
-else
-  flag_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS="$save_CFLAGS"
-
-  if test "X$flag_ok" = Xyes ; then
-    ERROR_CFLAGS="$ERROR_CFLAGS -fno-strict-aliasing"
-    true
-  else
-
-    true
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
-$as_echo "$flag_ok" >&6; }
-
-
-fi
     fi
   fi
 
@@ -26254,12 +27032,47 @@
 
 
 
+  EXP_VAR=GST_PTP_HELPER_INSTALLED
+  FROM_VAR=${libexecdir}/gstreamer-$GST_API_VERSION/gst-ptp-helper
+
+    prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
+
+    if test "x$prefix" = "xNONE"; then
+    prefix="$ac_default_prefix"
+  fi
+    if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
+
+  full_var="$FROM_VAR"
+    while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var" = "x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
+
+    full_var=$new_full_var
+  GST_PTP_HELPER_INSTALLED="$full_var"
+
+
+    prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
+
+
+cat >>confdefs.h <<_ACEOF
+#define GST_PTP_HELPER_INSTALLED "$GST_PTP_HELPER_INSTALLED"
+_ACEOF
+
+
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: Running check unit test framework checks now..." >&5
 $as_echo "$as_me: Running check unit test framework checks now..." >&6;}
 
 CHECK_MAJOR_VERSION=0
 CHECK_MINOR_VERSION=9
-CHECK_MICRO_VERSION=8
+CHECK_MICRO_VERSION=14
 CHECK_VERSION=$CHECK_MAJOR_VERSION.$CHECK_MINOR_VERSION.$CHECK_MICRO_VERSION
 
 
@@ -26294,6 +27107,351 @@
 done
 
 
+for ac_func in getpid _getpid
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ac_fn_c_check_decl "$LINENO" "strdup" "ac_cv_have_decl_strdup" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strdup" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRDUP $ac_have_decl
+_ACEOF
+
+for ac_func in _strdup
+do :
+  ac_fn_c_check_func "$LINENO" "_strdup" "ac_cv_func__strdup"
+if test "x$ac_cv_func__strdup" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__STRDUP 1
+_ACEOF
+
+fi
+done
+
+
+for ac_func in mkstemp
+do :
+  ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
+if test "x$ac_cv_func_mkstemp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MKSTEMP 1
+_ACEOF
+
+fi
+done
+
+
+for ac_func in fork
+do :
+  ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork"
+if test "x$ac_cv_func_fork" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FORK 1
+_ACEOF
+ HAVE_FORK=1
+else
+  HAVE_FORK=0
+fi
+done
+
+
+
+for ac_header in time.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_time_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_TIME_H 1
+_ACEOF
+
+fi
+
+done
+
+ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "
+    $ac_includes_default
+#if HAVE_TIME_H
+#include <time.h>
+#endif /* HAVE_TIME_H */
+
+"
+if test "x$ac_cv_have_decl_alarm" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ALARM $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" "
+    $ac_includes_default
+#if HAVE_TIME_H
+#include <time.h>
+#endif /* HAVE_TIME_H */
+
+"
+if test "x$ac_cv_have_decl_localtime_r" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LOCALTIME_R $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "
+    $ac_includes_default
+#if HAVE_TIME_H
+#include <time.h>
+#endif /* HAVE_TIME_H */
+
+"
+if test "x$ac_cv_have_decl_strsignal" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRSIGNAL $ac_have_decl
+_ACEOF
+
+for ac_func in alarm setitimer strsignal
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test "x$ac_cv_func_alarm" = "xyes"; then
+  HAVE_ALARM_TRUE=
+  HAVE_ALARM_FALSE='#'
+else
+  HAVE_ALARM_TRUE='#'
+  HAVE_ALARM_FALSE=
+fi
+
+ if test "x$ac_cv_func_localtime_r" = "xyes"; then
+  HAVE_LOCALTIME_R_TRUE=
+  HAVE_LOCALTIME_R_FALSE='#'
+else
+  HAVE_LOCALTIME_R_TRUE='#'
+  HAVE_LOCALTIME_R_FALSE=
+fi
+
+ if test "x$ac_cv_func_strsignal" = "xyes"; then
+  HAVE_STRSIGNAL_TRUE=
+  HAVE_STRSIGNAL_FALSE='#'
+else
+  HAVE_STRSIGNAL_TRUE='#'
+  HAVE_STRSIGNAL_FALSE=
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct timespec" "tv_sec" "ac_cv_member_struct_timespec_tv_sec" "
+#include <time.h>
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+
+"
+if test "x$ac_cv_member_struct_timespec_tv_sec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TIMESPEC_TV_SEC 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define STRUCT_TIMESPEC_DEFINITION_MISSING 1
+_ACEOF
+
+fi
+ac_fn_c_check_member "$LINENO" "struct timespec" "tv_nsec" "ac_cv_member_struct_timespec_tv_nsec" "
+#include <time.h>
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+
+"
+if test "x$ac_cv_member_struct_timespec_tv_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TIMESPEC_TV_NSEC 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define STRUCT_TIMESPEC_DEFINITION_MISSING 1
+_ACEOF
+
+fi
+
+ac_fn_c_check_member "$LINENO" "struct itimerspec" "it_interval" "ac_cv_member_struct_itimerspec_it_interval" "
+#include <time.h>
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+
+"
+if test "x$ac_cv_member_struct_itimerspec_it_interval" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_ITIMERSPEC_IT_INTERVAL 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define STRUCT_ITIMERSPEC_DEFINITION_MISSING 1
+_ACEOF
+
+fi
+ac_fn_c_check_member "$LINENO" "struct itimerspec" "it_value" "ac_cv_member_struct_itimerspec_it_value" "
+#include <time.h>
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+
+"
+if test "x$ac_cv_member_struct_itimerspec_it_value" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_ITIMERSPEC_IT_VALUE 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define STRUCT_ITIMERSPEC_DEFINITION_MISSING 1
+_ACEOF
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "timer_t" "ac_cv_type_timer_t" "
+    $ac_includes_default
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+
+"
+if test "x$ac_cv_type_timer_t" = xyes; then :
+
+else
+
+
+$as_echo "#define timer_t int" >>confdefs.h
+
+
+fi
+
+ac_fn_c_check_type "$LINENO" "clockid_t" "ac_cv_type_clockid_t" "
+    $ac_includes_default
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+
+"
+if test "x$ac_cv_type_clockid_t" = xyes; then :
+
+else
+
+
+$as_echo "#define clockid_t int" >>confdefs.h
+
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for timer_create, timer_settime, timer_delete in -lrt" >&5
+$as_echo_n "checking for timer_create, timer_settime, timer_delete in -lrt... " >&6; }
+if ${ac_cv_lib_rt_timer_create__timer_settime__timer_delete+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char timer_create, timer_settime, timer_delete ();
+int
+main ()
+{
+return timer_create, timer_settime, timer_delete ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_rt_timer_create__timer_settime__timer_delete=yes
+else
+  ac_cv_lib_rt_timer_create__timer_settime__timer_delete=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_timer_create__timer_settime__timer_delete" >&5
+$as_echo "$ac_cv_lib_rt_timer_create__timer_settime__timer_delete" >&6; }
+if test "x$ac_cv_lib_rt_timer_create__timer_settime__timer_delete" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBRT 1
+_ACEOF
+
+  LIBS="-lrt $LIBS"
+
+fi
+
+ if test "x$ac_cv_lib_rt_timer_create__timer_settime__timer_delete" = "xyes"; then
+  HAVE_TIMER_CREATE_SETTIME_DELETE_TRUE=
+  HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE='#'
+else
+  HAVE_TIMER_CREATE_SETTIME_DELETE_TRUE='#'
+  HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE=
+fi
+
+
+ if test "x$ac_cv_func_clock_gettime" = "xyes"; then
+  HAVE_CLOCK_GETTIME_TRUE=
+  HAVE_CLOCK_GETTIME_FALSE='#'
+else
+  HAVE_CLOCK_GETTIME_TRUE='#'
+  HAVE_CLOCK_GETTIME_FALSE=
+fi
+
 
 # ------ AX CREATE STDINT H -------------------------------------
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint types" >&5
@@ -26783,7 +27941,7 @@
 
 
 
-ac_config_files="$ac_config_files Makefile gst/Makefile gst/gstconfig.h gst/gstversion.h gst/parse/Makefile gst/printf/Makefile libs/Makefile libs/gst/Makefile libs/gst/base/Makefile libs/gst/check/Makefile libs/gst/check/libcheck/Makefile libs/gst/check/libcheck/check.h libs/gst/controller/Makefile libs/gst/helpers/Makefile libs/gst/net/Makefile plugins/Makefile plugins/elements/Makefile po/Makefile.in tests/Makefile tests/benchmarks/Makefile tests/check/Makefile tests/misc/Makefile tests/examples/Makefile tests/examples/adapter/Makefile tests/examples/controller/Makefile tests/examples/stepping/Makefile tests/examples/helloworld/Makefile tests/examples/launch/Makefile tests/examples/manual/Makefile tests/examples/memory/Makefile tests/examples/metadata/Makefile tests/examples/queue/Makefile tests/examples/streams/Makefile tests/examples/typefind/Makefile tools/Makefile common/Makefile common/m4/Makefile docs/Makefile docs/design/Makefile docs/faq/Makefile docs/gst/Makefile docs/gst/gstreamer.types docs/libs/Makefile docs/plugins/Makefile docs/manual/Makefile docs/pwg/Makefile docs/slides/Makefile docs/xsl/Makefile docs/version.entities m4/Makefile pkgconfig/Makefile stamp.h pkgconfig/gstreamer.pc pkgconfig/gstreamer-uninstalled.pc pkgconfig/gstreamer-base.pc pkgconfig/gstreamer-base-uninstalled.pc pkgconfig/gstreamer-check.pc pkgconfig/gstreamer-check-uninstalled.pc pkgconfig/gstreamer-controller.pc pkgconfig/gstreamer-controller-uninstalled.pc pkgconfig/gstreamer-net.pc pkgconfig/gstreamer-net-uninstalled.pc gstreamer.spec"
+ac_config_files="$ac_config_files Makefile data/Makefile gst/Makefile gst/gstconfig.h gst/gstversion.h gst/parse/Makefile gst/printf/Makefile libs/Makefile libs/gst/Makefile libs/gst/base/Makefile libs/gst/check/Makefile libs/gst/check/libcheck/Makefile libs/gst/check/internal-check.h:libs/gst/check/libcheck/check.h.in libs/gst/controller/Makefile libs/gst/helpers/Makefile libs/gst/net/Makefile plugins/Makefile plugins/elements/Makefile po/Makefile.in tests/Makefile tests/benchmarks/Makefile tests/check/Makefile tests/misc/Makefile tests/examples/Makefile tests/examples/adapter/Makefile tests/examples/controller/Makefile tests/examples/stepping/Makefile tests/examples/helloworld/Makefile tests/examples/manual/Makefile tests/examples/memory/Makefile tests/examples/netclock/Makefile tests/examples/ptp/Makefile tests/examples/streamiddemux/Makefile tests/examples/streams/Makefile tools/Makefile common/Makefile common/m4/Makefile docs/Makefile docs/design/Makefile docs/faq/Makefile docs/gst/Makefile docs/gst/gstreamer.types docs/libs/Makefile docs/plugins/Makefile docs/manual/Makefile docs/pwg/Makefile docs/slides/Makefile docs/xsl/Makefile docs/version.entities m4/Makefile pkgconfig/Makefile stamp.h pkgconfig/gstreamer.pc pkgconfig/gstreamer-uninstalled.pc pkgconfig/gstreamer-base.pc pkgconfig/gstreamer-base-uninstalled.pc pkgconfig/gstreamer-check.pc pkgconfig/gstreamer-check-uninstalled.pc pkgconfig/gstreamer-controller.pc pkgconfig/gstreamer-controller-uninstalled.pc pkgconfig/gstreamer-net.pc pkgconfig/gstreamer-net-uninstalled.pc gstreamer.spec"
 
 
 sed \
@@ -26994,6 +28152,10 @@
   as_fn_error $? "conditional \"BUILD_EXAMPLES\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${ENABLE_BASH_COMPLETION_TRUE}" && test -z "${ENABLE_BASH_COMPLETION_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_BASH_COMPLETION\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${GST_PLUGIN_BUILD_STATIC_TRUE}" && test -z "${GST_PLUGIN_BUILD_STATIC_FALSE}"; then
   as_fn_error $? "conditional \"GST_PLUGIN_BUILD_STATIC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -27014,6 +28176,18 @@
   as_fn_error $? "conditional \"BUILD_TOOLS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_PTP_TRUE}" && test -z "${HAVE_PTP_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PTP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_PTP_HELPER_SETUID_TRUE}" && test -z "${HAVE_PTP_HELPER_SETUID_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PTP_HELPER_SETUID\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_PTP_HELPER_CAPABILITIES_TRUE}" && test -z "${HAVE_PTP_HELPER_CAPABILITIES_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PTP_HELPER_CAPABILITIES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 if test -z "${HAVE_CPU_I386_TRUE}" && test -z "${HAVE_CPU_I386_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_CPU_I386\" was never defined.
@@ -27031,6 +28205,10 @@
   as_fn_error $? "conditional \"HAVE_CPU_ALPHA\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_CPU_ARC_TRUE}" && test -z "${HAVE_CPU_ARC_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_ARC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${HAVE_CPU_ARM_TRUE}" && test -z "${HAVE_CPU_ARM_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_CPU_ARM\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -27163,6 +28341,26 @@
   as_fn_error $? "conditional \"HAVE_CHECK\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_ALARM_TRUE}" && test -z "${HAVE_ALARM_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ALARM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_LOCALTIME_R_TRUE}" && test -z "${HAVE_LOCALTIME_R_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_LOCALTIME_R\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_STRSIGNAL_TRUE}" && test -z "${HAVE_STRSIGNAL_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_STRSIGNAL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_TIMER_CREATE_SETTIME_DELETE_TRUE}" && test -z "${HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_TIMER_CREATE_SETTIME_DELETE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CLOCK_GETTIME_TRUE}" && test -z "${HAVE_CLOCK_GETTIME_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CLOCK_GETTIME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${SUBUNIT_TRUE}" && test -z "${SUBUNIT_FALSE}"; then
   as_fn_error $? "conditional \"SUBUNIT\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -27564,7 +28762,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.4.5, which was
+This file was extended by GStreamer $as_me 1.5.91, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27630,7 +28828,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.4.5
+GStreamer config.status 1.5.91
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -28167,6 +29365,7 @@
     "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
     "$ac_stdint_h") CONFIG_COMMANDS="$CONFIG_COMMANDS $ac_stdint_h" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
     "gst/Makefile") CONFIG_FILES="$CONFIG_FILES gst/Makefile" ;;
     "gst/gstconfig.h") CONFIG_FILES="$CONFIG_FILES gst/gstconfig.h" ;;
     "gst/gstversion.h") CONFIG_FILES="$CONFIG_FILES gst/gstversion.h" ;;
@@ -28177,7 +29376,7 @@
     "libs/gst/base/Makefile") CONFIG_FILES="$CONFIG_FILES libs/gst/base/Makefile" ;;
     "libs/gst/check/Makefile") CONFIG_FILES="$CONFIG_FILES libs/gst/check/Makefile" ;;
     "libs/gst/check/libcheck/Makefile") CONFIG_FILES="$CONFIG_FILES libs/gst/check/libcheck/Makefile" ;;
-    "libs/gst/check/libcheck/check.h") CONFIG_FILES="$CONFIG_FILES libs/gst/check/libcheck/check.h" ;;
+    "libs/gst/check/internal-check.h") CONFIG_FILES="$CONFIG_FILES libs/gst/check/internal-check.h:libs/gst/check/libcheck/check.h.in" ;;
     "libs/gst/controller/Makefile") CONFIG_FILES="$CONFIG_FILES libs/gst/controller/Makefile" ;;
     "libs/gst/helpers/Makefile") CONFIG_FILES="$CONFIG_FILES libs/gst/helpers/Makefile" ;;
     "libs/gst/net/Makefile") CONFIG_FILES="$CONFIG_FILES libs/gst/net/Makefile" ;;
@@ -28193,13 +29392,12 @@
     "tests/examples/controller/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/controller/Makefile" ;;
     "tests/examples/stepping/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/stepping/Makefile" ;;
     "tests/examples/helloworld/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/helloworld/Makefile" ;;
-    "tests/examples/launch/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/launch/Makefile" ;;
     "tests/examples/manual/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/manual/Makefile" ;;
     "tests/examples/memory/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/memory/Makefile" ;;
-    "tests/examples/metadata/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/metadata/Makefile" ;;
-    "tests/examples/queue/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/queue/Makefile" ;;
+    "tests/examples/netclock/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/netclock/Makefile" ;;
+    "tests/examples/ptp/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/ptp/Makefile" ;;
+    "tests/examples/streamiddemux/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/streamiddemux/Makefile" ;;
     "tests/examples/streams/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/streams/Makefile" ;;
-    "tests/examples/typefind/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/typefind/Makefile" ;;
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
     "common/Makefile") CONFIG_FILES="$CONFIG_FILES common/Makefile" ;;
     "common/m4/Makefile") CONFIG_FILES="$CONFIG_FILES common/m4/Makefile" ;;
@@ -30363,6 +31561,7 @@
 	Plugin support	           : ${enable_plugin}
 	Static plugins             : ${enable_static_plugins}
 	Unit testing support       : ${BUILD_CHECK}
+	PTP clock support          : ${HAVE_PTP}
 
 	Debug                      : ${USE_DEBUG}
 	Profiling                  : ${USE_PROFILING}
diff --git a/configure.ac b/configure.ac
index 53c1afe..53078e2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,14 +1,14 @@
-AC_PREREQ([2.68])
+AC_PREREQ([2.69])
 
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
 dnl
-AC_INIT([GStreamer],[1.4.5],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
+AC_INIT([GStreamer],[1.5.91],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
 AG_GST_INIT
 
 dnl initialize automake (we require GNU make)
-AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar subdir-objects])
+AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
 
 dnl define PACKAGE_VERSION_* variables
 AS_VERSION
@@ -28,10 +28,8 @@
 dnl sets host_* variables
 AC_CANONICAL_HOST
 
-dnl use pretty build output with automake >= 1.11
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
-  [AM_DEFAULT_VERBOSITY=1
-   AC_SUBST(AM_DEFAULT_VERBOSITY)])
+dnl use pretty build output by default
+AM_SILENT_RULES([yes])
 
 dnl GStreamer versioning, this is mostly informational
 GST_VERSION_MAJOR=$PACKAGE_VERSION_MAJOR
@@ -64,7 +62,7 @@
 dnl      1.10.9 (who knows) => 1009
 dnl
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 405, 0, 405)
+AS_LIBTOOL(GST, 590, 0, 590)
 
 dnl *** autotools stuff ****
 
@@ -134,6 +132,37 @@
   ["${srcdir}/gstreamer.doap"],
   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
 
+dnl check for bash completion
+AC_ARG_WITH([bash-completion-dir],
+    AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
+        [Install the bash auto-completion script in this directory. @<:@default=yes@:>@]),
+    [],
+    [with_bash_completion_dir=yes])
+
+if test "x$with_bash_completion_dir" = "xyes"
+then
+    extra_args=
+
+    if test "x$prefix" != "xNONE"
+    then
+        extra_args="--define-variable=prefix=\"$prefix\""
+    fi
+
+    PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
+        [BASH_COMPLETION_DIR="`eval pkg-config $extra_args --variable=completionsdir bash-completion`"],
+        [BASH_COMPLETION_DIR="$datadir/bash-completion/completions"])
+    PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
+        [BASH_HELPERS_DIR="`eval pkg-config $extra_args --variable=helpersdir bash-completion`"],
+        [BASH_HELPERS_DIR="$datadir/bash-completion/helpers"])
+else
+    BASH_COMPLETION_DIR="$with_bash_completion_dir/completions"
+    BASH_HELPERS_DIR="$with_bash_completion_dir/helpers"
+fi
+
+AC_SUBST([BASH_COMPLETION_DIR])
+AC_SUBST([BASH_HELPERS_DIR])
+AM_CONDITIONAL([ENABLE_BASH_COMPLETION],[test "x$with_bash_completion_dir" != "xno"])
+
 dnl build static plugins or not
 AC_MSG_CHECKING([whether to build static plugins or not])
 AC_ARG_ENABLE(
@@ -229,6 +258,143 @@
     [Define if we should poison deallocated memory])
 fi
 
+dnl PTP support parts
+AC_MSG_CHECKING([whether PTP support can be enabled])
+case "$host_os" in
+  *android*)
+    dnl Can't run on Android because of permissions
+    HAVE_PTP=no
+    ;;
+  mingw*|pw32*|cygwin*)
+    dnl Not ported to Windows yet
+    HAVE_PTP=no
+    ;;
+  darwin*)
+    dnl Can't run on iOS because of permissions
+    AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_PTP="no", HAVE_PTP="yes", [-])
+    ;;
+  linux*|darwin*|solaris*|netbsd*|freebsd*|openbsd*|kfreebsd*|dragonfly*|gnu*)
+    HAVE_PTP=yes
+    ;;
+  *)
+    HAVE_PTP=no
+    ;;
+esac
+AC_MSG_RESULT([$HAVE_PTP])
+
+dnl user/group to change to in gst-ptp-helper
+AC_ARG_WITH([ptp-helper-setuid-user],
+  AS_HELP_STRING([--with-ptp-helper-setuid-user],[User to switch to when installing gst-ptp-helper setuid root]),
+  [
+    if test "x$withval" != "x"
+    then
+      AC_DEFINE_UNQUOTED(HAVE_PTP_HELPER_SETUID_USER, "$withval", [PTP helper setuid user])
+    fi
+  ], []
+)
+
+dnl group/group to change to in gst-ptp-helper
+AC_ARG_WITH([ptp-helper-setuid-group],
+  AS_HELP_STRING([--with-ptp-helper-setuid-group],[Group to switch to when installing gst-ptp-helper setuid root]),
+  [
+    if test "x$withval" != "x"
+    then
+      AC_DEFINE_UNQUOTED(HAVE_PTP_HELPER_SETUID_GROUP, "$withval", [PTP helper setuid group])
+    fi
+  ], []
+)
+
+AC_ARG_WITH(
+  ptp-helper-permissions,
+  AC_HELP_STRING(
+    [--with-ptp-helper-permissions],
+    [how to gain PTP permissions (none, setuid-root, capabilities, auto)]),
+    [],
+    [with_ptp_helper_permissions=auto])
+
+gst_ptp_have_cap=no
+AG_GST_CHECK_LIBHEADER(CAP, cap,
+                       cap_init, ,
+                       sys/capability.h,
+                       CAP_LIBS="-lcap"
+                       AC_SUBST(CAP_LIBS)
+                       gst_ptp_have_cap=yes)
+
+AC_PATH_PROG([SETCAP], [setcap], [no], [$PATH:/usr/bin:/bin:/usr/sbin:/sbin])
+
+if test "x$HAVE_PTP" = "xyes"; then
+AC_DEFINE(HAVE_PTP, 1, [PTP support available])
+
+AC_MSG_CHECKING([for SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+    [[
+        #include <sys/ioctl.h>
+        #include <net/if.h>
+    ]],
+    [[
+        struct ifreq ifr;
+        struct ifconf ifc;
+        ioctl(0, SIOCGIFCONF, &ifc);
+        ioctl(0, SIOCGIFFLAGS, &ifr);
+        ioctl(0, SIOCGIFHWADDR, &ifr);
+        int dummy = ifr.ifr_hwaddr.sa_data[0];
+    ]])], [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR, 1, [SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR is available])
+    ], [
+        AC_MSG_RESULT(no)
+])
+
+AC_MSG_CHECKING([for getifaddrs() and AF_LINK])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+    [[
+        #include <ifaddrs.h>
+        #include <net/if.h>
+        #include <net/if_dl.h>
+    ]],
+    [[
+        struct ifaddrs *ifaddr;
+        getifaddrs(&ifaddr);
+        int dummy = (ifaddr->ifa_flags & IFF_LOOPBACK) && ifaddr->ifa_addr->sa_family != AF_LINK;
+    ]])], [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE_GETIFADDRS_AF_LINK, 1, [getifaddrs() and AF_LINK is available])
+    ], [
+        AC_MSG_RESULT(no)
+    ])
+
+AC_MSG_CHECKING([how to install gst-ptp-helper])
+if test "x$with_ptp_helper_permissions" = "xauto"; then
+    if test "x$gst_ptp_have_cap" = "xyes" -a "x$SETCAP" != "xno"; then
+        with_ptp_helper_permissions="capabilities"
+    else
+        with_ptp_helper_permissions="setuid-root"
+    fi
+fi
+AC_MSG_RESULT([$with_ptp_helper_permissions])
+
+case "$with_ptp_helper_permissions" in
+  none)
+    ;;
+  setuid-root)
+     AC_DEFINE(HAVE_PTP_HELPER_SETUID, 1,
+        [Use setuid-root for permissions in PTP helper])
+    ;;
+  capabilities)
+     AC_DEFINE(HAVE_PTP_HELPER_CAPABILITIES, 1,
+        [Use capabilities for permissions in PTP helper])
+    ;;
+  *)
+    AC_MSG_ERROR(Invalid parameter [$with_ptp_helper_permissions])
+    ;;
+esac
+
+fi
+
+AM_CONDITIONAL(HAVE_PTP, test "x$HAVE_PTP" = "xyes")
+AM_CONDITIONAL(HAVE_PTP_HELPER_SETUID, test "x$with_ptp_helper_permissions" = "xsetuid-root")
+AM_CONDITIONAL(HAVE_PTP_HELPER_CAPABILITIES, test "x$with_ptp_helper_permissions" = "xcapabilities")
+
 dnl *** checks for platform ***
 
 dnl * hardware/architecture *
@@ -338,12 +504,29 @@
 AC_CHECK_HEADERS([stdio_ext.h], [], [], [AC_INCLUDES_DEFAULT])
 
 dnl check for pthreads
-AX_PTHREAD([HAVE_PTHREAD=yes], [HAVE_PTHREAD=no])
-AM_CONDITIONAL(HAVE_PTHREAD, test "x$HAVE_PTHREAD" = "xyes")
+dnl without arguments AX_PTHREAD() will do AC_DEFINE(HAVE_PTHREAD)
+dnl which later checks use in their test code
+AX_PTHREAD()
+AM_CONDITIONAL(HAVE_PTHREAD, test "x$ax_pthread_ok" = "xyes")
 
 dnl check for sys/prctl for setting thread name on Linux
 AC_CHECK_HEADERS([sys/prctl.h], [], [], [AC_INCLUDES_DEFAULT])
 
+dnl check for pthread_setname_np(const char*)
+dnl which is present on OS X 10.6, iOS 3.2 and above
+AC_MSG_CHECKING(for pthread_setname_np(const char*))
+AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM(
+        [#include <pthread.h>],
+        [pthread_setname_np("example")])],
+    [AC_MSG_RESULT(yes)
+     AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID,1,
+        [Have function pthread_setname_np(const char*)])],
+    [AC_MSG_RESULT(no)])
+
+dnl check for sys/uio.h for writev()
+AC_CHECK_HEADERS([sys/uio.h], [], [], [AC_INCLUDES_DEFAULT])
+
 dnl Check for valgrind.h
 dnl separate from HAVE_VALGRIND because you can have the program, but not
 dnl the dev package
@@ -416,6 +599,8 @@
 
 dnl *** checks for library functions ***
 
+AC_CHECK_FUNCS([strcasestr])
+
 AC_CHECK_FUNCS([gmtime_r])
 AC_CHECK_FUNCS([localtime_r])
 AC_CHECK_FUNCS([sigaction])
@@ -435,6 +620,14 @@
 AC_CHECK_FUNCS([ppoll])
 AC_CHECK_FUNCS([pselect])
 
+dnl check for socketpair()
+AC_CHECK_FUNC(socketpair, [], [
+  AC_CHECK_LIB(socket, socketpair, [
+    SOCKET_LIBS="-lsocket"
+    AC_SUBST(SOCKET_LIBS)
+  ])
+])
+
 dnl ****************************************
 dnl *** GLib POLL* compatibility defines ***
 dnl ****************************************
@@ -758,12 +951,19 @@
     "$GST_PLUGIN_SCANNER_INSTALLED", [location of the installed gst-plugin-scanner])
 AC_SUBST(GST_PLUGIN_SCANNER_INSTALLED)
 
+dnl ptp helper locations
+AS_AC_EXPAND(GST_PTP_HELPER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-ptp-helper)
+AC_DEFINE_UNQUOTED(GST_PTP_HELPER_INSTALLED,
+    "$GST_PTP_HELPER_INSTALLED", [location of the installed gst-ptp-helper])
+AC_SUBST(GST_PTP_HELPER_INSTALLED)
+
 dnl things for our internal libcheck (must be called even if building
 dnl libcheck is disabled because it defines conditionals)
 AG_GST_CHECK_CHECKS()
 
 AC_CONFIG_FILES(
 Makefile
+data/Makefile
 gst/Makefile
 gst/gstconfig.h
 gst/gstversion.h
@@ -774,7 +974,7 @@
 libs/gst/base/Makefile
 libs/gst/check/Makefile
 libs/gst/check/libcheck/Makefile
-libs/gst/check/libcheck/check.h
+libs/gst/check/internal-check.h:libs/gst/check/libcheck/check.h.in
 libs/gst/controller/Makefile
 libs/gst/helpers/Makefile
 libs/gst/net/Makefile
@@ -790,13 +990,12 @@
 tests/examples/controller/Makefile
 tests/examples/stepping/Makefile
 tests/examples/helloworld/Makefile
-tests/examples/launch/Makefile
 tests/examples/manual/Makefile
 tests/examples/memory/Makefile
-tests/examples/metadata/Makefile
-tests/examples/queue/Makefile
+tests/examples/netclock/Makefile
+tests/examples/ptp/Makefile
+tests/examples/streamiddemux/Makefile
 tests/examples/streams/Makefile
-tests/examples/typefind/Makefile
 tools/Makefile
 common/Makefile
 common/m4/Makefile
@@ -898,6 +1097,7 @@
 	Plugin support	           : ${enable_plugin}
 	Static plugins             : ${enable_static_plugins}
 	Unit testing support       : ${BUILD_CHECK}
+	PTP clock support          : ${HAVE_PTP}
 
 	Debug                      : ${USE_DEBUG}
 	Profiling                  : ${USE_PROFILING}
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..7098492
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,4 @@
+if ENABLE_BASH_COMPLETION
+bashcompletiondir = $(BASH_COMPLETION_DIR)
+dist_bashcompletion_DATA = completions/gst-inspect-1.0 completions/gst-launch-1.0
+endif
diff --git a/tests/examples/queue/Makefile.in b/data/Makefile.in
similarity index 65%
rename from tests/examples/queue/Makefile.in
rename to data/Makefile.in
index b736d69..1ff938f 100644
--- a/tests/examples/queue/Makefile.in
+++ b/data/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,10 +89,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = queue$(EXEEXT)
-subdir = tests/examples/queue
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
+subdir = data
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +98,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +116,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,22 +129,12 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(am__dist_bashcompletion_DATA_DIST) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-queue_SOURCES = queue.c
-queue_OBJECTS = queue-queue.$(OBJEXT)
-am__DEPENDENCIES_1 =
-queue_DEPENDENCIES = $(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 = 
-queue_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(queue_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
@@ -149,54 +147,46 @@
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = queue.c
-DIST_SOURCES = queue.c
+SOURCES =
+DIST_SOURCES =
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__dist_bashcompletion_DATA_DIST = completions/gst-inspect-1.0 \
+	completions/gst-launch-1.0
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bashcompletiondir)"
+DATA = $(dist_bashcompletion_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -208,7 +198,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +294,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +306,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +332,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +394,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +463,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -474,12 +476,11 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-queue_LDADD = $(GST_OBJ_LIBS)
-queue_CFLAGS = $(GST_OBJ_CFLAGS)
+@ENABLE_BASH_COMPLETION_TRUE@bashcompletiondir = $(BASH_COMPLETION_DIR)
+@ENABLE_BASH_COMPLETION_TRUE@dist_bashcompletion_DATA = completions/gst-inspect-1.0 completions/gst-launch-1.0
 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 \
@@ -489,10 +490,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/queue/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/queue/Makefile
-.PRECIOUS: Makefile
+	  $(AUTOMAKE) --gnu data/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -511,122 +511,38 @@
 	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
-
-queue$(EXEEXT): $(queue_OBJECTS) $(queue_DEPENDENCIES) $(EXTRA_queue_DEPENDENCIES) 
-	@rm -f queue$(EXEEXT)
-	$(AM_V_CCLD)$(queue_LINK) $(queue_OBJECTS) $(queue_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queue-queue.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 $@ $<
-
-queue-queue.o: queue.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(queue_CFLAGS) $(CFLAGS) -MT queue-queue.o -MD -MP -MF $(DEPDIR)/queue-queue.Tpo -c -o queue-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/queue-queue.Tpo $(DEPDIR)/queue-queue.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='queue.c' object='queue-queue.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) $(queue_CFLAGS) $(CFLAGS) -c -o queue-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
-
-queue-queue.obj: queue.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(queue_CFLAGS) $(CFLAGS) -MT queue-queue.obj -MD -MP -MF $(DEPDIR)/queue-queue.Tpo -c -o queue-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/queue-queue.Tpo $(DEPDIR)/queue-queue.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='queue.c' object='queue-queue.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) $(queue_CFLAGS) $(CFLAGS) -c -o queue-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-dist_bashcompletionDATA: $(dist_bashcompletion_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_bashcompletion_DATA)'; test -n "$(bashcompletiondir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bashcompletiondir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bashcompletiondir)" || 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_DATA) $$files '$(DESTDIR)$(bashcompletiondir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(bashcompletiondir)" || exit $$?; \
+	done
 
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
+uninstall-dist_bashcompletionDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_bashcompletion_DATA)'; test -n "$(bashcompletiondir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(bashcompletiondir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
 
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
+ctags CTAGS:
 
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
+cscope cscopelist:
 
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -660,8 +576,11 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(DATA)
 installdirs:
+	for dir in "$(DESTDIR)$(bashcompletiondir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -694,14 +613,11 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -715,7 +631,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-dist_bashcompletionDATA
 
 install-dvi: install-dvi-am
 
@@ -744,14 +660,12 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
 mostlyclean: mostlyclean-am
 
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
 
 pdf: pdf-am
 
@@ -761,23 +675,24 @@
 
 ps-am:
 
-uninstall-am:
+uninstall-am: uninstall-dist_bashcompletionDATA
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+.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-dist_bashcompletionDATA 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-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-dist_bashcompletionDATA
+
+.PRECIOUS: Makefile
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/data/completions/gst-inspect-1.0 b/data/completions/gst-inspect-1.0
new file mode 100644
index 0000000..980e140
--- /dev/null
+++ b/data/completions/gst-inspect-1.0
@@ -0,0 +1,105 @@
+# GStreamer
+# Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+#
+# bash/zsh completion support for gst-inspect
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+_GST_HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
+
+if [[ ! -d "$_GST_HELPERDIR"  ]]; then
+	_GST_HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
+else
+	_GST_HELPERDIR=`cd "$_GST_HELPERDIR"; pwd`
+fi
+
+# Common definitions
+. "$_GST_HELPERDIR"/gst
+
+_GST_HELPER="$_GST_HELPERDIR/gst-completion-helper-1.0"
+
+_gst_inspect_all_arguments ()
+{
+	COMPREPLY=( $(compgen -W "$(gst-inspect-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
+}
+
+_gst_inspect_all_elements ()
+{
+	COMPREPLY=( $(compgen -W "$($_GST_HELPER -l)" -- $cur) )
+}
+
+_gstinspect___atleast_version () { _gst_mandatory_argument; }
+
+_gstinspect___exists ()
+{
+	_gst_inspect_all_elements
+}
+
+__inspect_main ()
+{
+	local i=1 command function_exists completion_func
+
+	while [[ $i -ne $COMP_CWORD ]];
+		do
+			local var
+			var="${COMP_WORDS[i]}"
+			if [[ "$var" == "--"* ]]
+			then
+				command="$var"
+			fi
+		i=$(($i+1))
+		done
+
+	if [[ "$command" == "--gst"* ]]; then
+		completion_func="_${command//-/_}"
+	else
+		completion_func="_gstinspect_${command//-/_}"
+	fi
+
+	declare -f $completion_func >/dev/null 2>&1
+
+	function_exists=$?
+
+	if [[ "$cur" == "--"* ]]; then
+		_gst_inspect_all_arguments
+	elif [ $function_exists -eq 0 ]
+	then
+		$completion_func
+	else
+		_gst_inspect_all_elements
+	fi
+}
+
+_gst_inspect_func_wrap ()
+{
+	local cur prev
+	cur="${COMP_WORDS[COMP_CWORD]}"
+	prev="${COMP_WORDS[COMP_CWORD-1]}"
+	$1
+}
+
+# Setup completion for certain functions defined above by setting common
+# variables and workarounds.
+# This is NOT a public function; use at your own risk.
+_gst_inspect_complete ()
+{
+	local wrapper="__inspect_wrap${2}"
+	eval "$wrapper () { _gst_inspect_func_wrap $2 ; }"
+	complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
+		|| complete -o default -o nospace -F $wrapper $1
+}
+
+_gst_inspect_complete gst-inspect-1.0 __inspect_main
diff --git a/data/completions/gst-launch-1.0 b/data/completions/gst-launch-1.0
new file mode 100644
index 0000000..941cf84
--- /dev/null
+++ b/data/completions/gst-launch-1.0
@@ -0,0 +1,143 @@
+# GStreamer
+# Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+#
+# bash/zsh completion support for gst-launch
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+_GST_HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
+
+if [[ ! -d "$_GST_HELPERDIR" ]]; then
+	_GST_HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
+else
+	_GST_HELPERDIR=`cd "$_GST_HELPERDIR"; pwd`
+fi
+
+# Common definitions
+. "$_GST_HELPERDIR"/gst
+
+_GST_HELPER="$_GST_HELPERDIR/gst-completion-helper-1.0"
+
+_gst_launch_all_arguments ()
+{
+	COMPREPLY=( $(compgen -W "$(gst-launch-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
+}
+
+_gst_complete_compatible_elements ()
+{
+	COMPREPLY=( $(compgen -W "$($_GST_HELPER --compatible-with $previous_element)" -- $cur) )
+}
+
+_gst_complete_all_elements ()
+{
+	COMPREPLY=( $(compgen -W "$($_GST_HELPER -l)" -- $cur) )
+}
+
+_gst_complete_element_properties ()
+{
+	COMPREPLY=( $(compgen -W "$($_GST_HELPER --element-properties $previous_element)" -- $cur) )
+}
+
+_gstlaunch___exclude_ () { _gst_mandatory_argument; }
+
+_gst_launch_main ()
+{
+	local i=1 command function_exists previous_element have_previous_element=0 completion_func
+
+	while [[ $i -ne $COMP_CWORD ]];
+		do
+			local var
+			var="${COMP_WORDS[i]}"
+			if [[ "$var" == "--"* ]]
+			then
+				command="$var"
+			fi
+		i=$(($i+1))
+		done
+
+	i=1
+	while [[ $i -ne $COMP_CWORD ]];
+		do
+			local var
+			var="${COMP_WORDS[i]}"
+
+			if [[ "$var" == "--"* ]]
+			then
+				i=$(($i+1))
+				continue
+			fi
+
+			$(gst-inspect-1.0 --exists $var)
+			if [ $? -eq 0 ]
+			then
+				previous_element="$var"
+				have_previous_element=1
+			fi
+		i=$(($i+1))
+		done
+
+	if [[ "$command" == "--gst"* ]]; then
+		completion_func="_${command//-/_}"
+	else
+		completion_func="_gstlaunch_${command//-/_}"
+	fi
+
+	# Seems like bash doesn't like "exclude" in function names
+	if [[ "$completion_func" == "_gstlaunch___exclude" ]]
+	then
+		completion_func="_gstlaunch___exclude_"
+	fi
+
+	declare -f $completion_func >/dev/null 2>&1
+
+	function_exists=$?
+
+	if [[ "$cur" == "--"* ]]; then
+		_gst_launch_all_arguments
+	elif [ $function_exists -eq 0 ]
+	then
+		$completion_func
+	elif [ $have_previous_element -ne 0 ] && [[ "$prev" == "!" ]]
+	then
+		_gst_complete_compatible_elements
+	elif [ $have_previous_element -ne 0 ]
+	then
+		_gst_complete_element_properties
+	else
+		_gst_complete_all_elements
+	fi
+}
+
+_gst_launch_func_wrap ()
+{
+	local cur prev
+	cur="${COMP_WORDS[COMP_CWORD]}"
+	prev="${COMP_WORDS[COMP_CWORD-1]}"
+	$1
+}
+
+# Setup completion for certain functions defined above by setting common
+# variables and workarounds.
+# This is NOT a public function; use at your own risk.
+_gst_launch_complete ()
+{
+	local wrapper="__launch_wrap${2}"
+	eval "$wrapper () { _gst_launch_func_wrap $2 ; }"
+	complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
+		|| complete -o default -o nospace -F $wrapper $1
+}
+
+_gst_launch_complete gst-launch-1.0 _gst_launch_main
diff --git a/debian/changelog b/debian/changelog
index 990614d..1a98e2e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,60 @@
-gstreamer1.0 (1.4.5-2) unstable; urgency=medium
+gstreamer1.0 (1.5.91-1) experimental; urgency=medium
 
-  * Upload to unstable.
+  * New upstream release candidate.
 
- -- Sebastian Dröge <slomo@debian.org>  Wed, 13 May 2015 12:22:11 +0300
+ -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Sep 2015 18:57:10 +0200
+
+gstreamer1.0 (1.5.90-1) experimental; urgency=medium
+
+  * New upstream release candidate.
+
+ -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Aug 2015 12:40:43 +0300
+
+gstreamer1.0 (1.5.2-1) experimental; urgency=medium
+
+  * New unstable upstream release.
+
+ -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Jun 2015 22:47:31 +0200
+
+gstreamer1.0 (1.5.1-3) experimental; urgency=medium
+
+  * debian/rules,
+    debian/libgstreamer.postinst:
+    + Explicitely specify the architecture dependent lib directory, otherwise
+      setcap will fail if the package is installed for multiple architures.
+      It only allows one filename at a time (Closes: #788282).
+
+ -- Sebastian Dröge <slomo@debian.org>  Wed, 10 Jun 2015 10:13:10 +0200
+
+gstreamer1.0 (1.5.1-2) experimental; urgency=medium
+
+  * debian/patches/0001-ptp-Check-for-the-actual-API-we-use-instead-of-just-.patch:
+    + Hopefully fix build on kFreeBSD and non-Linux in general.
+
+ -- Sebastian Dröge <slomo@debian.org>  Tue, 09 Jun 2015 11:15:55 +0200
+
+gstreamer1.0 (1.5.1-1) experimental; urgency=medium
+
+  * New unstable upstream release.
+  * debian/control.in,
+    debian/libgstreamer.postinst:
+    + Install gst-ptp-helper with cap_net_bind_service,cap_net_admin
+      capabilities, and otherwise fall back to setuid root. It needs
+      to be able to listen for multicast on port 319 and 320.
+
+ -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Jun 2015 09:48:18 +0200
+
+gstreamer1.0 (1.5.0.1+git20150513-1) experimental; urgency=medium
+
+  * New upstream GIT snapshot.
+
+ -- Sebastian Dröge <slomo@debian.org>  Wed, 13 May 2015 13:19:02 +0300
+
+gstreamer1.0 (1.5.0.1+git20150316-1) experimental; urgency=medium
+
+  * New upstream GIT snapshot.
+
+ -- Sebastian Dröge <slomo@debian.org>  Mon, 16 Mar 2015 19:10:11 +0100
 
 gstreamer1.0 (1.4.5-1) experimental; urgency=medium
 
diff --git a/debian/control b/debian/control
index a55caee..510dd86 100644
--- a/debian/control
+++ b/debian/control
@@ -10,8 +10,8 @@
                cdbs (>= 0.4.93~),
                gnome-pkg-tools (>= 0.7),
                autotools-dev,
-               automake (>= 1.11),
-               autoconf (>= 2.62),
+               automake (>= 1.14),
+               autoconf (>= 2.69),
                libtool (>= 2.2.6),
                dh-autoreconf,
                autopoint (>= 0.17),
@@ -27,7 +27,8 @@
                libgirepository1.0-dev (>= 0.9.12-4~),
                gobject-introspection (>= 0.9.12-4~),
                gir1.2-glib-2.0,
-               gir1.2-freedesktop
+               gir1.2-freedesktop,
+               libcap-dev [linux-any]
 Build-Depends-Indep: python (>= 2.2),
                      gtk-doc-tools (>= 1.12),
                      jade (>= 1.2.1),
@@ -49,7 +50,8 @@
 Section: libs
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends},
-         ${misc:Depends}
+         ${misc:Depends},
+         libcap2-bin [linux-any]
 Suggests: gstreamer1.0-tools,
           gstreamer1.0-plugins-base
 Description: Core GStreamer libraries and elements
@@ -131,7 +133,7 @@
 Depends: ${shlibs:Depends},
          ${misc:Depends},
          pkg-config,
-         libgstreamer1.0-0 (>= 1.4.3)
+         libgstreamer1.0-0 (>= 1.5.1)
 Suggests: gstreamer1.0-plugins-base
 Description: Tools for use with GStreamer
  GStreamer is a streaming media framework, based on graphs of filters
diff --git a/debian/control.in b/debian/control.in
index e1682a5..cff8d9d 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -10,8 +10,8 @@
                cdbs (>= 0.4.93~),
                gnome-pkg-tools (>= 0.7),
                autotools-dev,
-               automake (>= 1.11),
-               autoconf (>= 2.62),
+               automake (>= 1.14),
+               autoconf (>= 2.69),
                libtool (>= 2.2.6),
                dh-autoreconf,
                autopoint (>= 0.17),
@@ -27,7 +27,8 @@
                libgirepository1.0-dev (>= 0.9.12-4~),
                gobject-introspection (>= 0.9.12-4~),
                gir1.2-glib-2.0,
-               gir1.2-freedesktop
+               gir1.2-freedesktop,
+               libcap-dev [linux-any]
 Build-Depends-Indep: python (>= 2.2),
                      gtk-doc-tools (>= 1.12),
                      jade (>= 1.2.1),
@@ -49,7 +50,8 @@
 Section: libs
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends},
-         ${misc:Depends}
+         ${misc:Depends},
+         libcap2-bin [linux-any]
 Suggests: @GST_PKGNAME@-tools,
           @GST_PKGNAME@-plugins-base
 Description: Core GStreamer libraries and elements
diff --git a/debian/libgstreamer-dev.install b/debian/libgstreamer-dev.install
index 1f7959f..fa395a4 100644
--- a/debian/libgstreamer-dev.install
+++ b/debian/libgstreamer-dev.install
@@ -1,4 +1,5 @@
 debian/tmp/usr/include
+debian/tmp/usr/lib/*/gstreamer-1.0/include
 debian/tmp/usr/lib/*/*.so
 debian/tmp/usr/lib/*/pkgconfig
 debian/tmp/usr/share/aclocal
diff --git a/debian/libgstreamer.install b/debian/libgstreamer.install
index b2cfb9b..3082919 100644
--- a/debian/libgstreamer.install
+++ b/debian/libgstreamer.install
@@ -1,4 +1,5 @@
 debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/*.so
 debian/tmp/usr/lib/*/gstreamer@GST_ABI@/gstreamer-@GST_ABI@/gst-plugin-scanner
+debian/tmp/usr/lib/*/gstreamer@GST_ABI@/gstreamer-@GST_ABI@/gst-ptp-helper
 debian/tmp/usr/lib/*/*.so.*
 debian/tmp/usr/share/locale
diff --git a/debian/libgstreamer.postinst b/debian/libgstreamer.postinst
new file mode 100644
index 0000000..b46f64b
--- /dev/null
+++ b/debian/libgstreamer.postinst
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = configure ]; then
+    # If we have setcap is installed, try setting cap_net_bind_service,cap_net_admin+ep,
+    # which allows us to install our helper binary without the setuid bit.
+    if command -v setcap > /dev/null; then
+        if setcap cap_net_bind_service,cap_net_admin+ep /usr/lib/@MULTIARCH@/gstreamer@GST_ABI@/gstreamer-@GST_ABI@/gst-ptp-helper; then
+            echo "Setcap worked! gst-ptp-helper is not suid!"
+        else
+            echo "Setcap failed on gst-ptp-helper, falling back to setuid" >&2
+            chmod u+s /usr/lib/@MULTIARCH@/gstreamer@GST_ABI@/gstreamer-@GST_ABI@/gst-ptp-helper
+        fi
+    else
+        echo "Setcap is not installed, falling back to setuid" >&2
+        chmod u+s /usr/lib/@MULTIARCH@/gstreamer@GST_ABI@/gstreamer-@GST_ABI@/gst-ptp-helper
+    fi
+fi
+
+#DEBHELPER#
+
+exit 0
+
diff --git a/debian/libgstreamer.symbols b/debian/libgstreamer.symbols
index a9e0eee..4917e82 100644
--- a/debian/libgstreamer.symbols
+++ b/debian/libgstreamer.symbols
@@ -5,6 +5,10 @@
  gst_adapter_copy@Base 1.0.0
  gst_adapter_copy_bytes@Base 1.4.0
  gst_adapter_flush@Base 1.0.0
+ gst_adapter_get_buffer@Base 1.5.91
+ gst_adapter_get_buffer_fast@Base 1.5.91
+ gst_adapter_get_buffer_list@Base 1.5.91
+ gst_adapter_get_list@Base 1.5.91
  gst_adapter_get_type@Base 1.0.0
  gst_adapter_map@Base 1.0.0
  gst_adapter_masked_scan_uint32@Base 1.0.0
@@ -18,6 +22,7 @@
  gst_adapter_take@Base 1.0.0
  gst_adapter_take_buffer@Base 1.0.0
  gst_adapter_take_buffer_fast@Base 1.2.0
+ gst_adapter_take_buffer_list@Base 1.5.91
  gst_adapter_take_list@Base 1.0.0
  gst_adapter_unmap@Base 1.0.0
  gst_base_parse_add_index_entry@Base 1.0.0
@@ -28,6 +33,7 @@
  gst_base_parse_frame_init@Base 1.0.0
  gst_base_parse_frame_new@Base 1.0.0
  gst_base_parse_get_type@Base 1.0.0
+ gst_base_parse_merge_tags@Base 1.5.91
  gst_base_parse_push_frame@Base 1.0.0
  gst_base_parse_set_average_bitrate@Base 1.0.0
  gst_base_parse_set_duration@Base 1.0.0
@@ -102,6 +108,7 @@
  gst_base_transform_set_prefer_passthrough@Base 1.0.0
  gst_base_transform_set_qos_enabled@Base 1.0.0
  gst_base_transform_update_qos@Base 1.0.0
+ gst_base_transform_update_src_caps@Base 1.5.0.1+git20150513
  gst_bit_reader_free@Base 1.0.0
  gst_bit_reader_get_bits_uint16@Base 1.0.0
  gst_bit_reader_get_bits_uint32@Base 1.0.0
@@ -142,6 +149,7 @@
  gst_byte_reader_get_remaining@Base 1.0.0
  gst_byte_reader_get_size@Base 1.0.0
  gst_byte_reader_get_string_utf8@Base 1.0.0
+ gst_byte_reader_get_sub_reader@Base 1.5.91
  gst_byte_reader_get_uint16_be@Base 1.0.0
  gst_byte_reader_get_uint16_le@Base 1.0.0
  gst_byte_reader_get_uint24_be@Base 1.0.0
@@ -153,6 +161,7 @@
  gst_byte_reader_get_uint8@Base 1.0.0
  gst_byte_reader_init@Base 1.0.0
  gst_byte_reader_masked_scan_uint32@Base 1.0.0
+ gst_byte_reader_masked_scan_uint32_peek@Base 1.5.91
  gst_byte_reader_new@Base 1.0.0
  gst_byte_reader_peek_data@Base 1.0.0
  gst_byte_reader_peek_float32_be@Base 1.0.0
@@ -169,6 +178,7 @@
  gst_byte_reader_peek_int64_le@Base 1.0.0
  gst_byte_reader_peek_int8@Base 1.0.0
  gst_byte_reader_peek_string_utf8@Base 1.0.0
+ gst_byte_reader_peek_sub_reader@Base 1.5.91
  gst_byte_reader_peek_uint16_be@Base 1.0.0
  gst_byte_reader_peek_uint16_le@Base 1.0.0
  gst_byte_reader_peek_uint24_be@Base 1.0.0
@@ -263,27 +273,36 @@
  gst_data_queue_push_force@Base 1.2.0
  gst_data_queue_set_flushing@Base 1.2.0
  gst_flow_combiner_add_pad@Base 1.4.0
+ gst_flow_combiner_clear@Base 1.5.91
  gst_flow_combiner_free@Base 1.4.0
  gst_flow_combiner_get_type@Base 1.4.0
  gst_flow_combiner_new@Base 1.4.0
  gst_flow_combiner_remove_pad@Base 1.4.0
+ gst_flow_combiner_reset@Base 1.5.91
  gst_flow_combiner_update_flow@Base 1.4.0
+ gst_flow_combiner_update_pad_flow@Base 1.5.91
  gst_push_src_get_type@Base 1.0.0
  gst_queue_array_drop_element@Base 1.2.0
+ gst_queue_array_drop_struct@Base 1.5.91
  gst_queue_array_find@Base 1.2.0
  gst_queue_array_free@Base 1.2.0
  gst_queue_array_get_length@Base 1.2.0
  gst_queue_array_is_empty@Base 1.2.0
  gst_queue_array_new@Base 1.2.0
+ gst_queue_array_new_for_struct@Base 1.5.91
  gst_queue_array_peek_head@Base 1.2.0
+ gst_queue_array_peek_head_struct@Base 1.5.91
  gst_queue_array_pop_head@Base 1.2.0
+ gst_queue_array_pop_head_struct@Base 1.5.91
  gst_queue_array_push_tail@Base 1.2.0
+ gst_queue_array_push_tail_struct@Base 1.5.91
  gst_type_find_helper@Base 1.0.0
  gst_type_find_helper_for_buffer@Base 1.0.0
  gst_type_find_helper_for_data@Base 1.0.0
  gst_type_find_helper_for_extension@Base 1.0.0
  gst_type_find_helper_get_range@Base 1.0.0
 libgstcheck-1.0.so.0 libgstreamer1.0-0 #MINVER#
+ _ck_assert_failed@Base 1.5.91
  _fail_unless@Base 1.0.0
  _gst_check_expecting_log@Base 1.0.0
  _gst_check_raised_critical@Base 1.0.0
@@ -300,7 +319,6 @@
  check_micro_version@Base 1.0.0
  check_minor_version@Base 1.0.0
  check_mutex@Base 1.0.0
- check_waitpid_and_exit@Base 1.0.0
  gst_buffer_straw_get_buffer@Base 1.0.0
  gst_buffer_straw_start_pipeline@Base 1.0.0
  gst_buffer_straw_stop_pipeline@Base 1.0.0
@@ -313,6 +331,8 @@
  gst_check_element_push_buffer_list@Base 1.0.0
  gst_check_init@Base 1.0.0
  gst_check_message_error@Base 1.0.0
+ gst_check_object_destroyed_on_unref@Base 1.5.91
+ gst_check_objects_destroyed_on_unref@Base 1.5.91
  gst_check_run_suite@Base 1.0.0
  gst_check_setup_element@Base 1.0.0
  gst_check_setup_events@Base 1.2.0
@@ -333,6 +353,78 @@
  gst_consistency_checker_free@Base 1.0.0
  gst_consistency_checker_new@Base 1.0.0
  gst_consistency_checker_reset@Base 1.0.0
+ gst_harness_add_element_src_pad@Base 1.5.91
+ gst_harness_add_probe@Base 1.5.91
+ gst_harness_add_sink@Base 1.5.91
+ gst_harness_add_sink_harness@Base 1.5.91
+ gst_harness_add_sink_parse@Base 1.5.91
+ gst_harness_add_src@Base 1.5.91
+ gst_harness_add_src_harness@Base 1.5.91
+ gst_harness_add_src_parse@Base 1.5.91
+ gst_harness_buffers_in_queue@Base 1.5.91
+ gst_harness_buffers_received@Base 1.5.91
+ gst_harness_crank_multiple_clock_waits@Base 1.5.91
+ gst_harness_crank_single_clock_wait@Base 1.5.91
+ gst_harness_create_buffer@Base 1.5.91
+ gst_harness_dump_to_file@Base 1.5.91
+ gst_harness_events_in_queue@Base 1.5.91
+ gst_harness_events_received@Base 1.5.91
+ gst_harness_find_element@Base 1.5.91
+ gst_harness_get@Base 1.5.91
+ gst_harness_get_allocator@Base 1.5.91
+ gst_harness_get_last_pushed_timestamp@Base 1.5.91
+ gst_harness_get_testclock@Base 1.5.91
+ gst_harness_new@Base 1.5.91
+ gst_harness_new_full@Base 1.5.91
+ gst_harness_new_parse@Base 1.5.91
+ gst_harness_new_with_element@Base 1.5.91
+ gst_harness_new_with_padnames@Base 1.5.91
+ gst_harness_new_with_templates@Base 1.5.91
+ gst_harness_play@Base 1.5.91
+ gst_harness_pull@Base 1.5.91
+ gst_harness_pull_event@Base 1.5.91
+ gst_harness_pull_upstream_event@Base 1.5.91
+ gst_harness_push@Base 1.5.91
+ gst_harness_push_and_pull@Base 1.5.91
+ gst_harness_push_event@Base 1.5.91
+ gst_harness_push_from_src@Base 1.5.91
+ gst_harness_push_to_sink@Base 1.5.91
+ gst_harness_push_upstream_event@Base 1.5.91
+ gst_harness_query_latency@Base 1.5.91
+ gst_harness_set@Base 1.5.91
+ gst_harness_set_blocking_push_mode@Base 1.5.91
+ gst_harness_set_caps@Base 1.5.91
+ gst_harness_set_caps_str@Base 1.5.91
+ gst_harness_set_drop_buffers@Base 1.5.91
+ gst_harness_set_forwarding@Base 1.5.91
+ gst_harness_set_propose_allocator@Base 1.5.91
+ gst_harness_set_sink_caps@Base 1.5.91
+ gst_harness_set_sink_caps_str@Base 1.5.91
+ gst_harness_set_src_caps@Base 1.5.91
+ gst_harness_set_src_caps_str@Base 1.5.91
+ gst_harness_set_time@Base 1.5.91
+ gst_harness_set_upstream_latency@Base 1.5.91
+ gst_harness_sink_push_many@Base 1.5.91
+ gst_harness_src_crank_and_push_many@Base 1.5.91
+ gst_harness_src_push_event@Base 1.5.91
+ gst_harness_stress_custom_start@Base 1.5.91
+ gst_harness_stress_property_start_full@Base 1.5.91
+ gst_harness_stress_push_buffer_start_full@Base 1.5.91
+ gst_harness_stress_push_buffer_with_cb_start_full@Base 1.5.91
+ gst_harness_stress_push_event_start_full@Base 1.5.91
+ gst_harness_stress_push_upstream_event_start_full@Base 1.5.91
+ gst_harness_stress_requestpad_start_full@Base 1.5.91
+ gst_harness_stress_statechange_start_full@Base 1.5.91
+ gst_harness_stress_thread_stop@Base 1.5.91
+ gst_harness_teardown@Base 1.5.91
+ gst_harness_try_pull@Base 1.5.91
+ gst_harness_try_pull_event@Base 1.5.91
+ gst_harness_try_pull_upstream_event@Base 1.5.91
+ gst_harness_upstream_events_in_queue@Base 1.5.91
+ gst_harness_upstream_events_received@Base 1.5.91
+ gst_harness_use_systemclock@Base 1.5.91
+ gst_harness_use_testclock@Base 1.5.91
+ gst_harness_wait_for_clock_id_waits@Base 1.5.91
  gst_test_clock_advance_time@Base 1.2.0
  gst_test_clock_get_next_entry_time@Base 1.2.0
  gst_test_clock_get_type@Base 1.2.0
@@ -355,20 +447,25 @@
  srunner_fork_status@Base 1.0.0
  srunner_free@Base 1.0.0
  srunner_has_log@Base 1.0.0
+ srunner_has_tap@Base 1.5.91
  srunner_has_xml@Base 1.0.0
  srunner_log_fname@Base 1.0.0
  srunner_ntests_failed@Base 1.0.0
  srunner_ntests_run@Base 1.0.0
  srunner_print@Base 1.0.0
  srunner_results@Base 1.0.0
+ srunner_run@Base 1.5.91
  srunner_run_all@Base 1.0.0
  srunner_set_fork_status@Base 1.0.0
  srunner_set_log@Base 1.0.0
+ srunner_set_tap@Base 1.5.91
  srunner_set_xml@Base 1.0.0
+ srunner_tap_fname@Base 1.5.91
  srunner_xml_fname@Base 1.0.0
  start_cond@Base 1.0.0
  suite_add_tcase@Base 1.0.0
  suite_create@Base 1.0.0
+ suite_tcase@Base 1.5.91
  sync_cond@Base 1.0.0
  tcase_add_checked_fixture@Base 1.0.0
  tcase_add_unchecked_fixture@Base 1.0.0
@@ -385,8 +482,10 @@
 libgstcontroller-1.0.so.0 libgstreamer1.0-0 #MINVER#
  gst_argb_control_binding_get_type@Base 1.0.0
  gst_argb_control_binding_new@Base 1.0.0
+ gst_control_point_get_type@Base 1.5.91
  gst_direct_control_binding_get_type@Base 1.0.0
  gst_direct_control_binding_new@Base 1.0.0
+ gst_direct_control_binding_new_absolute@Base 1.5.91
  gst_interpolation_control_source_get_type@Base 1.0.0
  gst_interpolation_control_source_new@Base 1.0.0
  gst_interpolation_mode_get_type@Base 1.0.0
@@ -406,10 +505,13 @@
  gst_trigger_control_source_new@Base 1.0.0
 libgstnet-1.0.so.0 libgstreamer1.0-0 #MINVER#
  gst_buffer_add_net_address_meta@Base 1.0.0
+ gst_buffer_add_net_control_message_meta@Base 1.5.91
  gst_net_address_meta_api_get_type@Base 1.0.0
  gst_net_address_meta_get_info@Base 1.0.0
  gst_net_client_clock_get_type@Base 1.0.0
  gst_net_client_clock_new@Base 1.0.0
+ gst_net_control_message_meta_api_get_type@Base 1.5.91
+ gst_net_control_message_meta_get_info@Base 1.5.91
  gst_net_time_packet_copy@Base 1.0.0
  gst_net_time_packet_free@Base 1.0.0
  gst_net_time_packet_get_type@Base 1.0.0
@@ -419,6 +521,16 @@
  gst_net_time_packet_serialize@Base 1.0.0
  gst_net_time_provider_get_type@Base 1.0.0
  gst_net_time_provider_new@Base 1.0.0
+ gst_ntp_clock_get_type@Base 1.5.91
+ gst_ntp_clock_new@Base 1.5.91
+ gst_ptp_clock_get_type@Base 1.5.91
+ gst_ptp_clock_new@Base 1.5.91
+ gst_ptp_deinit@Base 1.5.91
+ gst_ptp_init@Base 1.5.91
+ gst_ptp_is_initialized@Base 1.5.91
+ gst_ptp_is_supported@Base 1.5.91
+ gst_ptp_statistics_callback_add@Base 1.5.91
+ gst_ptp_statistics_callback_remove@Base 1.5.91
 libgstreamer-1.0.so.0 libgstreamer1.0-0 #MINVER#
  GST_CAT_BUFFER@Base 1.0.0
  GST_CAT_BUFFER_LIST@Base 1.0.0
@@ -474,6 +586,7 @@
  _gst_double_range_type@Base 1.4.0
  _gst_element_error_printf@Base 1.0.0
  _gst_event_type@Base 1.0.0
+ _gst_flagset_type@Base 1.5.91
  _gst_fraction_range_type@Base 1.4.0
  _gst_fraction_type@Base 1.4.0
  _gst_int64_range_type@Base 1.4.0
@@ -530,11 +643,15 @@
  gst_bin_recalculate_latency@Base 1.0.0
  gst_bin_remove@Base 1.0.0
  gst_bin_remove_many@Base 1.0.0
+ gst_bin_sync_children_states@Base 1.5.91
  gst_bitmask_get_type@Base 1.0.0
  gst_buffer_add_meta@Base 1.0.0
+ gst_buffer_add_parent_buffer_meta@Base 1.5.91
+ gst_buffer_add_protection_meta@Base 1.5.0.1+git20150513
  gst_buffer_append@Base 1.0.0
  gst_buffer_append_memory@Base 1.0.0
  gst_buffer_append_region@Base 1.0.0
+ gst_buffer_copy_deep@Base 1.5.91
  gst_buffer_copy_flags_get_type@Base 1.0.0
  gst_buffer_copy_into@Base 1.0.0
  gst_buffer_copy_region@Base 1.0.0
@@ -557,6 +674,7 @@
  gst_buffer_is_all_memory_writable@Base 1.4.0
  gst_buffer_is_memory_range_writable@Base 1.4.0
  gst_buffer_iterate_meta@Base 1.0.0
+ gst_buffer_list_copy_deep@Base 1.5.91
  gst_buffer_list_foreach@Base 1.0.0
  gst_buffer_list_get@Base 1.0.0
  gst_buffer_list_get_type@Base 1.0.0
@@ -627,6 +745,7 @@
  gst_bus_pop_filtered@Base 1.0.0
  gst_bus_post@Base 1.0.0
  gst_bus_remove_signal_watch@Base 1.0.0
+ gst_bus_remove_watch@Base 1.5.91
  gst_bus_set_flushing@Base 1.0.0
  gst_bus_set_sync_handler@Base 1.0.0
  gst_bus_sync_reply_get_type@Base 1.0.0
@@ -661,8 +780,10 @@
  gst_caps_features_remove_id@Base 1.2.0
  gst_caps_features_set_parent_refcount@Base 1.2.0
  gst_caps_features_to_string@Base 1.2.0
+ gst_caps_filter_and_map_in_place@Base 1.5.91
  gst_caps_fixate@Base 1.0.0
  gst_caps_flags_get_type@Base 1.0.0
+ gst_caps_foreach@Base 1.5.91
  gst_caps_from_string@Base 1.0.0
  gst_caps_get_features@Base 1.2.0
  gst_caps_get_size@Base 1.0.0
@@ -681,6 +802,7 @@
  gst_caps_is_subset@Base 1.0.0
  gst_caps_is_subset_structure@Base 1.0.0
  gst_caps_is_subset_structure_full@Base 1.2.0
+ gst_caps_map_in_place@Base 1.5.91
  gst_caps_merge@Base 1.0.0
  gst_caps_merge_structure@Base 1.0.0
  gst_caps_merge_structure_full@Base 1.2.0
@@ -715,7 +837,9 @@
  gst_child_proxy_set_property@Base 1.0.0
  gst_child_proxy_set_valist@Base 1.0.0
  gst_clock_add_observation@Base 1.0.0
+ gst_clock_add_observation_unapplied@Base 1.5.91
  gst_clock_adjust_unlocked@Base 1.0.0
+ gst_clock_adjust_with_calibration@Base 1.5.91
  gst_clock_entry_type_get_type@Base 1.0.0
  gst_clock_flags_get_type@Base 1.0.0
  gst_clock_get_calibration@Base 1.0.0
@@ -732,6 +856,7 @@
  gst_clock_id_unschedule@Base 1.0.0
  gst_clock_id_wait@Base 1.0.0
  gst_clock_id_wait_async@Base 1.0.0
+ gst_clock_is_synced@Base 1.5.91
  gst_clock_new_periodic_id@Base 1.0.0
  gst_clock_new_single_shot_id@Base 1.0.0
  gst_clock_periodic_id_reinit@Base 1.0.0
@@ -739,10 +864,12 @@
  gst_clock_set_calibration@Base 1.0.0
  gst_clock_set_master@Base 1.0.0
  gst_clock_set_resolution@Base 1.0.0
+ gst_clock_set_synced@Base 1.5.91
  gst_clock_set_timeout@Base 1.0.0
  gst_clock_single_shot_id_reinit@Base 1.0.0
  gst_clock_type_get_type@Base 1.0.0
  gst_clock_unadjust_unlocked@Base 1.0.0
+ gst_clock_wait_for_sync@Base 1.5.91
  gst_context_get_context_type@Base 1.2.0
  gst_context_get_structure@Base 1.2.0
  gst_context_get_type@Base 1.2.0
@@ -792,6 +919,7 @@
  gst_date_time_to_iso8601_string@Base 1.0.0
  gst_date_time_unref@Base 1.0.0
  gst_debug_add_log_function@Base 1.0.0
+ gst_debug_bin_to_dot_data@Base 1.5.91
  gst_debug_bin_to_dot_file@Base 1.0.0
  gst_debug_bin_to_dot_file_with_ts@Base 1.0.0
  gst_debug_category_free@Base 1.0.0
@@ -833,15 +961,19 @@
  gst_device_get_caps@Base 1.4.0
  gst_device_get_device_class@Base 1.4.0
  gst_device_get_display_name@Base 1.4.0
+ gst_device_get_properties@Base 1.5.91
  gst_device_get_type@Base 1.4.0
  gst_device_has_classes@Base 1.4.0
  gst_device_has_classesv@Base 1.4.0
  gst_device_monitor_add_filter@Base 1.4.0
  gst_device_monitor_get_bus@Base 1.4.0
  gst_device_monitor_get_devices@Base 1.4.0
+ gst_device_monitor_get_providers@Base 1.5.91
+ gst_device_monitor_get_show_all_devices@Base 1.5.91
  gst_device_monitor_get_type@Base 1.4.0
  gst_device_monitor_new@Base 1.4.0
  gst_device_monitor_remove_filter@Base 1.4.0
+ gst_device_monitor_set_show_all_devices@Base 1.5.91
  gst_device_monitor_start@Base 1.4.0
  gst_device_monitor_stop@Base 1.4.0
  gst_device_provider_can_monitor@Base 1.4.0
@@ -865,10 +997,13 @@
  gst_device_provider_get_bus@Base 1.4.0
  gst_device_provider_get_devices@Base 1.4.0
  gst_device_provider_get_factory@Base 1.4.0
+ gst_device_provider_get_hidden_providers@Base 1.5.91
  gst_device_provider_get_type@Base 1.4.0
+ gst_device_provider_hide_provider@Base 1.5.91
  gst_device_provider_register@Base 1.4.0
  gst_device_provider_start@Base 1.4.0
  gst_device_provider_stop@Base 1.4.0
+ gst_device_provider_unhide_provider@Base 1.5.91
  gst_device_reconfigure_element@Base 1.4.0
  gst_double_range_get_type@Base 1.0.0
  gst_element_abort_state@Base 1.0.0
@@ -971,6 +1106,7 @@
  gst_event_new_gap@Base 1.0.0
  gst_event_new_latency@Base 1.0.0
  gst_event_new_navigation@Base 1.0.0
+ gst_event_new_protection@Base 1.5.0.1+git20150513
  gst_event_new_qos@Base 1.0.0
  gst_event_new_reconfigure@Base 1.0.0
  gst_event_new_seek@Base 1.0.0
@@ -988,6 +1124,7 @@
  gst_event_parse_gap@Base 1.0.0
  gst_event_parse_group_id@Base 1.2.0
  gst_event_parse_latency@Base 1.0.0
+ gst_event_parse_protection@Base 1.5.0.1+git20150513
  gst_event_parse_qos@Base 1.0.0
  gst_event_parse_seek@Base 1.0.0
  gst_event_parse_segment@Base 1.0.0
@@ -1010,6 +1147,8 @@
  gst_event_type_to_quark@Base 1.0.0
  gst_event_writable_structure@Base 1.0.0
  gst_filename_to_uri@Base 1.0.0
+ gst_flagset_get_type@Base 1.5.91
+ gst_flagset_register@Base 1.5.91
  gst_flow_get_name@Base 1.0.0
  gst_flow_return_get_type@Base 1.0.0
  gst_flow_to_quark@Base 1.0.0
@@ -1190,6 +1329,8 @@
  gst_object_get_value_array@Base 1.0.0
  gst_object_has_active_control_bindings@Base 1.0.0
  gst_object_has_ancestor@Base 1.0.0
+ gst_object_has_as_ancestor@Base 1.5.91
+ gst_object_has_as_parent@Base 1.5.91
  gst_object_ref@Base 1.0.0
  gst_object_ref_sink@Base 1.0.0
  gst_object_remove_control_binding@Base 1.0.0
@@ -1304,6 +1445,8 @@
  gst_pad_use_fixed_caps@Base 1.0.0
  gst_param_spec_fraction@Base 1.0.0
  gst_param_spec_fraction_get_type@Base 1.0.0
+ gst_parent_buffer_meta_api_get_type@Base 1.5.91
+ gst_parent_buffer_meta_get_info@Base 1.5.91
  gst_parse_bin_from_description@Base 1.0.0
  gst_parse_bin_from_description_full@Base 1.0.0
  gst_parse_context_free@Base 1.0.0
@@ -1323,11 +1466,14 @@
  gst_pipeline_get_bus@Base 1.0.0
  gst_pipeline_get_clock@Base 1.0.0
  gst_pipeline_get_delay@Base 1.0.0
+ gst_pipeline_get_latency@Base 1.5.91
+ gst_pipeline_get_pipeline_clock@Base 1.5.0.1+git20150513
  gst_pipeline_get_type@Base 1.0.0
  gst_pipeline_new@Base 1.0.0
  gst_pipeline_set_auto_flush_bus@Base 1.0.0
  gst_pipeline_set_clock@Base 1.0.0
  gst_pipeline_set_delay@Base 1.0.0
+ gst_pipeline_set_latency@Base 1.5.91
  gst_pipeline_use_clock@Base 1.0.0
  gst_plugin_add_dependency@Base 1.0.0
  gst_plugin_add_dependency_simple@Base 1.0.0
@@ -1391,12 +1537,16 @@
  gst_preset_get_preset_names@Base 1.0.0
  gst_preset_get_property_names@Base 1.0.0
  gst_preset_get_type@Base 1.0.0
+ gst_preset_is_editable@Base 1.5.91
  gst_preset_load_preset@Base 1.0.0
  gst_preset_rename_preset@Base 1.0.0
  gst_preset_save_preset@Base 1.0.0
  gst_preset_set_app_dir@Base 1.0.0
  gst_preset_set_meta@Base 1.0.0
  gst_progress_type_get_type@Base 1.0.0
+ gst_protection_meta_api_get_type@Base 1.5.0.1+git20150513
+ gst_protection_meta_get_info@Base 1.5.0.1+git20150513
+ gst_protection_select_system@Base 1.5.0.1+git20150513
  gst_proxy_pad_chain_default@Base 1.0.0
  gst_proxy_pad_chain_list_default@Base 1.0.0
  gst_proxy_pad_get_internal@Base 1.0.0
@@ -1515,11 +1665,13 @@
  gst_resource_error_get_type@Base 1.0.0
  gst_resource_error_quark@Base 1.0.0
  gst_sample_get_buffer@Base 1.0.0
+ gst_sample_get_buffer_list@Base 1.5.91
  gst_sample_get_caps@Base 1.0.0
  gst_sample_get_info@Base 1.0.0
  gst_sample_get_segment@Base 1.0.0
  gst_sample_get_type@Base 1.0.0
  gst_sample_new@Base 1.0.0
+ gst_sample_set_buffer_list@Base 1.5.91
  gst_scheduling_flags_get_type@Base 1.0.0
  gst_search_mode_get_type@Base 1.0.0
  gst_seek_flags_get_type@Base 1.0.0
@@ -1532,11 +1684,13 @@
  gst_segment_free@Base 1.0.0
  gst_segment_get_type@Base 1.0.0
  gst_segment_init@Base 1.0.0
+ gst_segment_is_equal@Base 1.5.0.1+git20150513
  gst_segment_new@Base 1.0.0
  gst_segment_offset_running_time@Base 1.2.3
  gst_segment_set_running_time@Base 1.0.0
  gst_segment_to_position@Base 1.0.0
  gst_segment_to_running_time@Base 1.0.0
+ gst_segment_to_running_time_full@Base 1.5.0.1+git20150513
  gst_segment_to_stream_time@Base 1.0.0
  gst_segtrap_is_enabled@Base 1.0.0
  gst_segtrap_set_enabled@Base 1.0.0
@@ -1556,6 +1710,7 @@
  gst_structure_can_intersect@Base 1.0.0
  gst_structure_change_type_get_type@Base 1.0.0
  gst_structure_copy@Base 1.0.0
+ gst_structure_filter_and_map_in_place@Base 1.5.91
  gst_structure_fixate@Base 1.0.0
  gst_structure_fixate_field@Base 1.0.0
  gst_structure_fixate_field_boolean@Base 1.0.0
@@ -1574,6 +1729,7 @@
  gst_structure_get_double@Base 1.0.0
  gst_structure_get_enum@Base 1.0.0
  gst_structure_get_field_type@Base 1.0.0
+ gst_structure_get_flagset@Base 1.5.91
  gst_structure_get_fraction@Base 1.0.0
  gst_structure_get_int64@Base 1.4.0
  gst_structure_get_int@Base 1.0.0
@@ -1766,20 +1922,60 @@
  gst_type_find_suggest@Base 1.0.0
  gst_type_find_suggest_simple@Base 1.0.0
  gst_update_registry@Base 1.0.0
+ gst_uri_append_path@Base 1.5.91
+ gst_uri_append_path_segment@Base 1.5.91
  gst_uri_construct@Base 1.0.0
+ gst_uri_equal@Base 1.5.91
  gst_uri_error_get_type@Base 1.0.0
  gst_uri_error_quark@Base 1.0.0
+ gst_uri_from_string@Base 1.5.91
+ gst_uri_from_string_with_base@Base 1.5.91
+ gst_uri_get_fragment@Base 1.5.91
+ gst_uri_get_host@Base 1.5.91
  gst_uri_get_location@Base 1.0.0
+ gst_uri_get_path@Base 1.5.91
+ gst_uri_get_path_segments@Base 1.5.91
+ gst_uri_get_path_string@Base 1.5.91
+ gst_uri_get_port@Base 1.5.91
  gst_uri_get_protocol@Base 1.0.0
+ gst_uri_get_query_keys@Base 1.5.91
+ gst_uri_get_query_string@Base 1.5.91
+ gst_uri_get_query_table@Base 1.5.91
+ gst_uri_get_query_value@Base 1.5.91
+ gst_uri_get_scheme@Base 1.5.91
+ gst_uri_get_type@Base 1.5.91
+ gst_uri_get_userinfo@Base 1.5.91
  gst_uri_handler_get_protocols@Base 1.0.0
  gst_uri_handler_get_type@Base 1.0.0
  gst_uri_handler_get_uri@Base 1.0.0
  gst_uri_handler_get_uri_type@Base 1.0.0
  gst_uri_handler_set_uri@Base 1.0.0
  gst_uri_has_protocol@Base 1.0.0
+ gst_uri_is_normalized@Base 1.5.91
  gst_uri_is_valid@Base 1.0.0
+ gst_uri_is_writable@Base 1.5.91
+ gst_uri_join@Base 1.5.91
+ gst_uri_join_strings@Base 1.5.91
+ gst_uri_make_writable@Base 1.5.91
+ gst_uri_new@Base 1.5.91
+ gst_uri_new_with_base@Base 1.5.91
+ gst_uri_normalize@Base 1.5.91
  gst_uri_protocol_is_supported@Base 1.0.0
  gst_uri_protocol_is_valid@Base 1.0.0
+ gst_uri_query_has_key@Base 1.5.91
+ gst_uri_remove_query_key@Base 1.5.91
+ gst_uri_set_fragment@Base 1.5.91
+ gst_uri_set_host@Base 1.5.91
+ gst_uri_set_path@Base 1.5.91
+ gst_uri_set_path_segments@Base 1.5.91
+ gst_uri_set_path_string@Base 1.5.91
+ gst_uri_set_port@Base 1.5.91
+ gst_uri_set_query_string@Base 1.5.91
+ gst_uri_set_query_table@Base 1.5.91
+ gst_uri_set_query_value@Base 1.5.91
+ gst_uri_set_scheme@Base 1.5.91
+ gst_uri_set_userinfo@Base 1.5.91
+ gst_uri_to_string@Base 1.5.91
  gst_uri_type_get_type@Base 1.0.0
  gst_util_array_binary_search@Base 1.0.0
  gst_util_double_to_fraction@Base 1.0.0
@@ -1824,6 +2020,8 @@
  gst_value_get_caps_features@Base 1.2.0
  gst_value_get_double_range_max@Base 1.0.0
  gst_value_get_double_range_min@Base 1.0.0
+ gst_value_get_flagset_flags@Base 1.5.91
+ gst_value_get_flagset_mask@Base 1.5.91
  gst_value_get_fraction_denominator@Base 1.0.0
  gst_value_get_fraction_numerator@Base 1.0.0
  gst_value_get_fraction_range_max@Base 1.0.0
@@ -1853,6 +2051,7 @@
  gst_value_set_caps@Base 1.0.0
  gst_value_set_caps_features@Base 1.2.0
  gst_value_set_double_range@Base 1.0.0
+ gst_value_set_flagset@Base 1.5.91
  gst_value_set_fraction@Base 1.0.0
  gst_value_set_fraction_range@Base 1.0.0
  gst_value_set_fraction_range_full@Base 1.0.0
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/patches/series
diff --git a/debian/rules b/debian/rules
index 8b5249a..688a171 100755
--- a/debian/rules
+++ b/debian/rules
@@ -47,6 +47,7 @@
 PKGFILES=\
 	debian/$(gst_lib).install \
 	debian/$(gst_lib).symbols \
+	debian/$(gst_lib).postinst \
 	debian/$(gst_lib_dev).install \
 	debian/$(gst_lib_dev).preinst \
 	debian/$(gst_lib_dev).postrm \
@@ -105,6 +106,13 @@
 	rm -f $@
 	cp -v $< $@
 
+debian/$(gst_lib).postinst: debian/libgstreamer.postinst debian/rules
+	rm -f $@
+	cat $< | \
+		sed 's/@MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' | \
+		sed 's/@GST_ABI@/$(gst_abi)/g' \
+		> $@
+
 debian/gir1.2-gstreamer-$(gst_abi).install: debian/gir1.2-gstreamer.install debian/rules
 	rm -f $@
 	cp -v $< $@
@@ -198,6 +206,13 @@
 	--with-package-name=$(GST_PACKAGE_NAME) \
 	--with-package-origin=$(GST_PACKAGE_ORIGIN)
 
+ifeq ($(DEB_HOST_ARCH_OS),linux)
+common_conf_flags += --with-ptp-helper-permissions=capabilities
+else
+common_conf_flags += --with-ptp-helper-permissions=setuid-root \
+	--with-ptp-helper-setuid-user=nobody --with-ptp-helper-setuid-group=nobody
+endif
+
 indep_conf_flags = \
 	--with-html-dir=\$${prefix}/share/doc/$(gst_pkgname)-doc
 
@@ -226,7 +241,7 @@
 DEB_SHLIBDEPS_INCLUDE += debian/$(gst_lib)/usr/lib/$(DEB_HOST_MULTIARCH)
 
 install/$(gst_lib_dev)::
-	gcc -o debian/tmp/usr/bin/gst-codec-info-1.0 debian/gst-codec-info.c $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `pkg-config --libs --cflags glib-2.0 gthread-2.0 gmodule-no-export-2.0 gobject-2.0` debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libgstreamer-1.0.so -Idebian/tmp/usr/include/gstreamer-1.0
+	gcc -o debian/tmp/usr/bin/gst-codec-info-1.0 debian/gst-codec-info.c $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `pkg-config --libs --cflags glib-2.0 gthread-2.0 gmodule-no-export-2.0 gobject-2.0` debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libgstreamer-1.0.so -Idebian/tmp/usr/include/gstreamer-1.0 -Idebian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-1.0/include
 	perldoc -o man debian/dh_gstscancodecs > debian/tmp/usr/share/man/man1/dh_gstscancodecs.1
 
 .PHONY: maint
diff --git a/depcomp b/depcomp
index 4ebd5b3..fc98710 100755
--- a/depcomp
+++ b/depcomp
@@ -3,7 +3,7 @@
 
 scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 89d44a4..0051f5c 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -19,7 +19,17 @@
 # descending into all subdirectories a second time, but only after the first
 # (parallel) run has finished, so it should go right through the second time.
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,9 +93,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(top_srcdir)/common/parallel-subdirs.mak \
-	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/version.entities.in README
 subdir = docs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -95,6 +102,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -112,7 +120,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -125,6 +133,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES = version.entities
@@ -183,6 +192,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.entities.in \
+	$(top_srcdir)/common/parallel-subdirs.mak README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -219,7 +230,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -310,6 +326,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -321,9 +338,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -345,6 +364,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -406,8 +426,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -473,6 +495,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -513,7 +536,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -522,7 +544,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/parallel-subdirs.mak:
+$(top_srcdir)/common/parallel-subdirs.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -815,6 +837,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 upload:
 	@if test "x$(SUBDIRS)" != x; then for a in $(SUBDIRS); do cd $$a; make upload; cd ..; done; fi
diff --git a/docs/design/Makefile.in b/docs/design/Makefile.in
index fa61b4a..c9d6782 100644
--- a/docs/design/Makefile.in
+++ b/docs/design/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = docs/design
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -142,6 +153,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -153,7 +165,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -244,6 +261,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -255,9 +273,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -279,6 +299,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -340,8 +361,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -407,6 +430,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -493,7 +517,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/design/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/design/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -667,6 +690,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 html:
 	if ! test -z `which asciidoc`; then \
diff --git a/docs/design/draft-klass.txt b/docs/design/draft-klass.txt
index 9443a40..e8c4b25 100644
--- a/docs/design/draft-klass.txt
+++ b/docs/design/draft-klass.txt
@@ -151,7 +151,7 @@
 
  5) open issues:
 
-   - how to differencial physical devices from logical ones?
+   - how to differentiate physical devices from logical ones?
      autoaudiosink    : Sink/Audio/Device
      alsasink         : Sink/Audio/Device
 
diff --git a/docs/design/part-clocks.txt b/docs/design/part-clocks.txt
index 5a7816f..e149a49 100644
--- a/docs/design/part-clocks.txt
+++ b/docs/design/part-clocks.txt
@@ -78,7 +78,7 @@
 The GStreamer core provides a GstSystemClock based on the system time. 
 Asynchronous callbacks are scheduled from an internal thread.
 
-Clock implementors are encouraged to subclass this systemclock as it
+Clock implementers are encouraged to subclass this systemclock as it
 implements the async notification.
 
 Subclasses can however override all of the important methods for sync and
diff --git a/docs/design/part-context.txt b/docs/design/part-context.txt
index e7a07de..00c706c 100644
--- a/docs/design/part-context.txt
+++ b/docs/design/part-context.txt
@@ -14,7 +14,7 @@
 
 Context types
 ~~~~~~~~~~~~~
-Context type names should be unique and be put in appropiate namespaces,
+Context type names should be unique and be put in appropriate namespaces,
 to prevent name conflicts, e.g. "gst.egl.EGLDisplay". Only one specific
 type is allowed per context type name.
 
@@ -25,7 +25,7 @@
 do the following steps until one succeeds:
 
  1) Check if the element already has a context of the specific type,
-    i.e. it was previoulsy set via gst_element_set_context().
+    i.e. it was previously set via gst_element_set_context().
 
  2) Query downstream with GST_QUERY_CONTEXT for the context and check if
     downstream already has a context of the specific type
diff --git a/docs/design/part-conventions.txt b/docs/design/part-conventions.txt
index cd072c5..447b67b 100644
--- a/docs/design/part-conventions.txt
+++ b/docs/design/part-conventions.txt
@@ -2,7 +2,7 @@
 -------------------------
 
 Due to the potential for exponential growth, several abbreviating conventions will be used throughout this 
-documentation.  These conventions have grown primarily from extremely in-depth discussions of the architecure in IRC.  
+documentation.  These conventions have grown primarily from extremely in-depth discussions of the architecture in IRC.
 This has verified the safety of these conventions, if used properly.  There are no known namespace conflicts as long as 
 context is rigorously observed.
 
@@ -33,7 +33,7 @@
 Drawing conventions
 ~~~~~~~~~~~~~~~~~~~
 
-When drawing pictures the folowing conventions apply:
+When drawing pictures the following conventions apply:
 
 objects
 ^^^^^^^
diff --git a/docs/design/part-latency.txt b/docs/design/part-latency.txt
index 315c756..1d109e8 100644
--- a/docs/design/part-latency.txt
+++ b/docs/design/part-latency.txt
@@ -228,12 +228,72 @@
  (out) "live", G_TYPE_BOOLEAN (default FALSE)
         - if a live element is found upstream
 
- (out) "min-latency", G_TYPE_UINT64 (default 0)
-        - the minimum latency in the pipeline
+ (out) "min-latency", G_TYPE_UINT64 (default 0, must not be NONE)
+        - the minimum latency in the pipeline, meaning the minimum time
+          downstream elements synchronizing to the clock have to wait until
+          they can be sure that all data for the current running time has
+          been received.
 
- (out) "max-latency", G_TYPE_UINT64 (default 0)
-        - the maximum latency in the pipeline
+          Elements answering the latency query and introducing latency must
+          set this to the maximum time for which they will delay data, while
+          considering upstream's minimum latency. As such, from an element's
+          perspective this is *not* its own minimum latency but its own
+          maximum latency.
+          Considering upstream's minimum latency in general means that the
+          element's own value is added to upstream's value, as this will give
+          the overall minimum latency of all elements from the source to the
+          current element:
 
+          min_latency = upstream_min_latency + own_min_latency
+
+ (out) "max-latency", G_TYPE_UINT64 (default 0, NONE meaning infinity)
+        - the maximum latency in the pipeline, meaning the maximum time an
+          element synchronizing to the clock is allowed to wait for receiving
+          all data for the current running time. Waiting for a longer time
+          will result in data loss, overruns and underruns of buffers and in
+          general breaks synchronized data flow in the pipeline.
+
+          Elements answering the latency query should set this to the maximum
+          time for which they can buffer upstream data without blocking or
+          dropping further data. For an element this value will generally be
+          its own minimum latency, but might be bigger than that if it can
+          buffer more data. As such, queue elements can be used to increase
+          the maximum latency.
+
+          The value set in the query should again consider upstream's maximum
+          latency:
+          - If the current element has blocking buffering, i.e. it does
+            not drop data by itself when its internal buffer is full, it should
+            just add its own maximum latency (i.e. the size of its internal
+            buffer) to upstream's value. If upstream's maximum latency, or the
+            elements internal maximum latency was NONE (i.e. infinity), it will
+            be set to infinity.
+
+            if (upstream_max_latency == NONE || own_max_latency == NONE)
+              max_latency = NONE;
+            else
+              max_latency = upstream_max_latency + own_max_latency
+
+            If the element has multiple sinkpads, the minimum upstream latency is
+            the maximum of all live upstream minimum latencies.
+
+          - If the current element has leaky buffering, i.e. it drops data by
+            itself when its internal buffer is full, it should take the minimum
+            of its own maximum latency and upstream's. Examples for such
+            elements are audio sinks and sources with an internal ringbuffer,
+            leaky queues and in general live sources with a limited amount of
+            internal buffers that can be used.
+
+            max_latency = MIN (upstream_max_latency, own_max_latency)
+
+            Note: many GStreamer base classes allow subclasses to set a
+            minimum and maximum latency and handle the query themselves. These
+            base classes assume non-leaky (i.e. blocking) buffering for the
+            maximum latency. The base class' default query handler needs to be
+            overridden to correctly handle leaky buffering.
+
+            If the element has multiple sinkpads, the maximum upstream latency is
+            the minimum of all live upstream maximum latencies.
 
 Event
 ~~~~~
@@ -254,8 +314,10 @@
 When the pipeline collected all ASYNC_DONE messages it can calculate the global
 latency as follows:
 
-  - perform a latency query on all sinks.
-  - latency = MAX (all min latencies) 
+  - perform a latency query on all sinks
+    - sources set their minimum and maximum latency
+    - other elements add their own values as described above
+  - latency = MAX (all min latencies)
   - if MIN (all max latencies) < latency we have an impossible situation and we
     must generate an error indicating that this pipeline cannot be played. This
     usually means that there is not enough buffering in some chain of the
diff --git a/docs/design/part-negotiation.txt b/docs/design/part-negotiation.txt
index d7305cd..d3e67ad 100644
--- a/docs/design/part-negotiation.txt
+++ b/docs/design/part-negotiation.txt
@@ -12,7 +12,7 @@
 Basic rules
 ~~~~~~~~~~~
 
-The simple rules must be followed:
+These simple rules must be followed:
 
  1) downstream suggests formats
  2) upstream decides on format
@@ -249,7 +249,7 @@
  * Playback from a lossy source, such as RTP, in which more knowledge
    about the latency of the pipeline can increase quality; or
 
- * Audio synthesis, in which audio APIs are tuned to producing only the
+ * Audio synthesis, in which audio APIs are tuned to produce only the
    necessary number of samples, typically driven by a hardware interrupt
    to fill a DMA buffer or a Jack[0] port buffer.
 
@@ -268,7 +268,7 @@
 on a format.
 
 Recalling the principles of capsnego, whereby information must flow from
-those that have it to those that do not, we see that the two named use
+those that have it to those that do not, we see that the three named use
 cases have different negotiation requirements:
 
  * RTP and low-latency playback are both like the normal playback case,
@@ -319,7 +319,7 @@
 
 When negotiation succeeded, the sinkpad and all upstream internally linked pads
 are activated in pull mode. Typically, this operation will trigger negotiation
-on the downstream elements, which will now be forced to negotiation to the
+on the downstream elements, which will now be forced to negotiate to the
 final fixed desired caps of the sinkpad.
 
 After these steps, the sink element returns ASYNC from the state change
diff --git a/docs/design/part-states.txt b/docs/design/part-states.txt
index bc2c9ab..7040d21 100644
--- a/docs/design/part-states.txt
+++ b/docs/design/part-states.txt
@@ -17,7 +17,7 @@
  - PAUSED:  The element should be ready to accept and process data. Sink
             elements however only accept one buffer and then block.
  - PLAYING: The same as PAUSED except for live sources and sinks. Sinks accept
-            and rendering data. Live sources produce data.
+            and render data. Live sources produce data.
 
 We call the sequence NULL->PLAYING an upwards state change and PLAYING->NULL
 a downwards state change.
@@ -30,7 +30,7 @@
 
  NULL -> READY
    - The element must check if the resources it needs are available.
-     Device sinks and -sources typically try to probe the device to constrain
+     Device sinks and sources typically try to probe the device to constrain
      their caps.
    - The element opens the device, this is needed if the previous step requires
      the device to be opened.
@@ -162,7 +162,7 @@
    the pending state value. The function returns GST_STATE_NO_PREROLL.
 
  - If the element returned FAILURE to the previous _set_state() call, this 
-   funciton will return FAILURE with the state set to the current state of
+   function will return FAILURE with the state set to the current state of
    the element and the pending state set to the value used in the last call
    of _set_state().
 
@@ -298,7 +298,7 @@
 Locking overview (element)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* Element commiting SUCCESS
+* Element committing SUCCESS
 
  - STATE_LOCK is taken in set_state
  - change state is called if SUCCESS, commit state is called
diff --git a/docs/design/part-streams.txt b/docs/design/part-streams.txt
index 3a95634..09cf074 100644
--- a/docs/design/part-streams.txt
+++ b/docs/design/part-streams.txt
@@ -41,7 +41,7 @@
   2) SEGMENT, rate, start/stop, time
      - marks valid buffer timestamp range (start, stop)
      - marks stream_time of buffers (time). This is the stream time of buffers
-       with a timestamp of NS.start.
+       with a timestamp of S.start.
      - marks playback rate (rate). This is the required playback rate.
      - marks applied rate (applied_rate). This is the already applied playback
        rate. (See also part-trickmodes.txt)
@@ -49,22 +49,22 @@
        against the clock.
 
   3) N buffers
-     - displayable buffers are between start/stop of the SEGMENT. Buffers
+     - displayable buffers are between start/stop of the SEGMENT (S). Buffers
        outside the segment range should be dropped or clipped.
 
      - running_time: 
      
-         if (NS.rate > 0.0)
-           running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
+         if (S.rate > 0.0)
+           running_time = (B.timestamp - S.start) / ABS (S.rate) + S.base
          else
-           running_time = (NS.stop - B.timestamp) / NS.abs_rate + NS.accum
+           running_time = (S.stop - B.timestamp) / ABS (S.rate) + S.base
 
         * a monotonically increasing value that can be used to synchronize 
 	  against the clock (See also part-synchronisation.txt).
 
      - stream_time:
 
-         stream_time = (B.timestamp - NS.start) * NS.abs_applied_rate + NS.time
+         stream_time = (B.timestamp - S.start) * ABS (S.applied_rate) + S.time
 
         * current position in stream between 0 and duration.
 
diff --git a/docs/design/part-synchronisation.txt b/docs/design/part-synchronisation.txt
index 8c67415..7694c1b 100644
--- a/docs/design/part-synchronisation.txt
+++ b/docs/design/part-synchronisation.txt
@@ -114,8 +114,8 @@
 rate. Likewise, a rate between 0.0 and 1.0 will slow down playback.
 
 For negative rates, timestamps are received stop S.stop to S.start so that the
-first buffer received will be transformed into B.running_time of 0 (B.timestamp ==
-S.stop and S.accum == 0).
+first buffer received will be transformed into B.running_time of 0
+(B.timestamp == S.stop and S.base == 0).
 
 This makes it so that B.running_time is always monotonically increasing
 starting from 0 with both positive and negative rates.
@@ -219,7 +219,7 @@
   filling (B.timestamp - S.start) in the above formule for stream time
 
   =>
-    stream_time = (S.offset + (absolute_time - base_time - S.base) * ABS (S.rate)) * S.abs_applied_rate + S.time
+    stream_time = (S.offset + (absolute_time - base_time - S.base) * ABS (S.rate)) * ABS (S.applied_rate) + S.time
 
 This last formula is typically used in sinks to report the current position in
 an accurate and efficient way.
diff --git a/docs/faq/Makefile.in b/docs/faq/Makefile.in
index fba0a6f..fe8f1be 100644
--- a/docs/faq/Makefile.in
+++ b/docs/faq/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -37,7 +37,17 @@
 # install directory trees :(
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -101,10 +111,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(srcdir)/../manuals.mak \
-	$(top_srcdir)/common/upload-doc.mak \
-	$(srcdir)/../htmlinstall.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am
 subdir = docs/faq
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -114,6 +120,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -131,7 +138,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -144,6 +151,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -197,6 +205,9 @@
 am__installdirs = "$(DESTDIR)$(faqdir)"
 DATA = $(faq_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/../htmlinstall.mak \
+	$(srcdir)/../manuals.mak $(srcdir)/Makefile.in \
+	$(top_srcdir)/common/upload-doc.mak
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -208,7 +219,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +315,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +327,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +353,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +415,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +484,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -567,7 +590,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/faq/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/faq/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -576,7 +598,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../manuals.mak $(top_srcdir)/common/upload-doc.mak $(srcdir)/../htmlinstall.mak:
+$(srcdir)/../manuals.mak $(top_srcdir)/common/upload-doc.mak $(srcdir)/../htmlinstall.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -764,6 +786,8 @@
 	ps ps-am tags-am uninstall uninstall-am uninstall-faqDATA \
 	uninstall-local
 
+.PRECIOUS: Makefile
+
 
 ### generate all documentation by default
 # hook in html generation
diff --git a/docs/faq/developing.xml b/docs/faq/developing.xml
index 271236e..0f9a388 100644
--- a/docs/faq/developing.xml
+++ b/docs/faq/developing.xml
@@ -204,9 +204,7 @@
 in 'unified context' format (use diff -u -p). They should be attached to
 a bug report (or feature request) in
 <ulink url="http://bugzilla.gnome.org">bugzilla</ulink> rather than
-sent to the mailing list. Also see
-<ulink url="http://gstreamer.freedesktop.org/wiki/SubmittingPatches">SubmittingPatches</ulink>
-in the GStreamer wiki.
+sent to the mailing list.
         </para>
       </answer>
     </qandaentry>
diff --git a/docs/gst/Makefile.am b/docs/gst/Makefile.am
index 640bf56..1bee088 100644
--- a/docs/gst/Makefile.am
+++ b/docs/gst/Makefile.am
@@ -74,10 +74,6 @@
 	$(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la
 
-
-GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC)
-GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=link $(CC)
-
 GTKDOC_EXTRA_ENVIRONMENT= \
     GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner
 
diff --git a/docs/gst/Makefile.in b/docs/gst/Makefile.in
index 29d8e69..3f0df57 100644
--- a/docs/gst/Makefile.in
+++ b/docs/gst/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,7 +33,17 @@
 ###########################################################################
 # thomas: except of course that we did
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -97,9 +107,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(top_srcdir)/common/upload-doc.mak \
-	$(top_srcdir)/common/gtk-doc.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am $(srcdir)/gstreamer.types.in
 subdir = docs/gst
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -109,6 +116,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -126,7 +134,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -139,6 +147,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES = gstreamer.types
@@ -163,6 +172,9 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gstreamer.types.in \
+	$(top_srcdir)/common/gtk-doc.mak \
+	$(top_srcdir)/common/upload-doc.mak
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -174,7 +186,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -267,6 +284,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -278,9 +296,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -302,6 +322,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -363,8 +384,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -430,6 +453,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -515,8 +539,6 @@
 	$(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la
 
-GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC)
-GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC)
 GTKDOC_EXTRA_ENVIRONMENT = \
     GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner
 
@@ -524,8 +546,13 @@
 # If you need to override some of the declarations, place them in this file
 # and uncomment this line.
 DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = 
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
 
-# thomas: copied from glib-2
 # We set GPATH here; this gives us semantics for GNU make
 # which are more like other make's VPATH, when it comes to
 # whether a source that is a target of one rule is then
@@ -585,7 +612,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/gst/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/gst/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -594,7 +620,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc.mak:
+$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -771,6 +797,8 @@
 	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
 	uninstall-am uninstall-local
 
+.PRECIOUS: Makefile
+
 html: html-build.stamp
 
 upload: $(FORMATS)
@@ -856,15 +884,22 @@
 @ENABLE_GTK_DOC_TRUE@		--ignore-headers="$(IGNORE_HFILES)"
 @ENABLE_GTK_DOC_TRUE@	@if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null; then	\
 @ENABLE_GTK_DOC_TRUE@	    echo "  DOC   Introspecting gobjects"; \
+@ENABLE_GTK_DOC_TRUE@	    scanobj_options=""; \
+@ENABLE_GTK_DOC_TRUE@	    gtkdoc-scangobj 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
+@ENABLE_GTK_DOC_TRUE@	    if test "$$?" = "0"; then \
+@ENABLE_GTK_DOC_TRUE@	        if test "x$(V)" = "x1"; then \
+@ENABLE_GTK_DOC_TRUE@	            scanobj_options="--verbose"; \
+@ENABLE_GTK_DOC_TRUE@	        fi; \
+@ENABLE_GTK_DOC_TRUE@	    fi; \
 @ENABLE_GTK_DOC_TRUE@	    GST_PLUGIN_SYSTEM_PATH_1_0=`cd $(top_builddir) && pwd`		\
 @ENABLE_GTK_DOC_TRUE@	    GST_PLUGIN_PATH_1_0=						\
 @ENABLE_GTK_DOC_TRUE@	    GST_REGISTRY_1_0=doc-registry.xml				\
 @ENABLE_GTK_DOC_TRUE@	    $(GTKDOC_EXTRA_ENVIRONMENT)					\
-@ENABLE_GTK_DOC_TRUE@	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"				\
+@ENABLE_GTK_DOC_TRUE@	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)"	\
 @ENABLE_GTK_DOC_TRUE@	    CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)"				\
 @ENABLE_GTK_DOC_TRUE@	    LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"				\
 @ENABLE_GTK_DOC_TRUE@	    gtkdoc-scangobj --type-init-func="gst_init(NULL,NULL)"	\
-@ENABLE_GTK_DOC_TRUE@	        --module=$(DOC_MODULE) ;				\
+@ENABLE_GTK_DOC_TRUE@	        $$scanobj_options --module=$(DOC_MODULE) ;				\
 @ENABLE_GTK_DOC_TRUE@	else								\
 @ENABLE_GTK_DOC_TRUE@	    for i in $(SCANOBJ_FILES) ; do				\
 @ENABLE_GTK_DOC_TRUE@	       test -f $$i || touch $$i ;				\
diff --git a/docs/gst/gstreamer-docs.sgml b/docs/gst/gstreamer-docs.sgml
index 3a2c7af..cacfd9c 100644
--- a/docs/gst/gstreamer-docs.sgml
+++ b/docs/gst/gstreamer-docs.sgml
@@ -95,6 +95,7 @@
     <xi:include href="xml/gstpluginfeature.xml" />
     <xi:include href="xml/gstpoll.xml" />
     <xi:include href="xml/gstpreset.xml" />
+    <xi:include href="xml/gstprotection.xml" />
     <xi:include href="xml/gstquery.xml" />
     <xi:include href="xml/gstregistry.xml" />
     <xi:include href="xml/gstsegment.xml" />
@@ -108,6 +109,7 @@
     <xi:include href="xml/gsttocsetter.xml" />
     <xi:include href="xml/gsttypefind.xml" />
     <xi:include href="xml/gsttypefindfactory.xml" />
+    <xi:include href="xml/gsturi.xml" />
     <xi:include href="xml/gsturihandler.xml" />
     <xi:include href="xml/gstutils.xml" />
     <xi:include href="xml/gstvalue.xml" />
@@ -139,15 +141,39 @@
     <xi:include href="xml/tree_index.sgml"/>
   </chapter>
 
-  <index id="api-index-full">
+  <index>
     <title>API Index</title>
     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
   </index>
-  <index id="api-index-deprecated" role="deprecated">
+  <index role="deprecated">
     <title>Index of deprecated API</title>
     <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
   </index>
-
+  <index>
+    <title>Index of new API in 1.6</title>
+    <xi:include href="xml/api-index-1.6.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.4</title>
+    <xi:include href="xml/api-index-1.4.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.2.3</title>
+    <xi:include href="xml/api-index-1.2.3.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.2</title>
+    <xi:include href="xml/api-index-1.2.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.0.10</title>
+    <xi:include href="xml/api-index-1.0.10.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.0.5</title>
+    <xi:include href="xml/api-index-1.0.5.xml"><xi:fallback /></xi:include>
+  </index>
+  
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
 </book>
diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index 593493c..94b1356 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -87,6 +87,7 @@
 gst_bin_add_many
 gst_bin_remove_many
 gst_bin_find_unlinked_pad
+gst_bin_sync_children_states
 
 <SUBSECTION>
 GstBinFlags
@@ -135,6 +136,7 @@
 gst_bus_create_watch
 gst_bus_add_watch_full
 gst_bus_add_watch
+gst_bus_remove_watch
 gst_bus_disable_sync_message_emission
 gst_bus_enable_sync_message_emission
 gst_bus_async_signal_func
@@ -237,6 +239,7 @@
 gst_buffer_copy
 gst_buffer_copy_into
 gst_buffer_copy_region
+gst_buffer_copy_deep
 
 gst_buffer_is_writable
 gst_buffer_make_writable
@@ -252,6 +255,10 @@
 GstBufferForeachMetaFunc
 gst_buffer_foreach_meta
 
+GstParentBufferMeta
+gst_buffer_add_parent_buffer_meta
+gst_buffer_get_parent_buffer_meta
+
 <SUBSECTION Standard>
 GstBufferClass
 GST_BUFFER
@@ -260,10 +267,14 @@
 GST_TYPE_BUFFER_FLAGS
 GST_TYPE_BUFFER_COPY_FLAGS
 GST_BUFFER_CAST
+GST_PARENT_BUFFER_META_INFO
+GST_TYPE_PARENT_BUFFER_META_API_TYPE
+gst_parent_buffer_meta_get_info
 <SUBSECTION Private>
 gst_buffer_get_type
 gst_buffer_flags_get_type
 gst_buffer_copy_flags_get_type
+gst_parent_buffer_meta_api_get_type
 GST_BUFFER_TIMESTAMP
 GST_BUFFER_TIMESTAMP_IS_VALID
 </SECTION>
@@ -361,6 +372,7 @@
 gst_buffer_list_ref
 gst_buffer_list_unref
 gst_buffer_list_copy
+gst_buffer_list_copy_deep
 gst_buffer_list_is_writable
 gst_buffer_list_make_writable
 
@@ -398,6 +410,10 @@
 GST_CAPS_FLAG_SET
 GST_CAPS_FLAG_UNSET
 
+GstCapsForeachFunc
+GstCapsMapFunc
+GstCapsFilterMapFunc
+
 gst_caps_new_empty
 gst_caps_new_empty_simple
 gst_caps_new_any
@@ -424,6 +440,9 @@
 gst_caps_set_value
 gst_caps_set_simple
 gst_caps_set_simple_valist
+gst_caps_foreach
+gst_caps_map_in_place
+gst_caps_filter_and_map_in_place
 gst_caps_is_any
 gst_caps_is_empty
 gst_caps_is_fixed
@@ -514,9 +533,11 @@
 <TITLE>GstSample</TITLE>
 GstSample
 gst_sample_get_buffer
+gst_sample_get_buffer_list
 gst_sample_get_caps
 gst_sample_get_info
 gst_sample_get_segment
+gst_sample_set_buffer_list
 gst_sample_new
 gst_sample_ref
 gst_sample_unref
@@ -566,6 +587,8 @@
 GstClockID
 GST_CLOCK_TIME_NONE
 GST_CLOCK_TIME_IS_VALID
+GST_CLOCK_STIME_NONE
+GST_CLOCK_STIME_IS_VALID
 GST_SECOND
 GST_MSECOND
 GST_USECOND
@@ -592,6 +615,7 @@
 GstClockFlags
 GST_CLOCK_FLAGS
 gst_clock_add_observation
+gst_clock_add_observation_unapplied
 gst_clock_set_master
 gst_clock_get_master
 gst_clock_set_resolution
@@ -604,10 +628,14 @@
 gst_clock_get_internal_time
 gst_clock_adjust_unlocked
 gst_clock_unadjust_unlocked
+gst_clock_adjust_with_calibration
 gst_clock_get_calibration
 gst_clock_set_calibration
 gst_clock_get_timeout
 gst_clock_set_timeout
+gst_clock_wait_for_sync
+gst_clock_is_synced
+gst_clock_set_synced
 gst_clock_id_get_time
 gst_clock_id_wait
 gst_clock_id_wait_async
@@ -665,6 +693,7 @@
 
 <SECTION>
 <FILE>gstconfig</FILE>
+<TITLE>GstConfig</TITLE>
 GST_DISABLE_GST_DEBUG
 GST_DISABLE_PARSE
 GST_DISABLE_TRACE
@@ -936,9 +965,11 @@
 GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER
 GST_ELEMENT_FACTORY_TYPE_DECODABLE
 GST_ELEMENT_FACTORY_TYPE_DECODER
+GST_ELEMENT_FACTORY_TYPE_DECRYPTOR
 GST_ELEMENT_FACTORY_TYPE_DEMUXER
 GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER
 GST_ELEMENT_FACTORY_TYPE_ENCODER
+GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR
 GST_ELEMENT_FACTORY_TYPE_FORMATTER
 GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS
 GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO
@@ -967,9 +998,11 @@
 <SUBSECTION Private>
 gst_element_factory_get_type
 GST_ELEMENT_FACTORY_KLASS_DECODER
+GST_ELEMENT_FACTORY_KLASS_DECRYPTOR
 GST_ELEMENT_FACTORY_KLASS_DEMUXER
 GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER
 GST_ELEMENT_FACTORY_KLASS_ENCODER
+GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR
 GST_ELEMENT_FACTORY_KLASS_FORMATTER
 GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO
 GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE
@@ -1120,6 +1153,9 @@
 
 gst_event_new_segment_done
 gst_event_parse_segment_done
+
+gst_event_new_protection
+gst_event_parse_protection
 <SUBSECTION Standard>
 GstEventClass
 GST_EVENT
@@ -1227,6 +1263,7 @@
 <TITLE>GstInfo</TITLE>
 GstDebugLevel
 GST_LEVEL_DEFAULT
+GST_LEVEL_MAX
 GstDebugColorFlags
 GstDebugColorMode
 GstDebugCategory
@@ -1312,6 +1349,9 @@
 gst_debug_print_stack_trace
 GST_TIME_FORMAT
 GST_TIME_ARGS
+GST_STIME_FORMAT
+GST_STIME_ARGS
+gst_debug_bin_to_dot_data
 gst_debug_bin_to_dot_file
 gst_debug_bin_to_dot_file_with_ts
 <SUBSECTION Standard>
@@ -1443,7 +1483,9 @@
 GST_MAP_INFO_INIT
 
 GstMemoryMapFunction
+GstMemoryMapFullFunction
 GstMemoryUnmapFunction
+GstMemoryUnmapFullFunction
 GstMemoryCopyFunction
 GstMemoryShareFunction
 GstMemoryIsSpanFunction
@@ -1697,10 +1739,12 @@
 gst_object_get_name
 gst_object_set_parent
 gst_object_get_parent
+gst_object_has_as_parent
 gst_object_unparent
 gst_object_default_deep_notify
 gst_object_default_error
 gst_object_check_uniqueness
+gst_object_has_as_ancestor
 gst_object_has_ancestor
 gst_object_ref
 gst_object_unref
@@ -1969,6 +2013,9 @@
 GST_PAD_IS_ACCEPT_INTERSECT
 GST_PAD_SET_ACCEPT_INTERSECT
 GST_PAD_UNSET_ACCEPT_INTERSECT
+GST_PAD_IS_ACCEPT_TEMPLATE
+GST_PAD_SET_ACCEPT_TEMPLATE
+GST_PAD_UNSET_ACCEPT_TEMPLATE
 
 <SUBSECTION Standard>
 GstPadClass
@@ -2117,6 +2164,7 @@
 gst_pipeline_get_bus
 
 gst_pipeline_set_clock
+gst_pipeline_get_pipeline_clock
 gst_pipeline_get_clock
 
 gst_pipeline_use_clock
@@ -2128,6 +2176,9 @@
 gst_pipeline_set_delay
 gst_pipeline_get_delay
 
+gst_pipeline_set_latency
+gst_pipeline_get_latency
+
 <SUBSECTION Standard>
 GstPipelineClass
 GST_PIPELINE
@@ -2284,6 +2335,7 @@
 gst_preset_get_meta
 gst_preset_set_app_dir
 gst_preset_get_app_dir
+gst_preset_is_editable
 <SUBSECTION Standard>
 GST_PRESET
 GST_IS_PRESET
@@ -2293,6 +2345,22 @@
 </SECTION>
 
 <SECTION>
+<FILE>gstprotection</FILE>
+<TITLE>GstProtectionMeta</TITLE>
+<INCLUDE>gst/gstprotection.h</INCLUDE>
+GstProtectionMeta
+gst_buffer_add_protection_meta
+gst_buffer_get_protection_meta
+gst_protection_select_system
+GST_PROTECTION_SYSTEM_ID_CAPS_FIELD
+<SUBSECTION Standard>
+GST_PROTECTION_META_API_TYPE
+GST_PROTECTION_META_INFO
+gst_protection_meta_get_info
+gst_protection_meta_api_get_type
+</SECTION>
+
+<SECTION>
 <FILE>gstquery</FILE>
 <TITLE>GstQuery</TITLE>
 GstQuery
@@ -2498,11 +2566,13 @@
 gst_segment_free
 gst_segment_do_seek
 gst_segment_to_running_time
+gst_segment_to_running_time_full
 gst_segment_to_stream_time
 gst_segment_to_position
 gst_segment_set_running_time
 gst_segment_copy_into
 gst_segment_offset_running_time
+gst_segment_is_equal
 <SUBSECTION Standard>
 GST_TYPE_SEGMENT
 GST_TYPE_SEGMENT_FLAGS
@@ -2518,6 +2588,7 @@
 GstStructure
 GstStructureForeachFunc
 GstStructureMapFunc
+GstStructureFilterMapFunc
 gst_structure_new_empty
 gst_structure_new_id_empty
 gst_structure_new
@@ -2549,7 +2620,6 @@
 gst_structure_remove_fields_valist
 gst_structure_remove_all_fields
 gst_structure_get_field_type
-gst_structure_foreach
 gst_structure_n_fields
 gst_structure_has_field
 gst_structure_has_field_typed
@@ -2571,7 +2641,9 @@
 gst_structure_get_clock_time
 gst_structure_get_enum
 gst_structure_get_fraction
+gst_structure_foreach
 gst_structure_map_in_place
+gst_structure_filter_and_map_in_place
 gst_structure_nth_field_name
 gst_structure_set_parent_refcount
 gst_structure_to_string
@@ -3017,6 +3089,7 @@
 GstURIError
 gst_uri_error_quark
 GST_URI_TYPE_IS_VALID
+GST_URI_NO_PORT
 gst_uri_protocol_is_valid
 gst_uri_protocol_is_supported
 gst_uri_is_valid
@@ -3044,6 +3117,60 @@
 gst_uri_type_get_type
 </SECTION>
 
+<SECTION>
+<FILE>gsturi</FILE>
+<TITLE>GstUri</TITLE>
+GST_URI_CAST
+GST_URI_CONST_CAST
+GstUri
+gst_uri_new
+gst_uri_new_with_base
+gst_uri_from_string
+gst_uri_from_string_with_base
+gst_uri_copy
+gst_uri_equal
+gst_uri_join
+gst_uri_join_strings
+gst_uri_is_writable
+gst_uri_make_writable
+gst_uri_to_string
+gst_uri_ref
+gst_uri_unref
+gst_uri_is_normalized
+gst_uri_normalize
+gst_uri_get_scheme
+gst_uri_set_scheme
+gst_uri_get_userinfo
+gst_uri_set_userinfo
+gst_uri_get_host
+gst_uri_set_host
+gst_uri_get_port
+gst_uri_set_port
+gst_uri_get_path
+gst_uri_set_path
+gst_uri_get_path_string
+gst_uri_set_path_string
+gst_uri_get_path_segments
+gst_uri_set_path_segments
+gst_uri_append_path
+gst_uri_append_path_segment
+gst_uri_get_query_string
+gst_uri_set_query_string
+gst_uri_get_query_table
+gst_uri_set_query_table
+gst_uri_get_query_value
+gst_uri_set_query_value
+gst_uri_remove_query_key
+gst_uri_query_has_key
+gst_uri_get_query_keys
+gst_uri_get_fragment
+gst_uri_set_fragment
+<SUBSECTION Standard>
+GST_IS_URI
+GST_TYPE_URI
+GST_URI
+gst_uri_get_type
+</SECTION>
 
 <SECTION>
 <FILE>gstutils</FILE>
@@ -3199,6 +3326,15 @@
 gst_value_set_bitmask
 gst_value_get_bitmask
 
+<SUBSECTION flagset>
+GST_VALUE_HOLDS_FLAG_SET
+GST_TYPE_FLAG_SET
+gst_structure_get_flagset
+gst_value_get_flagset_flags
+gst_value_get_flagset_mask
+gst_value_set_flagset
+GST_FLAG_SET_MASK_EXACT
+
 <SUBSECTION int64range>
 GST_VALUE_HOLDS_INT64_RANGE
 GST_TYPE_INT64_RANGE
@@ -3307,6 +3443,7 @@
 gst_value_array_prepend_value
 gst_value_fixate
 
+gst_flagset_register
 
 <SUBSECTION Standard>
 GST_TYPE_G_THREAD
@@ -3322,6 +3459,7 @@
 gst_value_array_get_type
 gst_value_list_get_type
 gst_bitmask_get_type
+gst_flagset_get_type
 </SECTION>
 
 <SECTION>
@@ -3348,6 +3486,7 @@
 gst_device_has_classes
 gst_device_has_classesv
 gst_device_reconfigure_element
+gst_device_get_properties
 
 <SUBSECTION Standard>
 GST_DEVICE
diff --git a/docs/gst/html/GstAllocator.html b/docs/gst/html/GstAllocator.html
index 2a0d8e0..9b66dfd 100644
--- a/docs/gst/html/GstAllocator.html
+++ b/docs/gst/html/GstAllocator.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstAllocator</title>
+<title>GstAllocator: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-Gst.html" title="Gst">
 <link rel="next" href="gstreamer-GstAtomicQueue.html" title="GstAtomicQueue">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -519,12 +519,15 @@
 <div class="refsect2">
 <a name="GstAllocator-struct"></a><h3>GstAllocator</h3>
 <pre class="programlisting">typedef struct {
-  GstMemoryMapFunction      mem_map;
-  GstMemoryUnmapFunction    mem_unmap;
+  GstMemoryMapFunction       mem_map;
+  GstMemoryUnmapFunction     mem_unmap;
 
-  GstMemoryCopyFunction     mem_copy;
-  GstMemoryShareFunction    mem_share;
-  GstMemoryIsSpanFunction   mem_is_span;
+  GstMemoryCopyFunction      mem_copy;
+  GstMemoryShareFunction     mem_share;
+  GstMemoryIsSpanFunction    mem_is_span;
+
+  GstMemoryMapFullFunction   mem_map_full;
+  GstMemoryUnmapFullFunction mem_unmap_full;
 } GstAllocator;
 </pre>
 <p>The <a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> is used to create new memory.</p>
@@ -562,6 +565,20 @@
 <td class="struct_member_description"><p>the implementation of the GstMemoryIsSpanFunction</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="GstMemory.html#GstMemoryMapFullFunction" title="GstMemoryMapFullFunction ()"><span class="type">GstMemoryMapFullFunction</span></a> <em class="structfield"><code><a name="GstAllocator-struct.mem-map-full"></a>mem_map_full</code></em>;</p></td>
+<td class="struct_member_description"><p>the implementation of the GstMemoryMapFullFunction.
+Will be used instead of <em class="parameter"><code>mem_map</code></em>
+if present. (Since 1.6)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="GstMemory.html#GstMemoryUnmapFullFunction" title="GstMemoryUnmapFullFunction ()"><span class="type">GstMemoryUnmapFullFunction</span></a> <em class="structfield"><code><a name="GstAllocator-struct.mem-unmap-full"></a>mem_unmap_full</code></em>;</p></td>
+<td class="struct_member_description"><p>the implementation of the GstMemoryUnmapFullFunction.
+Will be used instead of <em class="parameter"><code>mem_unmap</code></em>
+if present. (Since 1.6)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -695,7 +712,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstBin.html b/docs/gst/html/GstBin.html
index fba035b..64a5188 100644
--- a/docs/gst/html/GstBin.html
+++ b/docs/gst/html/GstBin.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstBin</title>
+<title>GstBin: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstAtomicQueue.html" title="GstAtomicQueue">
 <link rel="next" href="GstBuffer.html" title="GstBuffer">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -172,6 +172,14 @@
 </td>
 </tr>
 <tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBin.html#gst-bin-sync-children-states" title="gst_bin_sync_children_states ()">gst_bin_sync_children_states</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
 <a class="link" href="GstBin.html#GST-BIN-IS-NO-RESYNC:CAPS" title="GST_BIN_IS_NO_RESYNC()">GST_BIN_IS_NO_RESYNC</a><span class="c_punctuation">()</span>
@@ -232,17 +240,17 @@
 <tr>
 <td class="signal_type"><a href="https://developer.gnome.org/glib/unstable/glib-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">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</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-element-added" title="The “element-added” signal">element-added</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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-element-removed" title="The “element-removed” signal">element-removed</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -502,7 +510,6 @@
 <a name="id-1.3.6.11.3.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the element could be added, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
 the bin does not want to accept the element.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -546,7 +553,6 @@
 <a name="id-1.3.6.11.4.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the element could be removed, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
 the bin does not want to remove the element.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -891,7 +897,6 @@
 <div class="refsect3">
 <a name="id-1.3.6.11.14.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the latency could be queried and reconfigured.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1011,6 +1016,37 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-bin-sync-children-states"></a><h3>gst_bin_sync_children_states ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_bin_sync_children_states (<em class="parameter"><code><a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> *bin</code></em>);</pre>
+<p>Synchronizes the state of every child of <em class="parameter"><code>bin</code></em>
+ with the state
+of <em class="parameter"><code>bin</code></em>
+. See also <a class="link" href="GstElement.html#gst-element-sync-state-with-parent" title="gst_element_sync_state_with_parent ()"><code class="function">gst_element_sync_state_with_parent()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.6.11.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.6.11.18.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if syncing the state was successful for all children,
+otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
+</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-BIN-IS-NO-RESYNC:CAPS"></a><h3>GST_BIN_IS_NO_RESYNC()</h3>
 <pre class="programlisting">#define GST_BIN_IS_NO_RESYNC(bin)        (GST_OBJECT_FLAG_IS_SET(bin,GST_BIN_FLAG_NO_RESYNC))
 </pre>
@@ -1018,7 +1054,7 @@
  will resync its state change when elements are added and
 removed.</p>
 <div class="refsect3">
-<a name="id-1.3.6.11.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.6.11.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1032,7 +1068,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.0.5</p>
+<p class="since">Since: <a class="link" href="ix08.html#api-index-1.0.5">1.0.5</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1041,7 +1077,7 @@
 </pre>
 <p>Gets the list with children in a bin.</p>
 <div class="refsect3">
-<a name="id-1.3.6.11.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.6.11.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1063,7 +1099,7 @@
 </pre>
 <p>Gets the children cookie that watches the children list.</p>
 <div class="refsect3">
-<a name="id-1.3.6.11.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.6.11.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1085,7 +1121,7 @@
 </pre>
 <p>Gets the number of children in a bin.</p>
 <div class="refsect3">
-<a name="id-1.3.6.11.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.6.11.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1345,7 +1381,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1382,7 +1418,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1419,12 +1455,11 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstBuffer.html b/docs/gst/html/GstBuffer.html
index 70be60a..f2d95eb 100644
--- a/docs/gst/html/GstBuffer.html
+++ b/docs/gst/html/GstBuffer.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstBuffer</title>
+<title>GstBuffer: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstBin.html" title="GstBin">
 <link rel="next" href="GstBufferList.html" title="GstBufferList">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -471,6 +471,14 @@
 </td>
 </tr>
 <tr>
+<td class="function_type">
+<a class="link" href="GstBuffer.html" title="GstBuffer"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstBuffer.html#gst-buffer-copy-deep" title="gst_buffer_copy_deep ()">gst_buffer_copy_deep</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
 <a class="link" href="GstBuffer.html#gst-buffer-is-writable" title="gst_buffer_is_writable()">gst_buffer_is_writable</a><span class="c_punctuation">()</span>
@@ -554,6 +562,20 @@
 <a class="link" href="GstBuffer.html#gst-buffer-foreach-meta" title="gst_buffer_foreach_meta ()">gst_buffer_foreach_meta</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="returnvalue">GstParentBufferMeta</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstBuffer.html#gst-buffer-add-parent-buffer-meta" title="gst_buffer_add_parent_buffer_meta ()">gst_buffer_add_parent_buffer_meta</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<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>
 </tbody>
 </table></div>
 </div>
@@ -577,6 +599,10 @@
 <td class="datatype_keyword">enum</td>
 <td class="function_name"><a class="link" href="GstBuffer.html#GstBufferCopyFlags" title="enum GstBufferCopyFlags">GstBufferCopyFlags</a></td>
 </tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta">GstParentBufferMeta</a></td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -675,6 +701,13 @@
 the refcount drops to 0, any memory and metadata pointed to by the buffer is
 unreffed as well. Buffers allocated from a <a class="link" href="GstBufferPool.html" title="GstBufferPool"><span class="type">GstBufferPool</span></a> will be returned to
 the pool when the refcount drops to 0.</p>
+<p>The <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> is a meta which can be attached to a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a>
+to hold a reference to another buffer that is only released when the child
+<a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> is released.</p>
+<p>Typically, <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> is used when the child buffer is directly
+using the <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> of the parent buffer, and wants to prevent the parent
+buffer from being returned to a buffer pool until the <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> is available
+for re-use. (Since 1.6)</p>
 </div>
 <div class="refsect1">
 <a name="GstBuffer.functions_details"></a><h2>Functions</h2>
@@ -1333,7 +1366,6 @@
 <a name="id-1.3.7.8.24.7"></a><h4>Returns</h4>
 <p> total size of the memory blocks in <em class="parameter"><code>buffer</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1362,7 +1394,6 @@
 <a name="id-1.3.7.8.25.6"></a><h4>Returns</h4>
 <p> total size of the memory blocks in <em class="parameter"><code>buffer</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1436,7 +1467,6 @@
 memory blocks starting at <em class="parameter"><code>idx</code></em>
 in <em class="parameter"><code>buffer</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1493,7 +1523,6 @@
 <div class="refsect3">
 <a name="id-1.3.7.8.27.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if resizing succeeded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1576,9 +1605,8 @@
 <div class="refsect3">
 <a name="id-1.3.7.8.30.6"></a><h4>Returns</h4>
 <p> the maximum amount of memory blocks that a buffer can hold.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1856,13 +1884,13 @@
 .</p>
 <p>When this function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, <em class="parameter"><code>idx</code></em>
  will contain the index of the first
-memory bock where the byte for <em class="parameter"><code>offset</code></em>
+memory block where the byte for <em class="parameter"><code>offset</code></em>
  can be found and <em class="parameter"><code>length</code></em>
  contains the
 number of memory blocks containing the <em class="parameter"><code>size</code></em>
  remaining bytes. <em class="parameter"><code>skip</code></em>
  contains
-the number of bytes to skip in the memory bock at <em class="parameter"><code>idx</code></em>
+the number of bytes to skip in the memory block at <em class="parameter"><code>idx</code></em>
  to get to the byte
 for <em class="parameter"><code>offset</code></em>
 .</p>
@@ -1921,7 +1949,6 @@
 , <em class="parameter"><code>length</code></em>
 and <em class="parameter"><code>skip</code></em>
 will be filled.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2220,9 +2247,8 @@
 <a name="id-1.3.7.8.46.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if all memory blocks in <em class="parameter"><code>buffer</code></em>
 are writable</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2271,9 +2297,8 @@
 <div class="refsect3">
 <a name="id-1.3.7.8.47.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the memory range is writable</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2330,7 +2355,6 @@
 <a name="id-1.3.7.8.48.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the map succeeded and <em class="parameter"><code>info</code></em>
 contains valid data.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2405,7 +2429,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the map succeeded and <em class="parameter"><code>info</code></em>
 contains valid
 data.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2487,7 +2510,6 @@
 <div class="refsect3">
 <a name="id-1.3.7.8.51.6"></a><h4>Returns</h4>
 <p> 0 if the memory is equal.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2540,7 +2562,6 @@
 <p> The amount of bytes extracted. This value can be lower than <em class="parameter"><code>size</code></em>
 when <em class="parameter"><code>buffer</code></em>
 did not contain enough data.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2554,8 +2575,8 @@
                         <em class="parameter"><code><span class="type">gsize</span> *dest_size</code></em>);</pre>
 <p>Extracts a copy of at most <em class="parameter"><code>size</code></em>
  bytes the data at <em class="parameter"><code>offset</code></em>
- into a <a href="https://developer.gnome.org/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a>.
-<em class="parameter"><code>dest</code></em>
+ into
+newly-allocated memory. <em class="parameter"><code>dest</code></em>
  must be freed using <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when done.</p>
 <div class="refsect3">
 <a name="id-1.3.7.8.53.5"></a><h4>Parameters</h4>
@@ -2596,7 +2617,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.0.10</p>
+<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0.10">1.0.10</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2648,7 +2669,6 @@
 <p> The amount of bytes copied. This value can be lower than <em class="parameter"><code>size</code></em>
 when <em class="parameter"><code>buffer</code></em>
 did not contain enough data.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2702,7 +2722,6 @@
 <p> The amount of bytes filled. This value can be lower than <em class="parameter"><code>size</code></em>
 when <em class="parameter"><code>buffer</code></em>
 did not contain enough data.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2725,8 +2744,11 @@
 <a name="gst-buffer-copy"></a><h3>gst_buffer_copy ()</h3>
 <pre class="programlisting"><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="returnvalue">GstBuffer</span></a> *
 gst_buffer_copy (<em class="parameter"><code>const <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buf</code></em>);</pre>
-<p>Create a copy of the given buffer. This will also make a newly allocated
-copy of the data the source buffer contains.</p>
+<p>Create a copy of the given buffer. This will only copy the buffer's
+data to a newly allocated memory if needed (if the type of memory
+requires it), otherwise the underlying data is just referenced.
+Check <a class="link" href="GstBuffer.html#gst-buffer-copy-deep" title="gst_buffer_copy_deep ()"><code class="function">gst_buffer_copy_deep()</code></a> if you want to force the data
+to be copied to newly allocated memory.</p>
 <div class="refsect3">
 <a name="id-1.3.7.8.58.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -2809,7 +2831,6 @@
 <div class="refsect3">
 <a name="id-1.3.7.8.59.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the copying succeeded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2826,7 +2847,7 @@
 .
 This sub-buffer uses the actual memory space of the parent buffer.
 This function will copy the offset and timestamp fields when the
-offset is 0. If not, they will be set to <a class="link" href="GstClock.html#GST-CLOCK-TIME-NONE:CAPS" title="GST_CLOCK_TIME_NONE"><span class="type">GST_CLOCK_TIME_NONE</span></a> and 
+offset is 0. If not, they will be set to <a class="link" href="GstClock.html#GST-CLOCK-TIME-NONE:CAPS" title="GST_CLOCK_TIME_NONE"><span class="type">GST_CLOCK_TIME_NONE</span></a> and
 <a class="link" href="GstBuffer.html#GST-BUFFER-OFFSET-NONE:CAPS" title="GST_BUFFER_OFFSET_NONE"><span class="type">GST_BUFFER_OFFSET_NONE</span></a>.
 If <em class="parameter"><code>offset</code></em>
  equals 0 and <em class="parameter"><code>size</code></em>
@@ -2862,7 +2883,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of the new <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> sub-buffer, in bytes.</p></td>
+<td class="parameter_description"><p>the size of the new <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> sub-buffer, in bytes. If -1, all
+data is copied.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -2877,6 +2899,36 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-buffer-copy-deep"></a><h3>gst_buffer_copy_deep ()</h3>
+<pre class="programlisting"><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="returnvalue">GstBuffer</span></a> *
+gst_buffer_copy_deep (<em class="parameter"><code>const <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buf</code></em>);</pre>
+<p>Create a copy of the given buffer. This will make a newly allocated
+copy of the data the source buffer contains.</p>
+<div class="refsect3">
+<a name="id-1.3.7.8.61.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buf</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="id-1.3.7.8.61.6"></a><h4>Returns</h4>
+<p> a new copy of <em class="parameter"><code>buf</code></em>
+. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-buffer-is-writable"></a><h3>gst_buffer_is_writable()</h3>
 <pre class="programlisting">#define         gst_buffer_is_writable(buf)     gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (buf))
 </pre>
@@ -2884,7 +2936,7 @@
 It is only safe to change buffer metadata when the current reference is
 writable, i.e. nobody can see the modifications you will make.</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.61.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.62.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2908,7 +2960,7 @@
 already writable, this will simply return the same buffer. A copy will
 otherwise be made using <a class="link" href="GstBuffer.html#gst-buffer-copy" title="gst_buffer_copy ()"><code class="function">gst_buffer_copy()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.62.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.63.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2923,7 +2975,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.62.6"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.63.6"></a><h4>Returns</h4>
 <p> a writable buffer which may or may not be the
 same as <em class="parameter"><code>buf</code></em>
 . </p>
@@ -2944,7 +2996,7 @@
  or the <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> pointed to by <em class="parameter"><code>obuf</code></em>
  may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.63.6"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.64.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2969,11 +3021,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.63.7"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.64.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>obuf</code></em>
 was different from <em class="parameter"><code>nbuf</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2989,7 +3040,7 @@
  and <em class="parameter"><code>buf2</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.64.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.65.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3011,7 +3062,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.64.6"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.65.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> that contains the memory
 of the two source buffers. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -3035,7 +3086,7 @@
 <em class="parameter"><code>buf2</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.65.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.66.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3069,7 +3120,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.65.6"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.66.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> that contains the memory
 of the two source buffers. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -3082,10 +3133,14 @@
 gst_buffer_get_meta (<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 href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> api</code></em>);</pre>
 <p>Get the metadata for <em class="parameter"><code>api</code></em>
- on buffer. When there is no such
-metadata, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is returned.</p>
+ on buffer. When there is no such metadata, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is
+returned. If multiple metadata with the given <em class="parameter"><code>api</code></em>
+ are attached to this
+buffer only the first one is returned.  To handle multiple metadata with a
+given API use <a class="link" href="GstBuffer.html#gst-buffer-iterate-meta" title="gst_buffer_iterate_meta ()"><code class="function">gst_buffer_iterate_meta()</code></a> or <a class="link" href="GstBuffer.html#gst-buffer-foreach-meta" title="gst_buffer_foreach_meta ()"><code class="function">gst_buffer_foreach_meta()</code></a> instead
+and check the meta-&gt;info.api member for the API type.</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.66.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.67.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3107,7 +3162,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.66.6"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.67.6"></a><h4>Returns</h4>
 <p> the metadata for <em class="parameter"><code>api</code></em>
 on
 <em class="parameter"><code>buffer</code></em>
@@ -3127,7 +3182,7 @@
  using the parameters in <em class="parameter"><code>params</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.67.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.68.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3155,7 +3210,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.67.6"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.68.6"></a><h4>Returns</h4>
 <p> the metadata for the api in <em class="parameter"><code>info</code></em>
 on <em class="parameter"><code>buffer</code></em>
 . </p>
@@ -3172,7 +3227,7 @@
  on <em class="parameter"><code>buffer</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.68.5"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.69.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3194,11 +3249,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.68.6"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.69.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the metadata existed and was removed, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if no such
 metadata was on <em class="parameter"><code>buffer</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3214,7 +3268,7 @@
 <p><em class="parameter"><code>state</code></em>
  will be updated with an opaque state pointer</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.69.6"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.70.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3236,7 +3290,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.69.7"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.70.7"></a><h4>Returns</h4>
 <p> The next <a class="link" href="gstreamer-GstMeta.html#GstMeta" title="struct GstMeta"><span class="type">GstMeta</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
 when there are no more items. </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>
@@ -3259,7 +3313,7 @@
 <p>When <em class="parameter"><code>meta</code></em>
  is set to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, the item will be removed from the buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.70.8"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.71.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3286,9 +3340,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.70.9"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.71.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when <a class="link" href="GstBuffer.html#gst-buffer-foreach-meta" title="gst_buffer_foreach_meta ()"><code class="function">gst_buffer_foreach_meta()</code></a> should stop</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3308,7 +3361,7 @@
  define if this function returns or if the remaining metadata items
 in the buffer should be skipped.</p>
 <div class="refsect3">
-<a name="id-1.3.7.8.71.6"></a><h4>Parameters</h4>
+<a name="id-1.3.7.8.72.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3336,10 +3389,70 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.7.8.71.7"></a><h4>Returns</h4>
+<a name="id-1.3.7.8.72.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when <em class="parameter"><code>func</code></em>
 returned <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> for one of the metadata.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-add-parent-buffer-meta"></a><h3>gst_buffer_add_parent_buffer_meta ()</h3>
+<pre class="programlisting"><a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="returnvalue">GstParentBufferMeta</span></a> *
+gst_buffer_add_parent_buffer_meta (<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" title="GstBuffer"><span class="type">GstBuffer</span></a> *ref</code></em>);</pre>
+<p>Add a <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> to <em class="parameter"><code>buffer</code></em>
+ that holds a reference on
+<em class="parameter"><code>ref</code></em>
+ until the buffer is freed.</p>
+<div class="refsect3">
+<a name="id-1.3.7.8.73.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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"><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>ref</p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> to ref. </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="id-1.3.7.8.73.6"></a><h4>Returns</h4>
+<p> The <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> that was added to the buffer. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-get-parent-buffer-meta"></a><h3>gst_buffer_get_parent_buffer_meta()</h3>
+<pre class="programlisting">#define             gst_buffer_get_parent_buffer_meta(b)</pre>
+<p>Find and return a <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> if one exists on the
+buffer</p>
+<div class="refsect3">
+<a name="id-1.3.7.8.74.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>b</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>
 </div>
@@ -3529,6 +3642,15 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-BUFFER-FLAG-SYNC-AFTER:CAPS"></a>GST_BUFFER_FLAG_SYNC_AFTER</p></td>
+<td class="enum_member_description">
+<p>Elements which write to disk or permanent
+				 storage should ensure the data is synced after
+				 writing the contents of this buffer. (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-BUFFER-FLAG-LAST:CAPS"></a>GST_BUFFER_FLAG_LAST</p></td>
 <td class="enum_member_description">
 <p>additional media specific flags can be added starting from
@@ -3615,6 +3737,46 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstParentBufferMeta"></a><h3>struct GstParentBufferMeta</h3>
+<pre class="programlisting">struct GstParentBufferMeta {
+  GstMeta parent;
+
+  GstBuffer *buffer;
+};
+</pre>
+<p>The <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> is a <a class="link" href="gstreamer-GstMeta.html#GstMeta" title="struct GstMeta"><span class="type">GstMeta</span></a> which can be attached to a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a>
+to hold a reference to another buffer that is only released when the child
+<a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> is released.</p>
+<p>Typically, <a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta"><span class="type">GstParentBufferMeta</span></a> is used when the child buffer is directly
+using the <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> of the parent buffer, and wants to prevent the parent
+buffer from being returned to a buffer pool until the <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> is available
+for re-use.</p>
+<div class="refsect3">
+<a name="id-1.3.7.9.5.6"></a><h4>Members</h4>
+<div class="informaltable"><table 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="gstreamer-GstMeta.html#GstMeta" title="struct GstMeta"><span class="type">GstMeta</span></a> <em class="structfield"><code><a name="GstParentBufferMeta.parent"></a>parent</code></em>;</p></td>
+<td class="struct_member_description"><p>the parent <a class="link" href="gstreamer-GstMeta.html#GstMeta" title="struct GstMeta"><span class="type">GstMeta</span></a> structure</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *<em class="structfield"><code><a name="GstParentBufferMeta.buffer"></a>buffer</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> on which a reference is being held.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstBuffer.see-also"></a><h2>See Also</h2>
@@ -3622,7 +3784,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstBufferList.html b/docs/gst/html/GstBufferList.html
index f72ed7f..668b5bd 100644
--- a/docs/gst/html/GstBufferList.html
+++ b/docs/gst/html/GstBufferList.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstBufferList</title>
+<title>GstBufferList: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstBuffer.html" title="GstBuffer">
 <link rel="next" href="GstBufferPool.html" title="GstBufferPool">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -111,6 +111,14 @@
 </td>
 </tr>
 <tr>
+<td class="function_type">
+<a class="link" href="GstBufferList.html" title="GstBufferList"><span class="returnvalue">GstBufferList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstBufferList.html#gst-buffer-list-copy-deep" title="gst_buffer_list_copy_deep ()">gst_buffer_list_copy_deep</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
 <a class="link" href="GstBufferList.html#gst-buffer-list-is-writable" title="gst_buffer_list_is_writable()">gst_buffer_list_is_writable</a><span class="c_punctuation">()</span>
@@ -255,7 +263,6 @@
 <div class="refsect3">
 <a name="id-1.3.8.8.4.6"></a><h4>Returns</h4>
 <p> the number of buffers in the buffer list</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -459,12 +466,42 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-buffer-list-copy-deep"></a><h3>gst_buffer_list_copy_deep ()</h3>
+<pre class="programlisting"><a class="link" href="GstBufferList.html" title="GstBufferList"><span class="returnvalue">GstBufferList</span></a> *
+gst_buffer_list_copy_deep (<em class="parameter"><code>const <a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a> *list</code></em>);</pre>
+<p>Create a copy of the given buffer list. This will make a newly allocated
+copy of the buffer that the source buffer list contains.</p>
+<div class="refsect3">
+<a name="id-1.3.8.8.11.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.8.8.11.6"></a><h4>Returns</h4>
+<p> a new copy of <em class="parameter"><code>list</code></em>
+. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-buffer-list-is-writable"></a><h3>gst_buffer_list_is_writable()</h3>
 <pre class="programlisting">#define gst_buffer_list_is_writable(list) gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (list))
 </pre>
 <p>Tests if you can safely add buffers and groups into a buffer list.</p>
 <div class="refsect3">
-<a name="id-1.3.8.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.8.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -488,7 +525,7 @@
 list is already writable, this will simply return the same buffer list. A
 copy will otherwise be made using <a class="link" href="GstBufferList.html#gst-buffer-list-copy" title="gst_buffer_list_copy ()"><code class="function">gst_buffer_list_copy()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.8.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.8.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -503,7 +540,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.8.8.12.6"></a><h4>Returns</h4>
+<a name="id-1.3.8.8.13.6"></a><h4>Returns</h4>
 <p> a writable list, which may or may not be the
 same as <em class="parameter"><code>list</code></em>
 . </p>
@@ -531,7 +568,7 @@
 . This function is responsible for unreffing the old buffer when
 removing or modifying.</p>
 <div class="refsect3">
-<a name="id-1.3.8.8.13.7"></a><h4>Parameters</h4>
+<a name="id-1.3.8.8.14.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -559,9 +596,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.8.8.13.8"></a><h4>Returns</h4>
+<a name="id-1.3.8.8.14.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when <a class="link" href="GstBufferList.html#gst-buffer-list-foreach" title="gst_buffer_list_foreach ()"><code class="function">gst_buffer_list_foreach()</code></a> should stop</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -581,7 +617,7 @@
  define if this function returns or if the remaining buffers in
 the list should be skipped.</p>
 <div class="refsect3">
-<a name="id-1.3.8.8.14.6"></a><h4>Parameters</h4>
+<a name="id-1.3.8.8.15.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -609,13 +645,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.8.8.14.7"></a><h4>Returns</h4>
+<a name="id-1.3.8.8.15.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>func</code></em>
 returned <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for each buffer in <em class="parameter"><code>list</code></em>
 or when
 <em class="parameter"><code>list</code></em>
 is empty.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -627,7 +662,7 @@
 <p>Get the buffer at <em class="parameter"><code>idx</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.8.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.8.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -649,12 +684,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.8.8.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.8.8.16.6"></a><h4>Returns</h4>
 <p> the buffer at <em class="parameter"><code>idx</code></em>
 in <em class="parameter"><code>group</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when there is no buffer. The buffer remains valid as
 long as <em class="parameter"><code>list</code></em>
-is valid. </p>
+is valid and buffer is not removed from the list. </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>
 </div>
@@ -673,7 +708,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstBufferPool.html b/docs/gst/html/GstBufferPool.html
index 21ba7ec..5d630c1 100644
--- a/docs/gst/html/GstBufferPool.html
+++ b/docs/gst/html/GstBufferPool.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstBufferPool</title>
+<title>GstBufferPool: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstBufferList.html" title="GstBufferList">
 <link rel="next" href="GstBus.html" title="GstBus">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -357,7 +357,6 @@
 <div class="refsect3">
 <a name="id-1.3.9.8.4.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if all parameters could be fetched.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -424,11 +423,12 @@
 expected parameters. This function is a helper that can be used to validate
 changes made by a pool to a config when <a class="link" href="GstBufferPool.html#gst-buffer-pool-set-config" title="gst_buffer_pool_set_config ()"><code class="function">gst_buffer_pool_set_config()</code></a>
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>. This expects that <em class="parameter"><code>caps</code></em>
- and <em class="parameter"><code>size</code></em>
- haven't changed, and that
+ haven't changed and that
 <em class="parameter"><code>min_buffers</code></em>
- aren't lower then what we initially expected. This does not check
-if options or allocator parameters.</p>
+ aren't lower then what we initially expected.
+This does not check if options or allocator parameters are still valid,
+won't check if size have changed, since changing the size is valid to adapt
+padding.</p>
 <div class="refsect3">
 <a name="id-1.3.9.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -469,9 +469,8 @@
 <div class="refsect3">
 <a name="id-1.3.9.8.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the parameters are valid in this context.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -500,13 +499,13 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>allocator</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</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>
+<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-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>params</p></td>
-<td class="parameter_description"><p><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-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>
@@ -514,7 +513,6 @@
 <div class="refsect3">
 <a name="id-1.3.9.8.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the values are set. </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -598,7 +596,6 @@
 <div class="refsect3">
 <a name="id-1.3.9.8.9.6"></a><h4>Returns</h4>
 <p> the options array size as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -672,7 +669,6 @@
 <a name="id-1.3.9.8.11.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> of the option at <em class="parameter"><code>index</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -710,7 +706,6 @@
 <a name="id-1.3.9.8.12.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the options array contains <em class="parameter"><code>option</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -778,7 +773,6 @@
 <a name="id-1.3.9.8.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the buffer pool contains <em class="parameter"><code>option</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -820,9 +814,9 @@
                             <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *config</code></em>);</pre>
 <p>Set the configuration of the pool. If the pool is already configured, and
 the configuration haven't change, this function will return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. If the
-pool is active, this function will try deactivating it. Buffers allocated
-form this pool must be returned or else this function will do nothing and
-return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
+pool is active, this method will return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> and active configuration
+will remain. Buffers allocated form this pool must be returned or else this
+function will do nothing and return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p><em class="parameter"><code>config</code></em>
  is a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> that contains the configuration parameters for
 the pool. A default and mandatory set of parameters can be configured with
@@ -859,7 +853,6 @@
 <div class="refsect3">
 <a name="id-1.3.9.8.16.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the configuration could be set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -902,7 +895,6 @@
 <a name="id-1.3.9.8.17.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the pool was not configured or when preallocation of the
 buffers failed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -931,7 +923,6 @@
 <div class="refsect3">
 <a name="id-1.3.9.8.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the pool is active.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -965,7 +956,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1012,7 +1003,6 @@
 <a name="id-1.3.9.8.20.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> such as <a class="link" href="GstPad.html#GST-FLOW-FLUSHING:CAPS"><code class="literal">GST_FLOW_FLUSHING</code></a> when the pool is
 inactive.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1169,12 +1159,12 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBufferPoolClass.flush-start"></a>flush_start</code></em> ()</p></td>
-<td class="struct_member_description"><p>enter the flushing state. Since: 1.4</p></td>
+<td class="struct_member_description"><p>enter the flushing state. (Since 1.4)</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBufferPoolClass.flush-stop"></a>flush_stop</code></em> ()</p></td>
-<td class="struct_member_description"><p>leave the flushign state. Since: 1.4</p></td>
+<td class="struct_member_description"><p>leave the flushign state. (Since 1.4)</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 </tbody>
@@ -1295,7 +1285,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstBus.html b/docs/gst/html/GstBus.html
index 3a52368..9d2fda0 100644
--- a/docs/gst/html/GstBus.html
+++ b/docs/gst/html/GstBus.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstBus</title>
+<title>GstBus: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstBufferPool.html" title="GstBufferPool">
 <link rel="next" href="GstCaps.html" title="GstCaps">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -172,6 +172,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBus.html#gst-bus-remove-watch" title="gst_bus_remove_watch ()">gst_bus_remove_watch</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -256,12 +264,12 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstBus.html#GstBus-message" title="The “message” signal">message</a></td>
-<td class="signal_flags">Has Details</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-DETAILED:CAPS">Has Details</a></td>
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstBus.html#GstBus-sync-message" title="The “sync-message” signal">sync-message</a></td>
-<td class="signal_flags">Has Details</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-DETAILED:CAPS">Has Details</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -381,7 +389,6 @@
 <div class="refsect3">
 <a name="id-1.3.10.10.2.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the event source should be removed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -426,7 +433,6 @@
 <div class="refsect3">
 <a name="id-1.3.10.10.3.7"></a><h4>Returns</h4>
 <p> <a class="link" href="GstBus.html#GstBusSyncReply" title="enum GstBusSyncReply"><span class="type">GstBusSyncReply</span></a> stating what to do with the message</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -475,7 +481,6 @@
 <a name="id-1.3.10.10.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the message could be posted, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the bus is flushing.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -505,7 +510,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if there are messages on the bus to be handled, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 otherwise.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -843,7 +847,6 @@
 <div class="refsect3">
 <a name="id-1.3.10.10.14.6"></a><h4>Returns</h4>
 <p> GST_BUS_PASS</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -893,16 +896,19 @@
 <p>This function is used to receive asynchronous messages in the main loop.
 There can only be a single bus watch per bus, you must remove it before you
 can set a new one.</p>
+<p>The bus watch will only work if a GLib main loop is being run.</p>
 <p>When <em class="parameter"><code>func</code></em>
  is called, the message belongs to the caller; if you want to
 keep a copy of it, call <a class="link" href="GstMessage.html#gst-message-ref" title="gst_message_ref ()"><code class="function">gst_message_ref()</code></a> before leaving <em class="parameter"><code>func</code></em>
 .</p>
-<p>The watch can be removed using <a href="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html#g-source-remove"><code class="function">g_source_remove()</code></a> or by returning <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
+<p>The watch can be removed using <a class="link" href="GstBus.html#gst-bus-remove-watch" title="gst_bus_remove_watch ()"><code class="function">gst_bus_remove_watch()</code></a> or by returning <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 from <em class="parameter"><code>func</code></em>
-.</p>
+. If the watch was added to the default main context it is also
+possible to remove the watch using <a href="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html#g-source-remove"><code class="function">g_source_remove()</code></a>.</p>
 <p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Rename the original symbol's name to SYMBOL."><span class="acronym">rename-to</span></acronym> gst_bus_add_watch]</span></p>
 <div class="refsect3">
-<a name="id-1.3.10.10.16.9"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.16.11"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -940,10 +946,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.10.10.16.10"></a><h4>Returns</h4>
-<p> The event source id.
-Rename to: gst_bus_add_watch</p>
-<p></p>
+<a name="id-1.3.10.10.16.12"></a><h4>Returns</h4>
+<p> The event source id or 0 if <em class="parameter"><code>bus</code></em>
+already got an event source.</p>
 </div>
 </div>
 <hr>
@@ -961,11 +966,14 @@
 <p>This function is used to receive asynchronous messages in the main loop.
 There can only be a single bus watch per bus, you must remove it before you
 can set a new one.</p>
-<p>The watch can be removed using <a href="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html#g-source-remove"><code class="function">g_source_remove()</code></a> or by returning <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
+<p>The bus watch will only work if a GLib main loop is being run.</p>
+<p>The watch can be removed using <a class="link" href="GstBus.html#gst-bus-remove-watch" title="gst_bus_remove_watch ()"><code class="function">gst_bus_remove_watch()</code></a> or by returning <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 from <em class="parameter"><code>func</code></em>
-.</p>
+. If the watch was added to the default main context it is also
+possible to remove the watch using <a href="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html#g-source-remove"><code class="function">g_source_remove()</code></a>.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.10.10.17.7"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.17.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -993,14 +1001,43 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.10.10.17.8"></a><h4>Returns</h4>
-<p> The event source id.</p>
+<a name="id-1.3.10.10.17.10"></a><h4>Returns</h4>
+<p> The event source id or 0 if <em class="parameter"><code>bus</code></em>
+already got an event source.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-bus-remove-watch"></a><h3>gst_bus_remove_watch ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_bus_remove_watch (<em class="parameter"><code><a class="link" href="GstBus.html" title="GstBus"><span class="type">GstBus</span></a> *bus</code></em>);</pre>
+<p>Removes an installed bus watch from <em class="parameter"><code>bus</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.3.10.10.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>bus</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBus.html" title="GstBus"><span class="type">GstBus</span></a> to remove the watch from.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.10.10.18.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>bus</code></em>
+has no event source.</p>
+</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-bus-disable-sync-message-emission"></a><h3>gst_bus_disable_sync_message_emission ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_bus_disable_sync_message_emission (<em class="parameter"><code><a class="link" href="GstBus.html" title="GstBus"><span class="type">GstBus</span></a> *bus</code></em>);</pre>
@@ -1014,7 +1051,7 @@
 disable.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.18.7"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.19.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1050,7 +1087,7 @@
 signal is marshalled to the main thread via the main loop.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.19.8"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.20.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1075,7 +1112,7 @@
 <p>A helper <a class="link" href="GstBus.html#GstBusFunc" title="GstBusFunc ()"><span class="type">GstBusFunc</span></a> that can be used to convert all asynchronous messages
 into signals.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1102,9 +1139,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.10.10.20.6"></a><h4>Returns</h4>
+<a name="id-1.3.10.10.21.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1124,7 +1160,7 @@
 function is called.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.21.8"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.22.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1160,7 +1196,7 @@
 watch before you can set another type of watch.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.22.9"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.23.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1190,7 +1226,7 @@
 <p>Removes a signal watch previously added with <a class="link" href="GstBus.html#gst-bus-add-signal-watch" title="gst_bus_add_signal_watch ()"><code class="function">gst_bus_add_signal_watch()</code></a>.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.23.6"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.24.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1245,7 +1281,7 @@
 better handled by setting up an asynchronous bus watch and doing things
 from there.</p>
 <div class="refsect3">
-<a name="id-1.3.10.10.24.10"></a><h4>Parameters</h4>
+<a name="id-1.3.10.10.25.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1274,7 +1310,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.10.10.24.11"></a><h4>Returns</h4>
+<a name="id-1.3.10.10.25.11"></a><h4>Returns</h4>
 <p> the message that was received,
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the poll timed out. The message is taken from the
 bus and needs to be unreffed with <a class="link" href="GstMessage.html#gst-message-unref" title="gst_message_unref ()"><code class="function">gst_message_unref()</code></a> after
@@ -1408,7 +1444,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Has Details</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-DETAILED:CAPS">Has Details</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1448,7 +1484,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Has Details</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-DETAILED:CAPS">Has Details</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -1457,7 +1493,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstCaps.html b/docs/gst/html/GstCaps.html
index e4858c7..7ae3d89 100644
--- a/docs/gst/html/GstCaps.html
+++ b/docs/gst/html/GstCaps.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstCaps</title>
+<title>GstCaps: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstBus.html" title="GstBus">
 <link rel="next" href="GstCapsFeatures.html" title="GstCapsFeatures">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -90,6 +90,30 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="GstCaps.html#GstCapsForeachFunc" title="GstCapsForeachFunc ()">*GstCapsForeachFunc</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="GstCaps.html#GstCapsMapFunc" title="GstCapsMapFunc ()">*GstCapsMapFunc</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="GstCaps.html#GstCapsFilterMapFunc" title="GstCapsFilterMapFunc ()">*GstCapsFilterMapFunc</a><span class="c_punctuation">)</span> <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">
@@ -299,6 +323,30 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
+<a class="link" href="GstCaps.html#gst-caps-foreach" title="gst_caps_foreach ()">gst_caps_foreach</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstCaps.html#gst-caps-map-in-place" title="gst_caps_map_in_place ()">gst_caps_map_in_place</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="GstCaps.html#gst-caps-filter-and-map-in-place" title="gst_caps_filter_and_map_in_place ()">gst_caps_filter_and_map_in_place</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
 <a class="link" href="GstCaps.html#gst-caps-is-any" title="gst_caps_is_any ()">gst_caps_is_any</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -796,6 +844,140 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstCapsForeachFunc"></a><h3>GstCapsForeachFunc ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<span class="c_punctuation">(</span>*GstCapsForeachFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a> *features</code></em>,
+                       <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>A function that will be called in <a class="link" href="GstCaps.html#gst-caps-foreach" title="gst_caps_foreach ()"><code class="function">gst_caps_foreach()</code></a>. The function may
+not modify <em class="parameter"><code>features</code></em>
+ or <em class="parameter"><code>structure</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.3.11.8.10.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>features</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.11.8.10.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the foreach operation should continue, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
+the foreach operation should stop with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
+</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="GstCapsMapFunc"></a><h3>GstCapsMapFunc ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<span class="c_punctuation">(</span>*GstCapsMapFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a> *features</code></em>,
+                   <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                   <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>A function that will be called in <a class="link" href="GstCaps.html#gst-caps-map-in-place" title="gst_caps_map_in_place ()"><code class="function">gst_caps_map_in_place()</code></a>. The function
+may modify <em class="parameter"><code>features</code></em>
+ and <em class="parameter"><code>structure</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.3.11.8.11.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>features</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.11.8.11.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the map operation should continue, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
+the map operation should stop with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstCapsFilterMapFunc"></a><h3>GstCapsFilterMapFunc ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<span class="c_punctuation">(</span>*GstCapsFilterMapFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a> *features</code></em>,
+                         <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                         <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>A function that will be called in <a class="link" href="GstCaps.html#gst-caps-filter-and-map-in-place" title="gst_caps_filter_and_map_in_place ()"><code class="function">gst_caps_filter_and_map_in_place()</code></a>.
+The function may modify <em class="parameter"><code>features</code></em>
+ and <em class="parameter"><code>structure</code></em>
+, and both will be
+removed from the caps if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned.</p>
+<div class="refsect3">
+<a name="id-1.3.11.8.12.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>features</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.11.8.12.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the features and structure should be preserved,
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it should be removed.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-caps-new-empty"></a><h3>gst_caps_new_empty ()</h3>
 <pre class="programlisting"><a class="link" href="GstCaps.html" title="GstCaps"><span class="returnvalue">GstCaps</span></a> *
 gst_caps_new_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
@@ -804,7 +986,7 @@
 The <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> is guaranteed to be writable.
 Caller is responsible for unreffing the returned caps.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.10.5"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.13.5"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -819,7 +1001,7 @@
 .
 Caller is responsible for unreffing the returned caps.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -834,7 +1016,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.14.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -847,7 +1029,7 @@
 <p>Creates a new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> that indicates that it is compatible with
 any media format.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.12.5"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.15.5"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -864,7 +1046,7 @@
 as <a class="link" href="GstStructure.html#gst-structure-new" title="gst_structure_new ()"><code class="function">gst_structure_new()</code></a>.
 Caller is responsible for unreffing the returned caps.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -891,7 +1073,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.16.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -906,7 +1088,7 @@
 arguments.  The list must be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated.  The structures
 are not copied; the returned <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> owns the structures.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -928,7 +1110,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.17.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -943,7 +1125,7 @@
 arguments.  The list must be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated.  The structures
 are not copied; the returned <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> owns the structures.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -965,7 +1147,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.18.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -979,7 +1161,7 @@
 . It is only safe to modify caps when
 there is only one owner of the caps - ie, the object is writable.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1007,7 +1189,7 @@
 reference to the data, you should use <a class="link" href="GstCaps.html#gst-caps-ref" title="gst_caps_ref ()"><code class="function">gst_caps_ref()</code></a>.</p>
 <p>When you are finished with the caps, call <a class="link" href="GstCaps.html#gst-caps-unref" title="gst_caps_unref ()"><code class="function">gst_caps_unref()</code></a> on it.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.17.7"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.20.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1022,9 +1204,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.17.8"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.20.8"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1037,7 +1218,7 @@
 contained in <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1059,7 +1240,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.18.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.21.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -1071,7 +1252,7 @@
 gst_static_caps_get (<em class="parameter"><code><a class="link" href="GstCaps.html#GstStaticCaps" title="struct GstStaticCaps"><span class="type">GstStaticCaps</span></a> *static_caps</code></em>);</pre>
 <p>Converts a <a class="link" href="GstCaps.html#GstStaticCaps" title="struct GstStaticCaps"><span class="type">GstStaticCaps</span></a> to a <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1086,7 +1267,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.22.6"></a><h4>Returns</h4>
 <p> a pointer to the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>. Unref after usage.
 Since the core holds an additional ref to the returned caps,
 use <a class="link" href="GstCaps.html#gst-caps-make-writable" title="gst_caps_make_writable()"><code class="function">gst_caps_make_writable()</code></a> on the returned caps to modify it. </p>
@@ -1101,7 +1282,7 @@
 <p>Clean up the cached caps contained in <em class="parameter"><code>static_caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1131,7 +1312,7 @@
  is
 freed. If either caps is ANY, the resulting caps will be ANY.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1170,7 +1351,7 @@
  is freed.
 If either caps is ANY, the resulting caps will be ANY.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1192,7 +1373,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.22.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.25.6"></a><h4>Returns</h4>
 <p> the merged caps. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1210,7 +1391,7 @@
 becomes the owner of <em class="parameter"><code>structure</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1247,7 +1428,7 @@
 becomes the owner of <em class="parameter"><code>structure</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.24.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1273,7 +1454,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1285,7 +1466,7 @@
 contained in <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.25.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1317,7 +1498,7 @@
 contained in <em class="parameter"><code>caps</code></em>
 . The caller becomes the owner of the returned structure.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.26.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1339,7 +1520,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.26.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.29.6"></a><h4>Returns</h4>
 <p> a pointer to the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> corresponding
 to <em class="parameter"><code>index</code></em>
 . </p>
@@ -1357,7 +1538,7 @@
  if its not already expressed by <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1379,7 +1560,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.27.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.30.6"></a><h4>Returns</h4>
 <p> the merged caps. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1397,7 +1578,7 @@
  if its not already expressed by <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1424,11 +1605,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.28.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.31.6"></a><h4>Returns</h4>
 <p> the merged caps. </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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1438,7 +1619,7 @@
 <p>Gets the number of structures contained in <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1453,10 +1634,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.29.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.32.6"></a><h4>Returns</h4>
 <p> the number of structures that <em class="parameter"><code>caps</code></em>
 contains</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1480,7 +1660,7 @@
 <p>You do not need to free or unref the structure returned, it
 belongs to the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.30.7"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.33.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1502,7 +1682,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.30.8"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.33.8"></a><h4>Returns</h4>
 <p> a pointer to the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> corresponding
 to <em class="parameter"><code>index</code></em>
 . </p>
@@ -1530,7 +1710,7 @@
 <p>You do not need to free or unref the structure returned, it
 belongs to the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.31.7"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.34.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1552,13 +1732,13 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.31.8"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.34.8"></a><h4>Returns</h4>
 <p> a pointer to the <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a> corresponding
 to <em class="parameter"><code>index</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>]</span></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1571,7 +1751,7 @@
  for the structure at <em class="parameter"><code>index</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1597,7 +1777,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1614,7 +1794,7 @@
 all structures of <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1651,7 +1831,7 @@
 <p>Sets fields in a <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>.  The arguments must be passed in the same
 manner as <a class="link" href="GstStructure.html#gst-structure-set" title="gst_structure_set ()"><code class="function">gst_structure_set()</code></a>, and be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1688,7 +1868,7 @@
 <p>Sets fields in a <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>.  The arguments must be passed in the same
 manner as <a class="link" href="GstStructure.html#gst-structure-set" title="gst_structure_set ()"><code class="function">gst_structure_set()</code></a>, and be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.35.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1717,13 +1897,143 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-caps-foreach"></a><h3>gst_caps_foreach ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_caps_foreach (<em class="parameter"><code>const <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="GstCaps.html#GstCapsForeachFunc" title="GstCapsForeachFunc ()"><span class="type">GstCapsForeachFunc</span></a> func</code></em>,
+                  <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>Calls the provided function once for each structure and caps feature in the
+<a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>. The function must not modify the fields.
+Also see <a class="link" href="GstCaps.html#gst-caps-map-in-place" title="gst_caps_map_in_place ()"><code class="function">gst_caps_map_in_place()</code></a> and <a class="link" href="GstCaps.html#gst-caps-filter-and-map-in-place" title="gst_caps_filter_and_map_in_place ()"><code class="function">gst_caps_filter_and_map_in_place()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.11.8.39.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p> a function to call for each field. </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>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p> private data. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.11.8.39.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the supplied function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for each call,
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-caps-map-in-place"></a><h3>gst_caps_map_in_place ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_caps_map_in_place (<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="GstCaps.html#GstCapsMapFunc" title="GstCapsMapFunc ()"><span class="type">GstCapsMapFunc</span></a> func</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>Calls the provided function once for each structure and caps feature in the
+<a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>. In contrast to <a class="link" href="GstCaps.html#gst-caps-foreach" title="gst_caps_foreach ()"><code class="function">gst_caps_foreach()</code></a>, the function may modify but not
+delete the structures and features. The caps must be mutable.</p>
+<div class="refsect3">
+<a name="id-1.3.11.8.40.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p> a function to call for each field. </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>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p> private data. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.11.8.40.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the supplied function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for each call,
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-caps-filter-and-map-in-place"></a><h3>gst_caps_filter_and_map_in_place ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_caps_filter_and_map_in_place (<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="GstCaps.html#GstCapsFilterMapFunc" title="GstCapsFilterMapFunc ()"><span class="type">GstCapsFilterMapFunc</span></a> func</code></em>,
+                                  <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>Calls the provided function once for each structure and caps feature in the
+<a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>. In contrast to <a class="link" href="GstCaps.html#gst-caps-foreach" title="gst_caps_foreach ()"><code class="function">gst_caps_foreach()</code></a>, the function may modify the
+structure and features. In contrast to <a class="link" href="GstCaps.html#gst-caps-filter-and-map-in-place" title="gst_caps_filter_and_map_in_place ()"><code class="function">gst_caps_filter_and_map_in_place()</code></a>,
+the structure and features are removed from the caps if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned
+from the function.
+The caps must be mutable.</p>
+<div class="refsect3">
+<a name="id-1.3.11.8.41.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p> a function to call for each field. </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>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p> private data. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</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-caps-is-any"></a><h3>gst_caps_is_any ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_caps_is_any (<em class="parameter"><code>const <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
 <p>Determines if <em class="parameter"><code>caps</code></em>
  represents any media format.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.42.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1738,10 +2048,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.36.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.42.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>caps</code></em>
 represents any format.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1752,7 +2061,7 @@
 <p>Determines if <em class="parameter"><code>caps</code></em>
  represents no media formats.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1767,10 +2076,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.37.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.43.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>caps</code></em>
 represents no formats.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1782,7 +2090,7 @@
 one structure, and each field in the structure describes a fixed type.
 Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.38.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1797,10 +2105,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.38.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.44.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>caps</code></em>
 is fixed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1811,7 +2118,7 @@
                    <em class="parameter"><code>const <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps2</code></em>);</pre>
 <p>Checks if the given caps represent the same set of caps.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.39.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.45.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1833,9 +2140,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.39.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.45.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if both caps are equal.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1847,7 +2153,7 @@
 <p>Tests if two <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> are equal.  This function only works on fixed
 <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.40.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1869,9 +2175,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.40.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.46.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the arguments represent the same format</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1882,7 +2187,7 @@
                             <em class="parameter"><code>const <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps2</code></em>);</pre>
 <p>Checks if the given caps are exactly the same set of caps.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1904,9 +2209,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.41.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if both caps are strictly equal.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1921,7 +2225,7 @@
  is a subset of <em class="parameter"><code>caps2</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.42.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1943,11 +2247,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.42.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.48.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>caps1</code></em>
 is a subset of <em class="parameter"><code>caps2</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1960,7 +2263,7 @@
  are also represented by <em class="parameter"><code>superset</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.43.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.49.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1982,11 +2285,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.43.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.49.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>subset</code></em>
 is a subset of <em class="parameter"><code>superset</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2000,7 +2302,7 @@
 . See <a class="link" href="GstCaps.html#gst-caps-is-subset" title="gst_caps_is_subset ()"><code class="function">gst_caps_is_subset()</code></a>
 for more information.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.44.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2023,11 +2325,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.44.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.50.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>structure</code></em>
 is a subset of <em class="parameter"><code>caps</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2042,7 +2343,7 @@
 . See <a class="link" href="GstCaps.html#gst-caps-is-subset" title="gst_caps_is_subset ()"><code class="function">gst_caps_is_subset()</code></a>
 for more information.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.45.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.51.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2071,13 +2372,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.45.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.51.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>structure</code></em>
 is a subset of <em class="parameter"><code>caps</code></em>
 </p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2090,7 +2390,7 @@
  and reports whether the result would not
 be empty</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2112,9 +2412,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.46.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.52.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if intersection would be not empty</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2128,7 +2427,7 @@
  and <em class="parameter"><code>caps2</code></em>
 . Defaults to <a class="link" href="GstCaps.html#GST-CAPS-INTERSECT-ZIG-ZAG:CAPS"><code class="literal">GST_CAPS_INTERSECT_ZIG_ZAG</code></a> mode.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.47.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2150,9 +2449,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.47.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.53.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2168,7 +2466,7 @@
 , the order is defined by the <a class="link" href="GstCaps.html#GstCapsIntersectMode" title="enum GstCapsIntersectMode"><span class="type">GstCapsIntersectMode</span></a>
 used.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.48.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.54.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2195,9 +2493,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.48.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.54.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2213,7 +2510,7 @@
 <p>This function takes ownership of <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.49.6"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.55.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2228,7 +2525,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.49.7"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.55.7"></a><h4>Returns</h4>
 <p> the normalized <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -2246,7 +2543,7 @@
 <p>This method does not preserve the original order of <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.50.6"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.56.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2261,9 +2558,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.50.7"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.56.7"></a><h4>Returns</h4>
 <p> The simplified caps.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2280,7 +2576,7 @@
  or the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> pointed to by <em class="parameter"><code>old_caps</code></em>
  may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.51.6"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.57.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2305,11 +2601,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.51.7"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.57.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_caps</code></em>
 was different from <em class="parameter"><code>old_caps</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2323,7 +2618,7 @@
 of <em class="parameter"><code>new_caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.52.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.58.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2348,11 +2643,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.52.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.58.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_caps</code></em>
 was different from <em class="parameter"><code>old_caps</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2380,7 +2674,7 @@
 <p>The current implementation of serialization will lead to unexpected results
 when there are nested <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> deeper than one level.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.53.9"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.59.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2395,7 +2689,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.53.10"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.59.10"></a><h4>Returns</h4>
 <p> a newly allocated string representing <em class="parameter"><code>caps</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -2411,7 +2705,7 @@
 <p>The current implementation of serialization will lead to unexpected results
 when there are nested <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> deeper than one level.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.54.6"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.60.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2426,7 +2720,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.54.7"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.60.7"></a><h4>Returns</h4>
 <p> a newly allocated <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</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>
@@ -2443,7 +2737,7 @@
 <div class="note">This function does not work reliably if optional properties for caps
 are included on one caps and omitted on the other.</div>
 <div class="refsect3">
-<a name="id-1.3.11.8.55.6"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.61.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2465,9 +2759,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.55.7"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.61.7"></a><h4>Returns</h4>
 <p> the resulting caps</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2488,7 +2781,7 @@
 that it returns. Don't access the argument after calling this function. See
 also: <a class="link" href="GstCaps.html#gst-caps-ref" title="gst_caps_ref ()"><code class="function">gst_caps_ref()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.56.7"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.62.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2503,7 +2796,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.56.8"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.62.8"></a><h4>Returns</h4>
 <p> a writable caps which may or may not be the
 same as <em class="parameter"><code>caps</code></em>
 . </p>
@@ -2519,7 +2812,7 @@
 . Useful when
 fixating.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.57.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.63.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2534,7 +2827,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.57.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.63.6"></a><h4>Returns</h4>
 <p> truncated caps. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -2549,7 +2842,7 @@
 values. First the caps will be truncated and then the first structure will be
 fixated with <a class="link" href="GstStructure.html#gst-structure-fixate" title="gst_structure_fixate ()"><code class="function">gst_structure_fixate()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.58.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.64.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2564,7 +2857,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.58.6"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.64.6"></a><h4>Returns</h4>
 <p> the fixated caps. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -2582,7 +2875,7 @@
 implicitly by e.g. <a class="link" href="GstCaps.html#gst-caps-new-simple" title="gst_caps_new_simple ()"><code class="function">gst_caps_new_simple()</code></a>, or via taking one explicitly with
 this function.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.59.6"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.65.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2597,9 +2890,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.11.8.59.7"></a><h4>Returns</h4>
+<a name="id-1.3.11.8.65.7"></a><h4>Returns</h4>
 <p> the same <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> object.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2610,7 +2902,7 @@
 <p>Unref a <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> and and free all its structures and the
 structures' values when the refcount reaches 0.</p>
 <div class="refsect3">
-<a name="id-1.3.11.8.60.5"></a><h4>Parameters</h4>
+<a name="id-1.3.11.8.66.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2811,7 +3103,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstCapsFeatures.html b/docs/gst/html/GstCapsFeatures.html
index 28e2602..97ba99e 100644
--- a/docs/gst/html/GstCapsFeatures.html
+++ b/docs/gst/html/GstCapsFeatures.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstCapsFeatures</title>
+<title>GstCapsFeatures: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstCaps.html" title="GstCaps">
 <link rel="next" href="GstSample.html" title="GstSample">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -324,7 +324,7 @@
 <p> a new, empty <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -338,7 +338,7 @@
 <p> a new, empty <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -354,7 +354,7 @@
 <p> a new, ANY <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -392,7 +392,7 @@
 <p> a new, empty <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -429,7 +429,7 @@
 <p> a new, empty <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -466,7 +466,7 @@
 <p> a new, empty <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -495,7 +495,7 @@
 <p> a new <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -519,7 +519,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -550,7 +550,7 @@
 <a class="link" href="GstCapsFeatures.html#gst-caps-features-free" title="gst_caps_features_free ()"><code class="function">gst_caps_features_free()</code></a> 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>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -595,7 +595,7 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -632,9 +632,8 @@
 <div class="refsect3">
 <a name="id-1.3.12.8.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parent refcount could be set.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -672,9 +671,8 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>features1</code></em>
 and <em class="parameter"><code>features2</code></em>
 are equal.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -702,9 +700,8 @@
 <a name="id-1.3.12.8.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>features</code></em>
 is <a class="link" href="GstCapsFeatures.html#GST-CAPS-FEATURES-ANY:CAPS" title="GST_CAPS_FEATURES_ANY"><code class="literal">GST_CAPS_FEATURES_ANY</code></a>.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -742,9 +739,8 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>features</code></em>
 contains <em class="parameter"><code>feature</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -782,9 +778,8 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>features</code></em>
 contains <em class="parameter"><code>feature</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -812,9 +807,8 @@
 <a name="id-1.3.12.8.19.6"></a><h4>Returns</h4>
 <p> The number of features in <em class="parameter"><code>features</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -852,9 +846,8 @@
 <p> The <em class="parameter"><code>i</code></em>
 -th feature of <em class="parameter"><code>features</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -892,9 +885,8 @@
 <p> The <em class="parameter"><code>i</code></em>
 -th feature of <em class="parameter"><code>features</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -927,7 +919,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -960,7 +952,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -993,7 +985,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1026,7 +1018,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -1048,7 +1040,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstChildProxy.html b/docs/gst/html/GstChildProxy.html
index 39f37ad..23e83ae 100644
--- a/docs/gst/html/GstChildProxy.html
+++ b/docs/gst/html/GstChildProxy.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstChildProxy</title>
+<title>GstChildProxy: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstSample.html" title="GstSample">
 <link rel="next" href="GstClock.html" title="GstClock">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -154,12 +154,12 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstChildProxy.html#GstChildProxy-child-added" title="The “child-added” signal">child-added</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="GstChildProxy.html#GstChildProxy-child-removed" title="The “child-removed” signal">child-removed</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -246,7 +246,6 @@
 <a name="id-1.3.14.11.2.6"></a><h4>Returns</h4>
 <p> the number of child objects</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -383,7 +382,6 @@
 usage. For plain GObjects <em class="parameter"><code>target</code></em>
 is the same as <em class="parameter"><code>object</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -774,7 +772,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -819,7 +817,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -828,7 +826,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstClock.html b/docs/gst/html/GstClock.html
index b538af1..2806076 100644
--- a/docs/gst/html/GstClock.html
+++ b/docs/gst/html/GstClock.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstClock</title>
+<title>GstClock: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstChildProxy.html" title="GstChildProxy">
-<link rel="next" href="gstreamer-gstconfig.html" title="gstconfig">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-GstConfig.html" title="GstConfig">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,12 +17,13 @@
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#GstClock.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                   <a href="#GstClock.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
-                  <a href="#GstClock.properties" class="shortcut">Properties</a></span>
+                  <a href="#GstClock.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#GstClock.signals" class="shortcut">Signals</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="libgstreamer.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="GstChildProxy.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-gstconfig.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-GstConfig.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="GstClock"></a><div class="titlepage"></div>
@@ -53,6 +54,12 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstClock.html#GST-CLOCK-STIME-IS-VALID:CAPS" title="GST_CLOCK_STIME_IS_VALID()">GST_CLOCK_STIME_IS_VALID</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="GstClock.html#GST-SECOND:CAPS" title="GST_SECOND">GST_SECOND</a></td>
 </tr>
 <tr>
@@ -184,6 +191,14 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
+<a class="link" href="GstClock.html#gst-clock-add-observation-unapplied" title="gst_clock_add_observation_unapplied ()">gst_clock_add_observation_unapplied</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
 <a class="link" href="GstClock.html#gst-clock-set-master" title="gst_clock_set_master ()">gst_clock_set_master</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -277,6 +292,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstClock.html#gst-clock-adjust-with-calibration" title="gst_clock_adjust_with_calibration ()">gst_clock_adjust_with_calibration</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -309,6 +332,30 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstClock.html#gst-clock-wait-for-sync" title="gst_clock_wait_for_sync ()">gst_clock_wait_for_sync</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstClock.html#gst-clock-is-synced" title="gst_clock_is_synced ()">gst_clock_is_synced</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="GstClock.html#gst-clock-set-synced" title="gst_clock_set_synced ()">gst_clock_set_synced</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="returnvalue">GstClockTime</span></a>
 </td>
 <td class="function_name">
@@ -394,6 +441,21 @@
 </table></div>
 </div>
 <div class="refsect1">
+<a name="GstClock.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="GstClock.html#GstClock-synced" title="The “synced” signal">synced</a></td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
 <a name="GstClock.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -422,6 +484,10 @@
 <td class="function_name"><a class="link" href="GstClock.html#GstClockID" title="GstClockID">GstClockID</a></td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="GstClock.html#GST-CLOCK-STIME-NONE:CAPS" title="GST_CLOCK_STIME_NONE">GST_CLOCK_STIME_NONE</a></td>
+</tr>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="GstClock.html#GstClockEntry" title="struct GstClockEntry">GstClockEntry</a></td>
 </tr>
@@ -523,8 +589,6 @@
 <pre class="programlisting">#define GST_CLOCK_TIME_NONE             ((GstClockTime) -1)
 </pre>
 <p>Constant to define an undefined clock time.</p>
-<p>Value: 18446744073709551615
-Type: GstClockTime</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -533,7 +597,7 @@
 </pre>
 <p>Tests if a given <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> represents a valid defined time.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -550,12 +614,33 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-CLOCK-STIME-IS-VALID:CAPS"></a><h3>GST_CLOCK_STIME_IS_VALID()</h3>
+<pre class="programlisting">#define GST_CLOCK_STIME_IS_VALID(time)   (((GstClockTimeDiff)(time)) != GST_CLOCK_STIME_NONE)
+</pre>
+<p>Tests if a given <a class="link" href="GstClock.html#GstClockTimeDiff" title="GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> of <span class="type">gint64</span> represents a valid defined time.</p>
+<div class="refsect3">
+<a name="id-1.3.15.10.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>time</p></td>
+<td class="parameter_description"><p>signed clock time to validate</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-SECOND:CAPS"></a><h3>GST_SECOND</h3>
 <pre class="programlisting">#define GST_SECOND  (G_USEC_PER_SEC * G_GINT64_CONSTANT (1000))
 </pre>
 <p>Constant that defines one GStreamer second.</p>
-<p>Value: 1000000000
-Type: GstClockTime</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -563,8 +648,6 @@
 <pre class="programlisting">#define GST_MSECOND (GST_SECOND / G_GINT64_CONSTANT (1000))
 </pre>
 <p>Constant that defines one GStreamer millisecond.</p>
-<p>Value: 1000000
-Type: GstClockTime</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -572,8 +655,6 @@
 <pre class="programlisting">#define GST_USECOND (GST_SECOND / G_GINT64_CONSTANT (1000000))
 </pre>
 <p>Constant that defines one GStreamer microsecond.</p>
-<p>Value: 1000
-Type: GstClockTime</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -581,8 +662,6 @@
 <pre class="programlisting">#define GST_NSECOND (GST_SECOND / G_GINT64_CONSTANT (1000000000))
 </pre>
 <p>Constant that defines one GStreamer nanosecond</p>
-<p>Value: 1
-Type: GstClockTime</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -591,7 +670,7 @@
 </pre>
 <p>Convert a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> to seconds.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -613,7 +692,7 @@
 </pre>
 <p>Convert a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> to milliseconds (1/1000 of a second).</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -635,7 +714,7 @@
 </pre>
 <p>Convert a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> to microseconds (1/1000000 of a second).</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -657,7 +736,7 @@
 </pre>
 <p>Convert a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> to nanoseconds (1/1000000000 of a second).</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -682,7 +761,7 @@
  - <em class="parameter"><code>s</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -711,7 +790,7 @@
 </pre>
 <p>Convert a <a href="https://developer.gnome.org/glib/unstable/glib-Date-and-Time-Functions.html#GTimeVal"><span class="type">GTimeVal</span></a> to a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -735,7 +814,7 @@
 which is about 68 years.  Expect trouble if you want to schedule stuff
 in your pipeline for 2038.</div>
 <div class="refsect3">
-<a name="id-1.3.15.9.14.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.15.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -764,7 +843,7 @@
 </pre>
 <p>Convert a struct timespec (see man pselect) to a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -785,7 +864,7 @@
 <pre class="programlisting">#define             GST_TIME_TO_TIMESPEC(t,ts)</pre>
 <p>Convert a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> to a struct timespec (see man pselect)</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -817,7 +896,7 @@
                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>The function prototype of the callback.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -849,9 +928,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> (currently unused)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -861,7 +939,7 @@
 </pre>
 <p>Cast to a clock entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -883,7 +961,7 @@
 </pre>
 <p>Get the owner clock of the entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -905,7 +983,7 @@
 </pre>
 <p>Get the type of the clock entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -927,7 +1005,7 @@
 </pre>
 <p>Get the requested time of this entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -949,7 +1027,7 @@
 </pre>
 <p>Get the interval of this periodic entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -971,7 +1049,7 @@
 </pre>
 <p>The status of the entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -993,7 +1071,7 @@
 </pre>
 <p>Gets the <a class="link" href="GstClock.html#GstClockFlags" title="enum GstClockFlags"><span class="type">GstClockFlags</span></a> clock flags.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.24.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1030,7 +1108,7 @@
 be used to control the sampling frequency of the master and slave
 clocks.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.25.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.26.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1062,15 +1140,85 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.25.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.26.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if enough observations were added to run the
 regression algorithm.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-clock-add-observation-unapplied"></a><h3>gst_clock_add_observation_unapplied ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_clock_add_observation_unapplied (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>,
+                                     <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> slave</code></em>,
+                                     <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> master</code></em>,
+                                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *r_squared</code></em>,
+                                     <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> *internal</code></em>,
+                                     <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> *external</code></em>,
+                                     <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> *rate_num</code></em>,
+                                     <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> *rate_denom</code></em>);</pre>
+<p>Add a clock observation to the internal slaving algorithm the same as
+<a class="link" href="GstClock.html#gst-clock-add-observation" title="gst_clock_add_observation ()"><code class="function">gst_clock_add_observation()</code></a>, and return the result of the master clock
+estimation, without updating the internal calibration.</p>
+<p>The caller can then take the results and call <a class="link" href="GstClock.html#gst-clock-set-calibration" title="gst_clock_set_calibration ()"><code class="function">gst_clock_set_calibration()</code></a>
+with the values, or some modified version of them.</p>
+<div class="refsect3">
+<a name="id-1.3.15.10.27.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>clock</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>slave</p></td>
+<td class="parameter_description"><p>a time on the slave</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>master</p></td>
+<td class="parameter_description"><p>a time on the master</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>r_squared</p></td>
+<td class="parameter_description"><p> a pointer to hold the result. </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>
+<tr>
+<td class="parameter_name"><p>internal</p></td>
+<td class="parameter_description"><p> a location to store the internal time. </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>external</p></td>
+<td class="parameter_description"><p> a location to store the external time. </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>rate_num</p></td>
+<td class="parameter_description"><p> a location to store the rate numerator. </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>rate_denom</p></td>
+<td class="parameter_description"><p> a location to store the rate denominator. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-clock-set-master"></a><h3>gst_clock_set_master ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_clock_set_master (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>,
@@ -1089,7 +1237,7 @@
 however keep reporting its time adjusted with the last configured rate 
 and time offsets.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.26.7"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.28.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1111,12 +1259,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.26.8"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.28.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the clock is capable of being slaved to a master clock.
 Trying to set a master on a clock without the
 <a class="link" href="GstClock.html#GST-CLOCK-FLAG-CAN-SET-MASTER:CAPS"><span class="type">GST_CLOCK_FLAG_CAN_SET_MASTER</span></a> flag will make this function return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1128,7 +1275,7 @@
  is slaved to or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when the clock is
 not slaved to any master clock.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1143,7 +1290,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.27.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.29.6"></a><h4>Returns</h4>
 <p> a master <a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
 when this clock is not slaved to a master clock. Unref after
 usage.</p>
@@ -1163,7 +1310,7 @@
 of a clock can only be changed if the clock has the
 <a class="link" href="GstClock.html#GST-CLOCK-FLAG-CAN-SET-RESOLUTION:CAPS"><span class="type">GST_CLOCK_FLAG_CAN_SET_RESOLUTION</span></a> flag set.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1185,9 +1332,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.28.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.30.6"></a><h4>Returns</h4>
 <p> the new resolution of the clock.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1198,7 +1344,7 @@
 <p>Get the accuracy of the clock. The accuracy of the clock is the granularity
 of the values returned by <a class="link" href="GstClock.html#gst-clock-get-time" title="gst_clock_get_time ()"><code class="function">gst_clock_get_time()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1213,10 +1359,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.29.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.31.6"></a><h4>Returns</h4>
 <p> the resolution of the clock in units of <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a>.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1228,7 +1373,7 @@
 monotonically increasing and adjusted according to the current
 offset and rate.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1243,11 +1388,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.30.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.32.6"></a><h4>Returns</h4>
 <p> the time of the clock. Or GST_CLOCK_TIME_NONE when
 given invalid input.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1262,7 +1406,7 @@
 unreffed after usage.</p>
 <p>Free-function: gst_clock_id_unref</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.31.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.33.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1284,7 +1428,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.31.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.33.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a> that can be used to request the
 time notification.</p>
 <p>MT safe. </p>
@@ -1308,7 +1452,7 @@
 after usage.</p>
 <p>Free-function: gst_clock_id_unref</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.32.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.34.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1335,7 +1479,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.32.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.34.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a> that can be used to request the
 time notification.</p>
 <p>MT safe. </p>
@@ -1353,7 +1497,7 @@
  to the provided time. Does not
 modify the reference count.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1380,11 +1524,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.33.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.35.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the GstClockID could be reinitialized to the provided
 <em class="parameter"><code>time</code></em>
 , else <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1399,7 +1542,7 @@
  to the provided start time and
 interval. Does not modify the reference count.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1431,11 +1574,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.34.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.36.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the GstClockID could be reinitialized to the provided
 <em class="parameter"><code>time</code></em>
 , else <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1446,7 +1588,7 @@
 <p>Gets the current internal time of the given clock. The time is returned
 unadjusted for the offset and the rate.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.35.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1461,11 +1603,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.35.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.37.6"></a><h4>Returns</h4>
 <p> the internal time of the clock. Or GST_CLOCK_TIME_NONE when
 given invalid input.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1481,7 +1622,7 @@
 clock's OBJECT_LOCK held and is mainly used by clock subclasses.</p>
 <p>This function is the reverse of <a class="link" href="GstClock.html#gst-clock-unadjust-unlocked" title="gst_clock_unadjust_unlocked ()"><code class="function">gst_clock_unadjust_unlocked()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.36.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.38.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1503,9 +1644,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.36.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.38.7"></a><h4>Returns</h4>
 <p> the converted time of the clock.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1522,7 +1662,7 @@
 is mainly used by clock subclasses.</p>
 <p>This function is the reverse of <a class="link" href="GstClock.html#gst-clock-adjust-unlocked" title="gst_clock_adjust_unlocked ()"><code class="function">gst_clock_adjust_unlocked()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.37.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.39.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1544,14 +1684,78 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.37.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.39.7"></a><h4>Returns</h4>
 <p> the internal time of the clock corresponding to <em class="parameter"><code>external</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-clock-adjust-with-calibration"></a><h3>gst_clock_adjust_with_calibration ()</h3>
+<pre class="programlisting"><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_clock_adjust_with_calibration (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> internal_target</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> cinternal</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> cexternal</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> cnum</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> cdenom</code></em>);</pre>
+<p>Converts the given <em class="parameter"><code>internal_target</code></em>
+ clock time to the external time,
+using the passed calibration parameters. This function performs the
+same calculation as <a class="link" href="GstClock.html#gst-clock-adjust-unlocked" title="gst_clock_adjust_unlocked ()"><code class="function">gst_clock_adjust_unlocked()</code></a> when called using the
+current calibration parameters, but doesn't ensure a monotonically
+increasing result as <a class="link" href="GstClock.html#gst-clock-adjust-unlocked" title="gst_clock_adjust_unlocked ()"><code class="function">gst_clock_adjust_unlocked()</code></a> does.</p>
+<div class="refsect3">
+<a name="id-1.3.15.10.40.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>clock</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> to use</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>internal_target</p></td>
+<td class="parameter_description"><p>a clock time</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cinternal</p></td>
+<td class="parameter_description"><p>a reference internal time</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cexternal</p></td>
+<td class="parameter_description"><p>a reference external time</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cnum</p></td>
+<td class="parameter_description"><p>the numerator of the rate of the clock relative to its
+internal time</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cdenom</p></td>
+<td class="parameter_description"><p>the denominator of the rate of the clock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.15.10.40.6"></a><h4>Returns</h4>
+<p> the converted time of the clock.</p>
+</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-clock-get-calibration"></a><h3>gst_clock_get_calibration ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_clock_get_calibration (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>,
@@ -1570,7 +1774,7 @@
 caller is not interested in the values.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.38.7"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.41.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1639,7 +1843,7 @@
 until the clock catches up.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.39.11"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.42.11"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1684,7 +1888,7 @@
 gst_clock_get_timeout (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>);</pre>
 <p>Get the amount of time that master and slave clocks are sampled.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.40.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1699,9 +1903,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.40.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.43.6"></a><h4>Returns</h4>
 <p> the interval between samples.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1713,7 +1916,7 @@
 <p>Set the amount of time, in nanoseconds, to sample master and slave
 clocks</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1737,12 +1940,118 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-clock-wait-for-sync"></a><h3>gst_clock_wait_for_sync ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_clock_wait_for_sync (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>,
+                         <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> timeout</code></em>);</pre>
+<p>Waits until <em class="parameter"><code>clock</code></em>
+ is synced for reporting the current time. If <em class="parameter"><code>timeout</code></em>
+
+is <a class="link" href="GstClock.html#GST-CLOCK-TIME-NONE:CAPS" title="GST_CLOCK_TIME_NONE"><code class="literal">GST_CLOCK_TIME_NONE</code></a> it will wait forever, otherwise it will time out
+after <em class="parameter"><code>timeout</code></em>
+ nanoseconds.</p>
+<p>For asynchronous waiting, the GstClock::synced signal can be used.</p>
+<p>This returns immediately with TRUE if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC
+is not set on the clock, or if the clock is already synced.</p>
+<div class="refsect3">
+<a name="id-1.3.15.10.45.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>clock</p></td>
+<td class="parameter_description"><p>a GstClock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>timeout</p></td>
+<td class="parameter_description"><p>timeout for waiting or <a class="link" href="GstClock.html#GST-CLOCK-TIME-NONE:CAPS" title="GST_CLOCK_TIME_NONE"><code class="literal">GST_CLOCK_TIME_NONE</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.15.10.45.8"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if waiting was successful, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on timeout</p>
+</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-clock-is-synced"></a><h3>gst_clock_is_synced ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_clock_is_synced (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>);</pre>
+<p>Checks if the clock is currently synced.</p>
+<p>This returns if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC is not set on the clock.</p>
+<div class="refsect3">
+<a name="id-1.3.15.10.46.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>clock</p></td>
+<td class="parameter_description"><p>a GstClock</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.15.10.46.7"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the clock is currently synced</p>
+</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-clock-set-synced"></a><h3>gst_clock_set_synced ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_clock_set_synced (<em class="parameter"><code><a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock</code></em>,
+                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> synced</code></em>);</pre>
+<p>Sets <em class="parameter"><code>clock</code></em>
+ to synced and emits the GstClock::synced signal, and wakes up any
+thread waiting in <a class="link" href="GstClock.html#gst-clock-wait-for-sync" title="gst_clock_wait_for_sync ()"><code class="function">gst_clock_wait_for_sync()</code></a>.</p>
+<p>This function must only be called if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC
+is set on the clock, and is intended to be called by subclasses only.</p>
+<div class="refsect3">
+<a name="id-1.3.15.10.47.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>clock</p></td>
+<td class="parameter_description"><p>a GstClock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>synced</p></td>
+<td class="parameter_description"><p>if the clock is synced</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-clock-id-get-time"></a><h3>gst_clock_id_get_time ()</h3>
 <pre class="programlisting"><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="returnvalue">GstClockTime</span></a>
 gst_clock_id_get_time (<em class="parameter"><code><a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a> id</code></em>);</pre>
 <p>Get the time of the clock ID</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.42.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1757,10 +2066,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.42.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.48.6"></a><h4>Returns</h4>
 <p> the time of the given clock id.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1787,7 +2095,7 @@
 Negative values indicate how much time was spent waiting on the clock 
 before this function returned.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.43.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.49.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1810,7 +2118,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.43.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.49.7"></a><h4>Returns</h4>
 <p> the result of the blocking wait. <a class="link" href="GstClock.html#GST-CLOCK-EARLY:CAPS"><span class="type">GST_CLOCK_EARLY</span></a> will be returned
 if the current clock time is past the time of <em class="parameter"><code>id</code></em>
 , <a class="link" href="GstClock.html#GST-CLOCK-OK:CAPS"><span class="type">GST_CLOCK_OK</span></a> if
@@ -1819,7 +2127,6 @@
 was
 unscheduled with <a class="link" href="GstClock.html#gst-clock-id-unschedule" title="gst_clock_id_unschedule ()"><code class="function">gst_clock_id_unschedule()</code></a>.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1841,7 +2148,7 @@
  can be invoked from any thread, either provided by the
 core or from a streaming thread. The application should be prepared for this.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.44.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.50.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1873,10 +2180,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.44.7"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.50.7"></a><h4>Returns</h4>
 <p> the result of the non blocking wait.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1892,7 +2198,7 @@
 async notifications, you need to create a new <a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a>.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.45.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.51.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1916,7 +2222,7 @@
 <p>Compares the two <a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a> instances. This function can be used
 as a GCompareFunc when sorting ids.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1938,10 +2244,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.46.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.52.6"></a><h4>Returns</h4>
 <p> negative value if a &lt; b; zero if a = b; positive value if a &gt; b</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1952,7 +2257,7 @@
 <p>Increase the refcount of given <em class="parameter"><code>id</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.47.5"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1967,7 +2272,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.9.47.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.53.6"></a><h4>Returns</h4>
 <p> The same <a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a> with increased refcount.</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>
@@ -1983,7 +2288,7 @@
 <a class="link" href="GstClock.html#GstClockID" title="GstClockID"><span class="type">GstClockID</span></a> will be freed.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.15.9.48.6"></a><h4>Parameters</h4>
+<a name="id-1.3.15.10.54.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2031,7 +2336,7 @@
 <p>GStreamer clock class. Override the vmethods to implement the clock
 functionality.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.3.5"></a><h4>Members</h4>
+<a name="id-1.3.15.11.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -2105,6 +2410,13 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-CLOCK-STIME-NONE:CAPS"></a><h3>GST_CLOCK_STIME_NONE</h3>
+<pre class="programlisting">#define GST_CLOCK_STIME_NONE             G_MININT64
+</pre>
+<p>Constant to define an undefined clock time.</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstClockEntry"></a><h3>struct GstClockEntry</h3>
 <pre class="programlisting">struct GstClockEntry {
   gint                  refcount;
@@ -2115,7 +2427,7 @@
 Note that GstClockEntry should be treated as an opaque structure. It must
 not be extended or allocated using a custom allocator.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.7.5"></a><h4>Members</h4>
+<a name="id-1.3.15.11.8.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -2135,7 +2447,7 @@
 <a name="GstClockEntryType"></a><h3>enum GstClockEntryType</h3>
 <p>The type of the clock entry</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.8.4"></a><h4>Members</h4>
+<a name="id-1.3.15.11.9.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -2166,7 +2478,7 @@
 <a name="GstClockReturn"></a><h3>enum GstClockReturn</h3>
 <p>The return value of a clock operation.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.9.4"></a><h4>Members</h4>
+<a name="id-1.3.15.11.10.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -2239,7 +2551,7 @@
 <a name="GstClockFlags"></a><h3>enum GstClockFlags</h3>
 <p>The capabilities of this clock</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.10.4"></a><h4>Members</h4>
+<a name="id-1.3.15.11.11.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -2290,6 +2602,14 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-CLOCK-FLAG-NEEDS-STARTUP-SYNC:CAPS"></a>GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC</p></td>
+<td class="enum_member_description">
+<p>clock needs to be synced before it can be used
+    (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-CLOCK-FLAG-LAST:CAPS"></a>GST_CLOCK_FLAG_LAST</p></td>
 <td class="enum_member_description">
 <p>subclasses can add additional flags starting from this flag</p>
@@ -2330,12 +2650,55 @@
 </div>
 </div>
 <div class="refsect1">
+<a name="GstClock.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstClock-synced"></a><h3>The <code class="literal">“synced”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> *clock,
+               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>  synced,
+               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>  user_data)</pre>
+<p>Signaled on clocks with GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC set once
+the clock is synchronized, or when it completely lost synchronization.
+This signal will not be emitted on clocks without the flag.</p>
+<p>This signal will be emitted from an arbitrary thread, most likely not
+the application's main thread.</p>
+<div class="refsect3">
+<a name="id-1.3.15.13.2.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>clock</p></td>
+<td class="parameter_description"><p>the clock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>synced</p></td>
+<td class="parameter_description"><p>if the clock is synced now</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="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+<div class="refsect1">
 <a name="GstClock.see-also"></a><h2>See Also</h2>
 <p><a class="link" href="GstSystemClock.html" title="GstSystemClock"><span class="type">GstSystemClock</span></a>, <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a></p>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstContext.html b/docs/gst/html/GstContext.html
index 2aedc26..d1bdbdb 100644
--- a/docs/gst/html/GstContext.html
+++ b/docs/gst/html/GstContext.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstContext</title>
+<title>GstContext: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-gstconfig.html" title="gstconfig">
+<link rel="prev" href="gstreamer-GstConfig.html" title="GstConfig">
 <link rel="next" href="GstControlBinding.html" title="GstControlBinding">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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="gstreamer-gstconfig.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-GstConfig.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="GstControlBinding.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -216,7 +216,7 @@
 <p> The new context. </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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -243,7 +243,6 @@
 <a name="id-1.3.17.8.3.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>context</code></em>
 (for convenience when doing assignments)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -323,9 +322,8 @@
 <div class="refsect3">
 <a name="id-1.3.17.8.6.6"></a><h4>Returns</h4>
 <p> The type of the context.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -363,9 +361,8 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>context</code></em>
 has <em class="parameter"><code>context_type</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -392,9 +389,8 @@
 <div class="refsect3">
 <a name="id-1.3.17.8.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the context is persistent.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -424,7 +420,7 @@
 free it and that the pointer becomes invalid when you free the context. </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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -454,9 +450,8 @@
 that the pointer becomes invalid when you free the event.
 This function checks if <em class="parameter"><code>context</code></em>
 is writable.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -553,7 +548,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_context</code></em>
 was different from <em class="parameter"><code>old_context</code></em>
 </p>
-<p></p>
 </div>
 </div>
 </div>
@@ -570,7 +564,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstControlBinding.html b/docs/gst/html/GstControlBinding.html
index e1c7d87..701eece 100644
--- a/docs/gst/html/GstControlBinding.html
+++ b/docs/gst/html/GstControlBinding.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstControlBinding</title>
+<title>GstControlBinding: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstContext.html" title="GstContext">
 <link rel="next" href="GstControlSource.html" title="GstControlSource">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -205,7 +205,6 @@
 <a name="id-1.3.18.9.2.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the controller value could be applied to the object
 property, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -263,8 +262,9 @@
 <p>The values are unboxed and ready to be used. The similar function 
 <a class="link" href="GstControlBinding.html#gst-control-binding-get-g-value-array" title="gst_control_binding_get_g_value_array ()"><code class="function">gst_control_binding_get_g_value_array()</code></a> returns the array as <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValues</span></a> and is
 more suitable for bindings.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.18.9.4.7"></a><h4>Parameters</h4>
+<a name="id-1.3.18.9.4.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -301,9 +301,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.18.9.4.8"></a><h4>Returns</h4>
+<a name="id-1.3.18.9.4.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the given array could be filled, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -362,7 +361,6 @@
 <div class="refsect3">
 <a name="id-1.3.18.9.5.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the given array could be filled, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -421,7 +419,6 @@
 <div class="refsect3">
 <a name="id-1.3.18.9.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the binding is inactive</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -530,7 +527,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstControlSource.html b/docs/gst/html/GstControlSource.html
index 75fefed..b370945 100644
--- a/docs/gst/html/GstControlSource.html
+++ b/docs/gst/html/GstControlSource.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstControlSource</title>
+<title>GstControlSource: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstControlBinding.html" title="GstControlBinding">
 <link rel="next" href="GstDateTime.html" title="GstDateTime">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -168,7 +168,6 @@
 <div class="refsect3">
 <a name="id-1.3.19.8.2.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value was successfully calculated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -221,7 +220,6 @@
 <div class="refsect3">
 <a name="id-1.3.19.8.3.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the values were successfully calculated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -262,7 +260,6 @@
 <div class="refsect3">
 <a name="id-1.3.19.8.4.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the value couldn't be returned, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -316,7 +313,6 @@
 <div class="refsect3">
 <a name="id-1.3.19.8.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the given array could be filled, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -417,7 +413,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstDateTime.html b/docs/gst/html/GstDateTime.html
index b7ce357..60cd5d3 100644
--- a/docs/gst/html/GstDateTime.html
+++ b/docs/gst/html/GstDateTime.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstDateTime</title>
+<title>GstDateTime: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstControlSource.html" title="GstControlSource">
 <link rel="next" href="GstElement.html" title="GstElement">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -312,7 +312,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.2.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstDateTime</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -340,7 +339,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.3.6"></a><h4>Returns</h4>
 <p> The day of this <a class="link" href="GstDateTime.html" title="GstDateTime"><span class="type">GstDateTime</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -368,7 +366,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.4.6"></a><h4>Returns</h4>
 <p> The month of this <a class="link" href="GstDateTime.html" title="GstDateTime"><span class="type">GstDateTime</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -398,7 +395,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.5.6"></a><h4>Returns</h4>
 <p> the hour of the day</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -427,7 +423,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.6.6"></a><h4>Returns</h4>
 <p> the microsecond of the second</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -457,7 +452,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.7.6"></a><h4>Returns</h4>
 <p> the minute of the hour</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -489,7 +483,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.8.6"></a><h4>Returns</h4>
 <p> the offset from UTC in hours</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -520,7 +513,6 @@
 <a name="id-1.3.20.8.9.6"></a><h4>Returns</h4>
 <p> the second represented by <em class="parameter"><code>datetime</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -548,7 +540,6 @@
 <div class="refsect3">
 <a name="id-1.3.20.8.10.6"></a><h4>Returns</h4>
 <p> The year of this <a class="link" href="GstDateTime.html" title="GstDateTime"><span class="type">GstDateTime</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1025,7 +1016,6 @@
 <a name="id-1.3.20.8.22.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>datetime</code></em>
 's day field is set, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1052,7 +1042,6 @@
 <a name="id-1.3.20.8.23.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>datetime</code></em>
 's month field is set, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1079,7 +1068,6 @@
 <a name="id-1.3.20.8.24.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>datetime</code></em>
 's second field is set, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1107,7 +1095,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>datetime</code></em>
 's hour and minute fields are set,
 otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1135,7 +1122,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>datetime</code></em>
 's year field is set (which should always
 be the case), otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1144,7 +1130,13 @@
 <pre class="programlisting"><a class="link" href="GstDateTime.html" title="GstDateTime"><span class="returnvalue">GstDateTime</span></a> *
 gst_date_time_new_from_iso8601_string (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *string</code></em>);</pre>
 <p>Tries to parse common variants of ISO-8601 datetime strings into a
-<a class="link" href="GstDateTime.html" title="GstDateTime"><span class="type">GstDateTime</span></a>.</p>
+<a class="link" href="GstDateTime.html" title="GstDateTime"><span class="type">GstDateTime</span></a>. Possible input formats are (for example):
+2012-06-30T22:46:43Z, 2012, 2012-06, 2012-06-30, 2012-06-30T22:46:43-0430,
+2012-06-30T22:46Z, 2012-06-30T22:46-0430, 2012-06-30 22:46,
+2012-06-30 22:46:43, 2012-06-00, 2012-00-00, 2012-00-30, 22:46:43Z, 22:46Z,
+22:46:43-0430, 22:46-0430, 22:46:30, 22:46
+If no date is provided, it is assumed to be "today" in the timezone
+provided (if any), otherwise UTC.</p>
 <p>Free-function: gst_date_time_unref</p>
 <div class="refsect3">
 <a name="id-1.3.20.8.27.6"></a><h4>Parameters</h4>
@@ -1272,7 +1264,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstDeviceProviderFactory.html b/docs/gst/html/GstDeviceProviderFactory.html
index fb29a5d..7933607 100644
--- a/docs/gst/html/GstDeviceProviderFactory.html
+++ b/docs/gst/html/GstDeviceProviderFactory.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstDeviceProviderFactory</title>
+<title>GstDeviceProviderFactory: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer-device-probing.html" title="GStreamer Device Discovery and Device Probing">
 <link rel="prev" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">
 <link rel="next" href="gstreamer-support.html" title="GStreamer Core Support">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -186,7 +186,7 @@
 found, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> otherwise. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -216,7 +216,7 @@
 if the device provider couldn't be created. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -247,7 +247,7 @@
 if unable to create device provider. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -276,9 +276,8 @@
 <div class="refsect3">
 <a name="id-1.4.5.8.5.6"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> for device providers managed by this factory.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -321,7 +320,7 @@
 . </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>]</span></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -352,7 +351,7 @@
 metadata. Free with <a href="https://developer.gnome.org/glib/unstable/glib-String-Utility-Functions.html#g-strfreev"><code class="function">g_strfreev()</code></a> when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -392,9 +391,8 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>factory</code></em>
 matches or if <em class="parameter"><code>classes</code></em>
 is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -432,9 +430,8 @@
 <a name="id-1.4.5.8.9.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>factory</code></em>
 matches.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -466,7 +463,7 @@
 <a class="link" href="GstPluginFeature.html#gst-plugin-feature-list-free" title="gst_plugin_feature_list_free ()"><code class="function">gst_plugin_feature_list_free()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Gst.DeviceProviderFactory]</span></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -475,14 +472,14 @@
 <a name="GstDeviceProviderFactory-struct"></a><h3>GstDeviceProviderFactory</h3>
 <pre class="programlisting">typedef struct _GstDeviceProviderFactory GstDeviceProviderFactory;</pre>
 <p>The opaque <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory"><span class="type">GstDeviceProviderFactory</span></a> data structure.</p>
-<p class="since">Since 1.4</p>
+<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="GstDeviceProviderFactoryClass"></a><h3>GstDeviceProviderFactoryClass</h3>
 <pre class="programlisting">typedef struct _GstDeviceProviderFactoryClass GstDeviceProviderFactoryClass;</pre>
 <p>The opaque <a class="link" href="GstDeviceProviderFactory.html#GstDeviceProviderFactoryClass" title="GstDeviceProviderFactoryClass"><span class="type">GstDeviceProviderFactoryClass</span></a> data structure.</p>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -491,7 +488,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstElement.html b/docs/gst/html/GstElement.html
index 679f7b9..d3e2fc1 100644
--- a/docs/gst/html/GstElement.html
+++ b/docs/gst/html/GstElement.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstElement</title>
+<title>GstElement: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstDateTime.html" title="GstDateTime">
 <link rel="next" href="GstElementFactory.html" title="GstElementFactory">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -692,17 +692,17 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstElement.html#GstElement-no-more-pads" title="The “no-more-pads” signal">no-more-pads</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstElement.html#GstElement-pad-added" title="The “pad-added” signal">pad-added</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstElement.html#GstElement-pad-removed" title="The “pad-removed” signal">pad-removed</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -1747,7 +1747,6 @@
 a pad with the same name already existed or the pad already had another
 parent.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1876,7 +1875,7 @@
 <p>This method is slower than manually getting the pad template and calling
 <a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a> if the pads should have a specific name (e.g.
 <em class="parameter"><code>name</code></em>
- is "src_1" instead of "src_<code class="literal">u</code>").</p>
+ is "src_1" instead of "src_%u").</p>
 <div class="refsect3">
 <a name="id-1.3.21.10.34.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1957,8 +1956,9 @@
 Pad templates can be looked up using
 <a class="link" href="GstElementFactory.html#gst-element-factory-get-static-pad-templates" title="gst_element_factory_get_static_pad_templates ()"><code class="function">gst_element_factory_get_static_pad_templates()</code></a>.</p>
 <p>The pad should be released with <a class="link" href="GstElement.html#gst-element-release-request-pad" title="gst_element_release_request_pad ()"><code class="function">gst_element_release_request_pad()</code></a>.</p>
+<p><span class="annotation">[<acronym title="This is the invoker for a virtual method."><span class="acronym">virtual</span></acronym> request_new_pad]</span></p>
 <div class="refsect3">
-<a name="id-1.3.21.10.36.6"></a><h4>Parameters</h4>
+<a name="id-1.3.21.10.36.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1992,7 +1992,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.21.10.36.7"></a><h4>Returns</h4>
+<a name="id-1.3.21.10.36.8"></a><h4>Returns</h4>
 <p> requested <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> if found,
 otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.  Release 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>
@@ -2110,7 +2110,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could be removed. Can return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the
 pad does not belong to the provided element.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2248,7 +2247,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.43.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the elements could be linked, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2324,7 +2322,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.45.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2412,7 +2409,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pads could be linked, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2475,7 +2471,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.48.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pads could be linked, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2579,7 +2574,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.50.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pads could be linked, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2629,7 +2623,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.51.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pads could be linked, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2667,7 +2660,6 @@
 <a name="id-1.3.21.10.52.6"></a><h4>Returns</h4>
 <p> the metadata for <em class="parameter"><code>key</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2729,7 +2721,6 @@
 <a name="id-1.3.21.10.54.6"></a><h4>Returns</h4>
 <p> the base time of the element.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2799,7 +2790,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.56.8"></a><h4>Returns</h4>
 <p> the start time of the element.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3079,7 +3069,6 @@
 <em class="parameter"><code>clock</code></em>
 or when it requires a specific clock to operate.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3089,8 +3078,10 @@
 gst_element_get_clock (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>);</pre>
 <p>Gets the currently configured clock of the element. This is the clock as was
 last set with <a class="link" href="GstElement.html#gst-element-set-clock" title="gst_element_set_clock ()"><code class="function">gst_element_set_clock()</code></a>.</p>
+<p>Elements in a pipeline will only have their clock set when the
+pipeline is in the PLAYING state.</p>
 <div class="refsect3">
-<a name="id-1.3.21.10.66.5"></a><h4>Parameters</h4>
+<a name="id-1.3.21.10.66.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3105,7 +3096,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.21.10.66.6"></a><h4>Returns</h4>
+<a name="id-1.3.21.10.66.7"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a> of the element. unref after usage.</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>
@@ -3185,7 +3176,6 @@
 <a name="id-1.3.21.10.68.8"></a><h4>Returns</h4>
 <p> Result of the state change using <a class="link" href="GstElement.html#GstStateChangeReturn" title="enum GstStateChangeReturn"><span class="type">GstStateChangeReturn</span></a>.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3255,7 +3245,6 @@
 element is still performing a state change or
 <a class="link" href="GstElement.html#GST-STATE-CHANGE-FAILURE:CAPS"><code class="literal">GST_STATE_CHANGE_FAILURE</code></a> if the last state change failed.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3293,7 +3282,6 @@
 <a name="id-1.3.21.10.70.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the state was changed, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if bad parameters were given
 or the elements state-locking needed no change.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3325,7 +3313,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.71.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the element's state is locked.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3395,7 +3382,6 @@
 <a name="id-1.3.21.10.73.8"></a><h4>Returns</h4>
 <p> The result of the commit state change.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3514,7 +3500,6 @@
 <a name="id-1.3.21.10.77.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the element's state could be synced to the parent's state.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3553,7 +3538,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.78.7"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstElement.html#GstStateChangeReturn" title="enum GstStateChangeReturn"><span class="type">GstStateChangeReturn</span></a> of the state transition.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3672,7 +3656,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the message was successfully posted. The function returns
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the element did not have a bus.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3712,7 +3695,6 @@
 <a name="id-1.3.21.10.81.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3768,7 +3750,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.82.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3817,7 +3798,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.83.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3864,7 +3844,6 @@
 <div class="refsect3">
 <a name="id-1.3.21.10.84.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3905,7 +3884,6 @@
 <a name="id-1.3.21.10.85.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event was handled. Events that trigger a preroll (such
 as flushing seeks and steps) will emit <a class="link" href="GstMessage.html#GST-MESSAGE-ASYNC-DONE:CAPS"><code class="literal">GST_MESSAGE_ASYNC_DONE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3968,7 +3946,6 @@
 <a name="id-1.3.21.10.86.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seek operation succeeded. Flushing seeks will trigger a
 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>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4043,7 +4020,6 @@
 <a name="id-1.3.21.10.87.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event was handled. Flushing seeks will trigger a
 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>
-<p></p>
 </div>
 </div>
 </div>
@@ -4218,8 +4194,10 @@
   /* virtual methods for subclasses */
 
   /* request/release pads */
+  /* FIXME 2.0 harmonize naming with gst_element_request_pad */
   GstPad*               (*request_new_pad)      (GstElement *element, GstPadTemplate *templ,
                                                  const gchar* name, const GstCaps *caps);
+
   void                  (*release_pad)          (GstElement *element, GstPad *pad);
 
   /* state changes */
@@ -4788,7 +4766,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4829,7 +4807,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4866,7 +4844,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -4875,7 +4853,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstElementFactory.html b/docs/gst/html/GstElementFactory.html
index b53765c..92aea18 100644
--- a/docs/gst/html/GstElementFactory.html
+++ b/docs/gst/html/GstElementFactory.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstElementFactory</title>
+<title>GstElementFactory: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstElement.html" title="GstElement">
 <link rel="next" href="gstreamer-GstGError.html" title="GstGError">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -183,6 +183,10 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DECRYPTOR:CAPS" title="GST_ELEMENT_FACTORY_TYPE_DECRYPTOR">GST_ELEMENT_FACTORY_TYPE_DECRYPTOR</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DEMUXER:CAPS" title="GST_ELEMENT_FACTORY_TYPE_DEMUXER">GST_ELEMENT_FACTORY_TYPE_DEMUXER</a></td>
 </tr>
 <tr>
@@ -195,6 +199,10 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-ENCRYPTOR:CAPS" title="GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR">GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-FORMATTER:CAPS" title="GST_ELEMENT_FACTORY_TYPE_FORMATTER">GST_ELEMENT_FACTORY_TYPE_FORMATTER</a></td>
 </tr>
 <tr>
@@ -409,7 +417,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.2.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the registering succeeded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on error</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -468,7 +475,6 @@
 <a name="id-1.3.22.8.4.6"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> for elements managed by this factory or 0 if
 the factory is not loaded.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -566,7 +572,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.7.6"></a><h4>Returns</h4>
 <p> the number of pad_templates</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -593,7 +598,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.8.6"></a><h4>Returns</h4>
 <p> type of URIs this element supports</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -662,7 +666,6 @@
 <a name="id-1.3.22.8.10.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>factory</code></em>
 implement the interface.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -776,7 +779,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the caps are fully compatible.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -811,7 +813,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the caps are fully compatible.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -846,7 +847,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the caps have a common subset.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -881,7 +881,6 @@
 <div class="refsect3">
 <a name="id-1.3.22.8.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the caps have a common subset.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -919,8 +918,6 @@
 <pre class="programlisting">#define  GST_ELEMENT_FACTORY_TYPE_ANY ((G_GUINT64_CONSTANT (1) &lt;&lt; 49) - 1)
 </pre>
 <p>Elements of any of the defined GST_ELEMENT_FACTORY_LIST types</p>
-<p>Value: 562949953421311
-Type: GstElementFactoryListType</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -928,8 +925,6 @@
 <pre class="programlisting">#define GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS (GST_ELEMENT_FACTORY_TYPE_SINK | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE)
 </pre>
 <p>All sinks handling audio, video or image media types</p>
-<p>Value: 3940649673949188
-Type: GstElementFactoryListType</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -937,8 +932,6 @@
 <pre class="programlisting">#define GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER (GST_ELEMENT_FACTORY_TYPE_ENCODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO)
 </pre>
 <p>All encoders handling audio media types</p>
-<p>Value: 1125899906842626
-Type: GstElementFactoryListType</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -948,6 +941,12 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-ELEMENT-FACTORY-TYPE-DECRYPTOR:CAPS"></a><h3>GST_ELEMENT_FACTORY_TYPE_DECRYPTOR</h3>
+<pre class="programlisting">#define  GST_ELEMENT_FACTORY_TYPE_DECRYPTOR      (G_GUINT64_CONSTANT (1) &lt;&lt; 10)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-ELEMENT-FACTORY-TYPE-DEMUXER:CAPS"></a><h3>GST_ELEMENT_FACTORY_TYPE_DEMUXER</h3>
 <pre class="programlisting">#define  GST_ELEMENT_FACTORY_TYPE_DEMUXER        (G_GUINT64_CONSTANT (1) &lt;&lt; 5)
 </pre>
@@ -966,6 +965,12 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-ELEMENT-FACTORY-TYPE-ENCRYPTOR:CAPS"></a><h3>GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR</h3>
+<pre class="programlisting">#define  GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR      (G_GUINT64_CONSTANT (1) &lt;&lt; 11)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-ELEMENT-FACTORY-TYPE-FORMATTER:CAPS"></a><h3>GST_ELEMENT_FACTORY_TYPE_FORMATTER</h3>
 <pre class="programlisting">#define  GST_ELEMENT_FACTORY_TYPE_FORMATTER      (G_GUINT64_CONSTANT (1) &lt;&lt; 9)
 </pre>
@@ -1015,8 +1020,6 @@
 <p>Note: Do not use this if you wish to not filter against any of the defined
 media types. If you wish to do this, simply don't specify any
 GST_ELEMENT_FACTORY_TYPE_MEDIA flag.</p>
-<p>Value: 18446462598732840960
-Type: GstElementFactoryListType</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1054,8 +1057,6 @@
 <pre class="programlisting">#define GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER (GST_ELEMENT_FACTORY_TYPE_ENCODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE)
 </pre>
 <p>All encoders handling video or image media types</p>
-<p>Value: 2814749767106562
-Type: GstElementFactoryListType</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1076,7 +1077,7 @@
 whose pad templates caps can intersect with <em class="parameter"><code>caps</code></em>
  will be returned.</p>
 <div class="refsect3">
-<a name="id-1.3.22.8.39.6"></a><h4>Parameters</h4>
+<a name="id-1.3.22.8.41.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1109,7 +1110,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.22.8.39.7"></a><h4>Returns</h4>
+<a name="id-1.3.22.8.41.7"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 <a class="link" href="GstElementFactory.html" title="GstElementFactory"><span class="type">GstElementFactory</span></a> elements that match the given requisites.
 Use <a class="link" href="GstPluginFeature.html#gst-plugin-feature-list-free" title="gst_plugin_feature_list_free ()"><span class="type">gst_plugin_feature_list_free</span></a> after usage. </p>
@@ -1128,7 +1129,7 @@
  will be returned.
 The list of factories is returned by decreasing rank.</p>
 <div class="refsect3">
-<a name="id-1.3.22.8.40.5"></a><h4>Parameters</h4>
+<a name="id-1.3.22.8.42.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1150,7 +1151,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.22.8.40.6"></a><h4>Returns</h4>
+<a name="id-1.3.22.8.42.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 <a class="link" href="GstElementFactory.html" title="GstElementFactory"><span class="type">GstElementFactory</span></a> elements. Use <a class="link" href="GstPluginFeature.html#gst-plugin-feature-list-free" title="gst_plugin_feature_list_free ()"><code class="function">gst_plugin_feature_list_free()</code></a> after
 usage. </p>
@@ -1166,7 +1167,7 @@
 <p>Check if <em class="parameter"><code>factory</code></em>
  is of the given types.</p>
 <div class="refsect3">
-<a name="id-1.3.22.8.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.22.8.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1188,11 +1189,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.22.8.41.6"></a><h4>Returns</h4>
+<a name="id-1.3.22.8.43.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>factory</code></em>
 is of <em class="parameter"><code>type</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1214,8 +1214,6 @@
 <a name="GST-ELEMENT-FACTORY-TYPE-DECODABLE:CAPS"></a><h3>GST_ELEMENT_FACTORY_TYPE_DECODABLE</h3>
 <pre class="programlisting">#define             GST_ELEMENT_FACTORY_TYPE_DECODABLE</pre>
 <p>All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders)</p>
-<p>Value: 353
-Type: GstElementFactoryListType</p>
 </div>
 </div>
 <div class="refsect1">
@@ -1224,7 +1222,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstEvent.html b/docs/gst/html/GstEvent.html
index 93944ac..7194b12 100644
--- a/docs/gst/html/GstEvent.html
+++ b/docs/gst/html/GstEvent.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstEvent</title>
+<title>GstEvent: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstGError.html" title="GstGError">
 <link rel="next" href="gstreamer-GstFormat.html" title="GstFormat">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -553,6 +553,22 @@
 <a class="link" href="GstEvent.html#gst-event-parse-segment-done" title="gst_event_parse_segment_done ()">gst_event_parse_segment_done</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-protection" title="gst_event_new_protection ()">gst_event_new_protection</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-protection" title="gst_event_parse_protection ()">gst_event_parse_protection</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -905,7 +921,6 @@
 <div class="refsect3">
 <a name="id-1.3.24.8.11.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstEvent.html#GstEventTypeFlags" title="enum GstEventTypeFlags"><span class="type">GstEventTypeFlags</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -932,7 +947,6 @@
 <div class="refsect3">
 <a name="id-1.3.24.8.12.6"></a><h4>Returns</h4>
 <p> a reference to the static name of the event.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -959,7 +973,6 @@
 <div class="refsect3">
 <a name="id-1.3.24.8.13.6"></a><h4>Returns</h4>
 <p> the quark associated with the event type</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1055,7 +1068,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_event</code></em>
 was different from <em class="parameter"><code>old_event</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1113,7 +1125,6 @@
 <a name="id-1.3.24.8.18.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> that was in <em class="parameter"><code>old_event</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1159,7 +1170,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_event</code></em>
 was different from <em class="parameter"><code>old_event</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1319,7 +1329,6 @@
 owned by the event, which means that you should not free it and
 that the pointer becomes invalid when you free the event.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1358,7 +1367,6 @@
 <a name="id-1.3.24.8.25.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>name</code></em>
 matches the name of the event structure.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1395,7 +1403,6 @@
 <a name="id-1.3.24.8.26.8"></a><h4>Returns</h4>
 <p> The event's sequence number.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1463,9 +1470,8 @@
 <a name="id-1.3.24.8.28.8"></a><h4>Returns</h4>
 <p> The event's running time offset</p>
 <p>MT safe.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1498,7 +1504,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1695,7 +1701,7 @@
 to be the first event that is sent for a new stream.</p>
 <p>Source elements, demuxers and other elements that create new streams
 are supposed to send this event as the first event of a new stream. It
-should not be send after a flushing seek or in similar situations
+should not be sent after a flushing seek or in similar situations
 and is used to mark the beginning of a new logical stream. Elements
 combining multiple streams must ensure that this event is only forwarded
 downstream once and not for every single input stream.</p>
@@ -1793,7 +1799,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1823,7 +1829,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1859,7 +1865,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1893,9 +1899,8 @@
 <a name="id-1.3.24.8.41.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a group id was set on the event and could be parsed,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1906,7 +1911,7 @@
 . The segment event can only travel
 downstream synchronized with the buffer flow and contains timing information
 and playback properties for the buffers that will follow.</p>
-<p>The newsegment event marks the range of buffers to be processed. All
+<p>The segment event marks the range of buffers to be processed. All
 data not within the segment range is not to be processed. This can be
 used intelligently by plugins to apply more efficient methods of skipping
 unneeded data. The valid range is expressed with the <em class="parameter"><code>start</code></em>
@@ -1938,11 +1943,11 @@
 requested for playback. For example, if an element has an input segment
 with intended playback <em class="parameter"><code>rate</code></em>
  of 2.0 and applied_rate of 1.0, it can adjust
-incoming timestamps and buffer content by half and output a newsegment event
+incoming timestamps and buffer content by half and output a segment event
 with <em class="parameter"><code>rate</code></em>
  of 1.0 and <em class="parameter"><code>applied_rate</code></em>
  of 2.0</p>
-<p>After a newsegment event, the buffer stream time is calculated with:</p>
+<p>After a segment event, the buffer stream time is calculated with:</p>
 <p>  time + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)</p>
 <div class="refsect3">
 <a name="id-1.3.24.8.42.11"></a><h4>Parameters</h4>
@@ -2983,7 +2988,6 @@
 <div class="refsect3">
 <a name="id-1.3.24.8.65.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3090,6 +3094,136 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-new-protection"></a><h3>gst_event_new_protection ()</h3>
+<pre class="programlisting"><a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+gst_event_new_protection (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *system_id</code></em>,
+                          <em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *data</code></em>,
+                          <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *origin</code></em>);</pre>
+<p>Creates a new event containing information specific to a particular
+protection system (uniquely identified by <em class="parameter"><code>system_id</code></em>
+), by which that
+protection system can acquire key(s) to decrypt a protected stream.</p>
+<p>In order for a decryption element to decrypt media
+protected using a specific system, it first needs all the
+protection system specific information necessary to acquire the decryption
+key(s) for that stream. The functions defined here enable this information
+to be passed in events from elements that extract it
+(e.g., ISOBMFF demuxers, MPEG DASH demuxers) to protection decrypter
+elements that use it.</p>
+<p>Events containing protection system specific information are created using
+<a class="link" href="GstEvent.html#gst-event-new-protection" title="gst_event_new_protection ()"><span class="type">gst_event_new_protection</span></a>, and they can be parsed by downstream elements
+using <a class="link" href="GstEvent.html#gst-event-parse-protection" title="gst_event_parse_protection ()"><span class="type">gst_event_parse_protection</span></a>.</p>
+<p>In Common Encryption, protection system specific information may be located
+within ISOBMFF files, both in movie (moov) boxes and movie fragment (moof)
+boxes; it may also be contained in ContentProtection elements within MPEG
+DASH MPDs. The events created by <a class="link" href="GstEvent.html#gst-event-new-protection" title="gst_event_new_protection ()"><span class="type">gst_event_new_protection</span></a> contain data
+identifying from which of these locations the encapsulated protection system
+specific information originated. This origin information is required as
+some protection systems use different encodings depending upon where the
+information originates.</p>
+<p>The events returned by <a class="link" href="GstEvent.html#gst-event-new-protection" title="gst_event_new_protection ()"><code class="function">gst_event_new_protection()</code></a> are implemented
+in such a way as to ensure that the most recently-pushed protection info
+event of a particular <em class="parameter"><code>origin</code></em>
+ and <em class="parameter"><code>system_id</code></em>
+ will
+be stuck to the output pad of the sending element.</p>
+<div class="refsect3">
+<a name="id-1.3.24.8.69.9"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>system_id</p></td>
+<td class="parameter_description"><p> a string holding a UUID that uniquely
+identifies a protection system. </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>data</p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> holding protection system specific
+information. The reference count of the buffer will be incremented by one. </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>origin</p></td>
+<td class="parameter_description"><p>a string indicating where the protection
+information carried in the event was extracted from. The allowed values
+of this string will depend upon the protection scheme.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.24.8.69.10"></a><h4>Returns</h4>
+<p> a <a class="link" href="GstEvent.html#GST-EVENT-PROTECTION:CAPS"><span class="type">GST_EVENT_PROTECTION</span></a> event, if successful; <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
+if unsuccessful.</p>
+</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-parse-protection"></a><h3>gst_event_parse_protection ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_event_parse_protection (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **system_id</code></em>,
+                            <em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> **data</code></em>,
+                            <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **origin</code></em>);</pre>
+<p>Parses an event containing protection system specific information and stores
+the results in <em class="parameter"><code>system_id</code></em>
+, <em class="parameter"><code>data</code></em>
+ and <em class="parameter"><code>origin</code></em>
+. The data stored in <em class="parameter"><code>system_id</code></em>
+,
+<em class="parameter"><code>origin</code></em>
+ and <em class="parameter"><code>data</code></em>
+ are valid until <em class="parameter"><code>event</code></em>
+ is released.</p>
+<div class="refsect3">
+<a name="id-1.3.24.8.70.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstEvent.html#GST-EVENT-PROTECTION:CAPS"><span class="type">GST_EVENT_PROTECTION</span></a> event.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>system_id</p></td>
+<td class="parameter_description"><p> pointer to store the UUID
+string uniquely identifying a content protection system. </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>data</p></td>
+<td class="parameter_description"><p> pointer to store a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a>
+holding protection system specific information. </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>origin</p></td>
+<td class="parameter_description"><p> pointer to store a value that
+indicates where the protection information carried by <em class="parameter"><code>event</code></em>
+was extracted
+from. </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>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstEvent.other_details"></a><h2>Types and Values</h2>
@@ -3307,6 +3441,14 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-EVENT-PROTECTION:CAPS"></a>GST_EVENT_PROTECTION</p></td>
+<td class="enum_member_description">
+<p>An event which indicates that new or updated
+                encryption information has been found in the stream.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-EVENT-SEGMENT-DONE:CAPS"></a>GST_EVENT_SEGMENT_DONE</p></td>
 <td class="enum_member_description">
 <p>Marks the end of a segment playback.</p>
@@ -3475,7 +3617,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3494,9 +3636,9 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-QOS-TYPE-OVERFLOW:CAPS"></a>GST_QOS_TYPE_OVERFLOW</p></td>
 <td class="enum_member_description">
-<p>The QoS event type that is produced when downstream
+<p>The QoS event type that is produced when upstream
    elements are producing data too quickly and the element can't keep up
-   processing the data. Upstream should reduce their processing rate. This
+   processing the data. Upstream should reduce their production rate. This
    type is also used when buffers arrive early or in time.</p>
 </td>
 <td class="enum_member_annotations"> </td>
@@ -3504,9 +3646,9 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-QOS-TYPE-UNDERFLOW:CAPS"></a>GST_QOS_TYPE_UNDERFLOW</p></td>
 <td class="enum_member_description">
-<p>The QoS event type that is produced when downstream
-   elements are producing data too slowly and need to speed up their processing
-   rate.</p>
+<p>The QoS event type that is produced when upstream
+   elements are producing data too slowly and need to speed up their
+   production rate.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3514,7 +3656,7 @@
 <td class="enum_member_name"><p><a name="GST-QOS-TYPE-THROTTLE:CAPS"></a>GST_QOS_TYPE_THROTTLE</p></td>
 <td class="enum_member_description">
 <p>The QoS event type that is produced when the
-   application enabled throttling to limit the datarate.</p>
+   application enabled throttling to limit the data rate.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3573,31 +3715,32 @@
 complete scan of the file in those cases.</p>
 <p>When performing a segment seek: after the playback of the segment completes,
 no EOS will be emitted by the element that performed the seek, but a
-<a class="link" href="GstMessage.html#GST-MESSAGE-SEGMENT-DONE:CAPS"><span class="type">GST_MESSAGE_SEGMENT_DONE</span></a> message will be posted on the bus by the element.
+<a class="link" href="GstMessage.html#GST-MESSAGE-SEGMENT-DONE:CAPS"><code class="literal">GST_MESSAGE_SEGMENT_DONE</code></a> message will be posted on the bus by the element.
 When this message is posted, it is possible to send a new seek event to
 continue playback. With this seek method it is possible to perform seamless
 looping or simple linear editing.</p>
 <p>When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
-playback, the <em class="parameter"><code>GST_SEEK_FLAG_SKIP</code></em>
- flag can be used to instruct decoders
+playback, the <a class="link" href="GstEvent.html#GST-SEEK-FLAG-TRICKMODE:CAPS"><code class="literal">GST_SEEK_FLAG_TRICKMODE</code></a> flag can be used to instruct decoders
 and demuxers to adjust the playback rate by skipping frames. This can improve
 performance and decrease CPU usage because not all frames need to be decoded.</p>
-<p>The <em class="parameter"><code>GST_SEEK_FLAG_SNAP_BEFORE</code></em>
- flag can be used to snap to the previous
-relevant location, and the <em class="parameter"><code>GST_SEEK_FLAG_SNAP_AFTER</code></em>
- flag can be used to
-select the next relevant location. If KEY_UNIT is specified, the relevant
-location is a keyframe. If both flags are specified, the nearest of these
-locations will be selected. If none are specified, the implementation is
-free to select whichever it wants.
-The before and after here are in running time, so when playing backwards,
+<p>Beyond that, the <a class="link" href="GstEvent.html#GST-SEEK-FLAG-TRICKMODE-KEY-UNITS:CAPS"><code class="literal">GST_SEEK_FLAG_TRICKMODE_KEY_UNITS</code></a> flag can be used to
+request that decoders skip all frames except key units, and
+<a class="link" href="GstEvent.html#GST-SEEK-FLAG-TRICKMODE-NO-AUDIO:CAPS"><code class="literal">GST_SEEK_FLAG_TRICKMODE_NO_AUDIO</code></a> flags can be used to request that audio
+decoders do no decoding at all, and simple output silence.</p>
+<p>The <a class="link" href="GstEvent.html#GST-SEEK-FLAG-SNAP-BEFORE:CAPS"><code class="literal">GST_SEEK_FLAG_SNAP_BEFORE</code></a> flag can be used to snap to the previous
+relevant location, and the <a class="link" href="GstEvent.html#GST-SEEK-FLAG-SNAP-AFTER:CAPS"><code class="literal">GST_SEEK_FLAG_SNAP_AFTER</code></a> flag can be used to
+select the next relevant location. If <a class="link" href="GstEvent.html#GST-SEEK-FLAG-KEY-UNIT:CAPS"><code class="literal">GST_SEEK_FLAG_KEY_UNIT</code></a> is specified,
+the relevant location is a keyframe. If both flags are specified, the nearest
+of these locations will be selected. If none are specified, the implementation is
+free to select whichever it wants.</p>
+<p>The before and after here are in running time, so when playing backwards,
 the next location refers to the one that will played in next, and not the
 one that is located after in the actual source stream.</p>
 <p>Also see part-seeking.txt in the GStreamer design documentation for more
 details on the meaning of these flags and the behaviour expected of
 elements that handle them.</p>
 <div class="refsect3">
-<a name="id-1.3.24.9.9.10"></a><h4>Members</h4>
+<a name="id-1.3.24.9.9.12"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3643,11 +3786,19 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
-<td class="enum_member_name"><p><a name="GST-SEEK-FLAG-SKIP:CAPS"></a>GST_SEEK_FLAG_SKIP</p></td>
+<td class="enum_member_name"><p><a name="GST-SEEK-FLAG-TRICKMODE:CAPS"></a>GST_SEEK_FLAG_TRICKMODE</p></td>
 <td class="enum_member_description">
 <p>when doing fast forward or fast reverse playback, allow
                     elements to skip frames instead of generating all
-                    frames.</p>
+                    frames. (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-SEEK-FLAG-SKIP:CAPS"></a>GST_SEEK_FLAG_SKIP</p></td>
+<td class="enum_member_description">
+<p>Deprecated backward compatibility flag, replaced
+                    by <a class="link" href="GstEvent.html#GST-SEEK-FLAG-TRICKMODE:CAPS"><code class="literal">GST_SEEK_FLAG_TRICKMODE</code></a></p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3655,8 +3806,8 @@
 <td class="enum_member_name"><p><a name="GST-SEEK-FLAG-SNAP-BEFORE:CAPS"></a>GST_SEEK_FLAG_SNAP_BEFORE</p></td>
 <td class="enum_member_description">
 <p>go to a location before the requested position,
-                    if KEY_UNIT this means the keyframe at or before the
-                    requested position the one at or before the seek target.</p>
+                    if <a class="link" href="GstEvent.html#GST-SEEK-FLAG-KEY-UNIT:CAPS"><code class="literal">GST_SEEK_FLAG_KEY_UNIT</code></a> this means the keyframe at or before
+                    the requested position the one at or before the seek target.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3664,7 +3815,7 @@
 <td class="enum_member_name"><p><a name="GST-SEEK-FLAG-SNAP-AFTER:CAPS"></a>GST_SEEK_FLAG_SNAP_AFTER</p></td>
 <td class="enum_member_description">
 <p>go to a location after the requested position,
-                    if KEY_UNIT this means the keyframe at of after the
+                    if <a class="link" href="GstEvent.html#GST-SEEK-FLAG-KEY-UNIT:CAPS"><code class="literal">GST_SEEK_FLAG_KEY_UNIT</code></a> this means the keyframe at of after the
                     requested position.</p>
 </td>
 <td class="enum_member_annotations"> </td>
@@ -3673,9 +3824,28 @@
 <td class="enum_member_name"><p><a name="GST-SEEK-FLAG-SNAP-NEAREST:CAPS"></a>GST_SEEK_FLAG_SNAP_NEAREST</p></td>
 <td class="enum_member_description">
 <p>go to a position near the requested position,
-                    if KEY_UNIT this means the keyframe closest to the
-                    requested position, if both keyframes are at an equal
-                    distance, behaves like SNAP_BEFORE.</p>
+                    if <a class="link" href="GstEvent.html#GST-SEEK-FLAG-KEY-UNIT:CAPS"><code class="literal">GST_SEEK_FLAG_KEY_UNIT</code></a> this means the keyframe closest
+                    to the requested position, if both keyframes are at an equal
+                    distance, behaves like <a class="link" href="GstEvent.html#GST-SEEK-FLAG-SNAP-BEFORE:CAPS"><code class="literal">GST_SEEK_FLAG_SNAP_BEFORE</code></a>.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-SEEK-FLAG-TRICKMODE-KEY-UNITS:CAPS"></a>GST_SEEK_FLAG_TRICKMODE_KEY_UNITS</p></td>
+<td class="enum_member_description">
+<p>when doing fast forward or fast reverse
+                    playback, request that elements only decode keyframes
+                    and skip all other content, for formats that have
+                    keyframes. (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-SEEK-FLAG-TRICKMODE-NO-AUDIO:CAPS"></a>GST_SEEK_FLAG_TRICKMODE_NO_AUDIO</p></td>
+<td class="enum_member_description">
+<p>when doing fast forward or fast reverse
+                    playback, request that audio decoder elements skip
+                    decoding and output only gap events or silence. (Since 1.6)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3690,7 +3860,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstGhostPad.html b/docs/gst/html/GstGhostPad.html
index f4c8054..2eed36e 100644
--- a/docs/gst/html/GstGhostPad.html
+++ b/docs/gst/html/GstGhostPad.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstGhostPad</title>
+<title>GstGhostPad: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstFormat.html" title="GstFormat">
 <link rel="next" href="gstreamer-GstIterator.html" title="GstIterator">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -180,10 +180,8 @@
     <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
             <span class="lineart">╰──</span> <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
-                <span class="lineart">├──</span> <a class="link" href="GstGhostPad.html#GstProxyPad">GstProxyPad</a>
-                <span class="lineart">│</span>   <span class="lineart">╰──</span> GstGhostPad
                 <span class="lineart">╰──</span> GstProxyPad
-                    <span class="lineart">╰──</span> <a class="link" href="GstGhostPad.html" title="GstGhostPad">GstGhostPad</a>
+                    <span class="lineart">╰──</span> GstGhostPad
 </pre>
 </div>
 <div class="refsect1">
@@ -470,7 +468,6 @@
 <div class="refsect3">
 <a name="id-1.3.26.9.8.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the construction succeeds, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -518,7 +515,6 @@
 <div class="refsect3">
 <a name="id-1.3.26.9.9.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation was successful.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -568,7 +564,6 @@
 <div class="refsect3">
 <a name="id-1.3.26.9.10.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation was successful.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -680,7 +675,6 @@
 <div class="refsect3">
 <a name="id-1.3.26.9.13.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the pad.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -723,7 +717,6 @@
 <div class="refsect3">
 <a name="id-1.3.26.9.14.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the pad.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -778,7 +771,6 @@
 <div class="refsect3">
 <a name="id-1.3.26.9.15.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the pad.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -801,7 +793,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstMemory.html b/docs/gst/html/GstMemory.html
index 57d9fb0..80bc0e3 100644
--- a/docs/gst/html/GstMemory.html
+++ b/docs/gst/html/GstMemory.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstMemory</title>
+<title>GstMemory: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstIterator.html" title="GstIterator">
 <link rel="next" href="GstMessage.html" title="GstMessage">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -108,6 +108,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="GstMemory.html#GstMemoryMapFullFunction" title="GstMemoryMapFullFunction ()">*GstMemoryMapFullFunction</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">
@@ -116,6 +124,14 @@
 </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="GstMemory.html#GstMemoryUnmapFullFunction" title="GstMemoryUnmapFullFunction ()">*GstMemoryUnmapFullFunction</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstMemory.html" title="GstMemory"><span class="returnvalue">GstMemory</span></a> *
 </td>
 <td class="function_name">
@@ -531,7 +547,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -555,7 +571,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -610,7 +626,54 @@
 bytes can be
 accessed according to the access pattern in <em class="parameter"><code>flags</code></em>
 .</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMemoryMapFullFunction"></a><h3>GstMemoryMapFullFunction ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
+<span class="c_punctuation">(</span>*GstMemoryMapFullFunction<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> *mem</code></em>,
+                             <em class="parameter"><code><a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a> *info</code></em>,
+                             <em class="parameter"><code><span class="type">gsize</span> maxsize</code></em>);</pre>
+<p>Get the memory of <em class="parameter"><code>mem</code></em>
+ that can be accessed according to the mode specified
+in <em class="parameter"><code>info</code></em>
+'s flags. The function should return a pointer that contains at least
+<em class="parameter"><code>maxsize</code></em>
+ bytes.</p>
+<div class="refsect3">
+<a name="id-1.3.28.8.13.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mem</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a> to map with</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>maxsize</p></td>
+<td class="parameter_description"><p>size to map</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.28.8.13.6"></a><h4>Returns</h4>
+<p> a pointer to memory of which at least <em class="parameter"><code>maxsize</code></em>
+bytes can be
+accessed according to the access pattern in <em class="parameter"><code>info</code></em>
+'s flags.</p>
 </div>
 </div>
 <hr>
@@ -620,7 +683,7 @@
 <span class="c_punctuation">(</span>*GstMemoryUnmapFunction<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
 <p>Return the pointer previously retrieved with <a class="link" href="GstMemory.html#gst-memory-map" title="gst_memory_map ()"><code class="function">gst_memory_map()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -634,10 +697,36 @@
 </tr></tbody>
 </table></div>
 </div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMemoryUnmapFullFunction"></a><h3>GstMemoryUnmapFullFunction ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+<span class="c_punctuation">(</span>*GstMemoryUnmapFullFunction<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> *mem</code></em>,
+                               <em class="parameter"><code><a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a> *info</code></em>);</pre>
+<p>Return the pointer previously retrieved with <a class="link" href="GstMemory.html#gst-memory-map" title="gst_memory_map ()"><code class="function">gst_memory_map()</code></a> with <em class="parameter"><code>info</code></em>
+.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.13.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success.</p>
-<p></p>
+<a name="id-1.3.28.8.15.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mem</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
 </div>
 </div>
 <hr>
@@ -656,7 +745,7 @@
  is set to -1, all bytes starting at <em class="parameter"><code>offset</code></em>
  are copied.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -683,11 +772,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.16.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> object wrapping a copy of the requested region in
 <em class="parameter"><code>mem</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -707,7 +795,7 @@
 shared. This function does not make a copy of the bytes in <em class="parameter"><code>mem</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -734,10 +822,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.17.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> object sharing the requested region in <em class="parameter"><code>mem</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -754,7 +841,7 @@
  in the parent buffer in <em class="parameter"><code>offset</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -781,11 +868,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.16.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>mem1</code></em>
 and <em class="parameter"><code>mem2</code></em>
 are in contiguous memory.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -803,8 +889,9 @@
 <p>Initializes a newly allocated <em class="parameter"><code>mem</code></em>
  with the given parameters. This function
 will call <a class="link" href="gstreamer-GstMiniObject.html#gst-mini-object-init" title="gst_mini_object_init ()"><code class="function">gst_mini_object_init()</code></a> with the default memory parameters.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.28.8.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.19.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -867,7 +954,7 @@
  if allocated with an allocator for <em class="parameter"><code>mem_type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -889,13 +976,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.18.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.20.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>mem</code></em>
 was allocated from an allocator for <em class="parameter"><code>mem_type</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -904,7 +990,7 @@
 gst_memory_ref (<em class="parameter"><code><a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> *memory</code></em>);</pre>
 <p>Increase the refcount of this memory.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -919,7 +1005,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.21.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>memory</code></em>
 (for convenience when doing assignments). </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -932,7 +1018,7 @@
 gst_memory_unref (<em class="parameter"><code><a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> *memory</code></em>);</pre>
 <p>Decrease the refcount of an memory, freeing it if the refcount reaches 0.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -960,7 +1046,7 @@
  of <em class="parameter"><code>mem</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -987,10 +1073,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.21.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.23.6"></a><h4>Returns</h4>
 <p> the current sizes of <em class="parameter"><code>mem</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1007,7 +1092,7 @@
 <p><a class="link" href="GstMemory.html#GST-MEMORY-FLAG-ZERO-PREFIXED:CAPS"><span class="type">GST_MEMORY_FLAG_ZERO_PREFIXED</span></a> and <a class="link" href="GstMemory.html#GST-MEMORY-FLAG-ZERO-PADDED:CAPS"><span class="type">GST_MEMORY_FLAG_ZERO_PADDED</span></a> will be
 cleared when offset or padding is increased respectively.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.22.6"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.24.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1077,7 +1162,7 @@
  and returns a reference to a new
 <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.27.6"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.29.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1104,7 +1189,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.27.7"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.29.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a> object mapped
 with <em class="parameter"><code>flags</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when a mapping is not possible. </p>
@@ -1137,7 +1222,7 @@
 <p>For each <a class="link" href="GstMemory.html#gst-memory-map" title="gst_memory_map ()"><code class="function">gst_memory_map()</code></a> call, a corresponding <a class="link" href="GstMemory.html#gst-memory-unmap" title="gst_memory_unmap ()"><code class="function">gst_memory_unmap()</code></a> call
 should be done.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.28.9"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.30.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1164,9 +1249,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.28.10"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.30.10"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the map operation was successful.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1177,7 +1261,7 @@
                   <em class="parameter"><code><a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a> *info</code></em>);</pre>
 <p>Release the memory obtained with <a class="link" href="GstMemory.html#gst-memory-map" title="gst_memory_map ()"><code class="function">gst_memory_map()</code></a></p>
 <div class="refsect3">
-<a name="id-1.3.28.8.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1211,11 +1295,11 @@
  starting from <em class="parameter"><code>offset</code></em>
 . This copy is
 guaranteed to be writable. <em class="parameter"><code>size</code></em>
- can be set to -1 to return a copy all bytes
+ can be set to -1 to return a copy
 from <em class="parameter"><code>offset</code></em>
-.</p>
+ to the end of the memory region.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1230,21 +1314,20 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>an offset to copy</p></td>
+<td class="parameter_description"><p>offset to copy from</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>size to copy or -1 to copy all bytes from offset</p></td>
+<td class="parameter_description"><p>size to copy, or -1 to copy to the end of the memory region</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.30.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.32.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1259,12 +1342,12 @@
  starting from <em class="parameter"><code>offset</code></em>
 . No
 memory copy is performed and the memory region is simply shared. The result
-is guaranteed to be not-writable. <em class="parameter"><code>size</code></em>
- can be set to -1 to return a share
-all bytes from <em class="parameter"><code>offset</code></em>
-.</p>
+is guaranteed to be non-writable. <em class="parameter"><code>size</code></em>
+ can be set to -1 to return a shared
+copy from <em class="parameter"><code>offset</code></em>
+ to the end of the memory region.</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1279,21 +1362,20 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>an offset to share</p></td>
+<td class="parameter_description"><p>offset to share from</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>size to share or -1 to share bytes from offset</p></td>
+<td class="parameter_description"><p>size to share, or -1 to share to the end of the memory region</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.31.6"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.33.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1313,7 +1395,7 @@
 the returned <em class="parameter"><code>offset</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.28.8.32.6"></a><h4>Parameters</h4>
+<a name="id-1.3.28.8.34.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1340,9 +1422,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.28.8.32.7"></a><h4>Returns</h4>
+<a name="id-1.3.28.8.34.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the memory is contiguous and of a common parent.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1393,14 +1474,14 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-MEMORY-FLAG-PHYSICALLY-CONTIGUOUS:CAPS"></a>GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS</p></td>
 <td class="enum_member_description">
-<p>the memory is physically contiguous. Since 1.2</p>
+<p>the memory is physically contiguous. (Since 2.2)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="GST-MEMORY-FLAG-NOT-MAPPABLE:CAPS"></a>GST_MEMORY_FLAG_NOT_MAPPABLE</p></td>
 <td class="enum_member_description">
-<p>the memory can't be mapped via <a class="link" href="GstMemory.html#gst-memory-map" title="gst_memory_map ()"><code class="function">gst_memory_map()</code></a> without any preconditions. Since 1.2</p>
+<p>the memory can't be mapped via <a class="link" href="GstMemory.html#gst-memory-map" title="gst_memory_map ()"><code class="function">gst_memory_map()</code></a> without any preconditions. (Since 1.2)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -1574,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, }
+<pre class="programlisting">#define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, {0, }, {0, }}
 </pre>
 <p>Initializer for <a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a></p>
 </div>
@@ -1585,7 +1666,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstMessage.html b/docs/gst/html/GstMessage.html
index bf22bc7..fdd559f 100644
--- a/docs/gst/html/GstMessage.html
+++ b/docs/gst/html/GstMessage.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstMessage</title>
+<title>GstMessage: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstMemory.html" title="GstMemory">
 <link rel="next" href="gstreamer-GstMeta.html" title="GstMeta">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -915,8 +915,7 @@
 <a name="GST-MESSAGE-TYPE-IS-EXTENDED:CAPS"></a><h3>GST_MESSAGE_TYPE_IS_EXTENDED()</h3>
 <pre class="programlisting">#define GST_MESSAGE_TYPE_IS_EXTENDED(message)       (!!(GST_MESSAGE_CAST(message)-&gt;type &amp; GST_MESSAGE_EXTENDED))
 </pre>
-<p>Check if the message is in the extended message group
-(Since 1.4)</p>
+<p>Check if the message is in the extended message group</p>
 <div class="refsect3">
 <a name="id-1.3.29.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -932,6 +931,7 @@
 </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">
@@ -980,7 +980,6 @@
 <div class="refsect3">
 <a name="id-1.3.29.8.9.6"></a><h4>Returns</h4>
 <p> the quark associated with the message type</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1007,7 +1006,6 @@
 <div class="refsect3">
 <a name="id-1.3.29.8.10.6"></a><h4>Returns</h4>
 <p> a reference to the static name of the message.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1035,7 +1033,6 @@
 <a name="id-1.3.29.8.11.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>msg</code></em>
 (for convenience when doing assignments)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1183,7 +1180,6 @@
 <a name="id-1.3.29.8.16.8"></a><h4>Returns</h4>
 <p> The message's sequence number.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1256,7 +1252,6 @@
 <a name="id-1.3.29.8.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>name</code></em>
 matches the name of the message structure.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1325,7 +1320,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_message</code></em>
 was different from <em class="parameter"><code>old_message</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1347,7 +1341,7 @@
 <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>]</span></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>
@@ -1383,7 +1377,7 @@
 <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>]</span></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>
@@ -1512,7 +1506,7 @@
 <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>]</span></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>
@@ -1597,7 +1591,7 @@
 <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>]</span></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>
@@ -1677,7 +1671,7 @@
 <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>]</span></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>tag_list</p></td>
@@ -1797,7 +1791,7 @@
 <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>]</span></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>percent</p></td>
@@ -1965,8 +1959,8 @@
 <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>]</span></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>oldstate</p></td>
@@ -2095,8 +2089,8 @@
 </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>]</span></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></tbody>
 </table></div>
 </div>
@@ -2277,8 +2271,8 @@
 <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>]</span></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>clock</p></td>
@@ -2361,8 +2355,8 @@
 <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>]</span></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>clock</p></td>
@@ -2431,7 +2425,7 @@
 <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>]</span></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>clock</p></td>
@@ -2500,8 +2494,8 @@
 <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>]</span></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>structure</p></td>
@@ -2541,7 +2535,7 @@
 <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>]</span></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>structure</p></td>
@@ -2585,8 +2579,8 @@
 </tr>
 <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"> </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>structure</p></td>
@@ -2627,7 +2621,7 @@
 <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>]</span></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>format</p></td>
@@ -2708,8 +2702,8 @@
 <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>]</span></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>format</p></td>
@@ -2791,7 +2785,7 @@
 <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>]</span></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>
@@ -2820,7 +2814,7 @@
 <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>]</span></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>
@@ -2848,7 +2842,7 @@
 <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>]</span></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>
@@ -2884,7 +2878,7 @@
 <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>]</span></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>running_time</p></td>
@@ -3515,7 +3509,7 @@
 <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>]</span></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>running_time</p></td>
@@ -3583,7 +3577,7 @@
 <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>]</span></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>
@@ -3629,7 +3623,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3665,9 +3659,8 @@
 <a name="id-1.3.29.8.71.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the message had a group id set, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
 <p>MT safe.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3694,7 +3687,7 @@
 <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>]</span></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>type</p></td>
@@ -3787,8 +3780,8 @@
 <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>]</span></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>state</p></td>
@@ -3979,7 +3972,6 @@
 This object is usually of type GstTask but other types can be added in the
 future. The object remains valid as long as <em class="parameter"><code>message</code></em>
 is valid.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4098,7 +4090,7 @@
 <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>]</span></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>context_type</p></td>
@@ -4114,7 +4106,7 @@
 <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>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4148,9 +4140,8 @@
 <div class="refsect3">
 <a name="id-1.3.29.8.83.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating if the parsing succeeded.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4171,7 +4162,7 @@
 <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>]</span></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>context</p></td>
@@ -4187,7 +4178,7 @@
 <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>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4220,7 +4211,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4256,9 +4247,8 @@
 <div class="refsect3">
 <a name="id-1.3.29.8.86.6"></a><h4>Returns</h4>
 <p> a newly allocated <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a></p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4294,9 +4284,8 @@
 <div class="refsect3">
 <a name="id-1.3.29.8.87.6"></a><h4>Returns</h4>
 <p> a newly allocated <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a></p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4330,7 +4319,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4364,7 +4353,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -4893,7 +4882,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstObject.html b/docs/gst/html/GstObject.html
index 110a1fa..c726f7e 100644
--- a/docs/gst/html/GstObject.html
+++ b/docs/gst/html/GstObject.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstObject</title>
+<title>GstObject: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstMiniObject.html" title="GstMiniObject">
 <link rel="next" href="GstPad.html" title="GstPad">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -148,6 +148,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstObject.html#gst-object-has-as-parent" title="gst_object_has_as_parent ()">gst_object_has_as_parent</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -183,6 +191,14 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
+<a class="link" href="GstObject.html#gst-object-has-as-ancestor" title="gst_object_has_as_ancestor ()">gst_object_has_as_ancestor</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
 <a class="link" href="GstObject.html#gst-object-has-ancestor" title="gst_object_has_ancestor ()">gst_object_has_ancestor</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -368,7 +384,7 @@
 <tbody><tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstObject.html#GstObject-deep-notify" title="The “deep-notify” signal">deep-notify</a></td>
-<td class="signal_flags">No Hooks</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -817,7 +833,6 @@
 cases.</p>
 <p>MT safe.  This function grabs and releases <em class="parameter"><code>object</code></em>
 's LOCK.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -897,7 +912,6 @@
 are the same.</p>
 <p>MT safe. Grabs and releases <em class="parameter"><code>object</code></em>
 's LOCK.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -936,6 +950,51 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-object-has-as-parent"></a><h3>gst_object_has_as_parent ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_object_has_as_parent (<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><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *parent</code></em>);</pre>
+<p>Check if <em class="parameter"><code>parent</code></em>
+ is the parent of <em class="parameter"><code>object</code></em>
+.
+E.g. a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> can check if it owns a given <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.32.10.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> to check</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> to check as parent</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.32.10.18.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if either <em class="parameter"><code>object</code></em>
+or <em class="parameter"><code>parent</code></em>
+is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>parent</code></em>
+is
+the parent of <em class="parameter"><code>object</code></em>
+. Otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
+<p>MT safe. Grabs and releases <em class="parameter"><code>object</code></em>
+'s locks.</p>
+</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-object-unparent"></a><h3>gst_object_unparent ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_object_unparent (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *object</code></em>);</pre>
@@ -946,7 +1005,7 @@
 <p>MT safe. Grabs and releases <em class="parameter"><code>object</code></em>
 's lock.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.18.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.19.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -977,7 +1036,7 @@
 's LOCK for getting its
          path string.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.19.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.20.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1021,7 +1080,7 @@
 and the optional debug sting..</p>
 <p>The default handler will simply print the error string using g_print.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.20.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.21.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1062,7 +1121,7 @@
 will lock each <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> in the list to compare the name, so be
 careful when passing a list with a locked object.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1085,27 +1144,26 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.21.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.22.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> named <em class="parameter"><code>name</code></em>
 does not appear in <em class="parameter"><code>list</code></em>
 ,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it does.</p>
 <p>MT safe. Grabs and releases the LOCK of each object in the list.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-object-has-ancestor"></a><h3>gst_object_has_ancestor ()</h3>
+<a name="gst-object-has-as-ancestor"></a><h3>gst_object_has_as_ancestor ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_object_has_ancestor (<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><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *ancestor</code></em>);</pre>
+gst_object_has_as_ancestor (<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><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *ancestor</code></em>);</pre>
 <p>Check if <em class="parameter"><code>object</code></em>
  has an ancestor <em class="parameter"><code>ancestor</code></em>
  somewhere up in
 the hierarchy. One can e.g. check if a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> is inside a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1127,13 +1185,57 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.22.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.23.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>ancestor</code></em>
 is an ancestor of <em class="parameter"><code>object</code></em>
 .</p>
 <p>MT safe. Grabs and releases <em class="parameter"><code>object</code></em>
 's locks.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-object-has-ancestor"></a><h3>gst_object_has_ancestor ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_object_has_ancestor (<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><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *ancestor</code></em>);</pre>
+<div class="warning">
+<p><code class="literal">gst_object_has_ancestor</code> is deprecated and should not be used in newly-written code.</p>
+<p>Use <a class="link" href="GstObject.html#gst-object-has-as-ancestor" title="gst_object_has_as_ancestor ()"><code class="function">gst_object_has_as_ancestor()</code></a> instead.</p>
+<p>MT safe. Grabs and releases <em class="parameter"><code>object</code></em>
+'s locks.</p>
+</div>
+<p>Check if <em class="parameter"><code>object</code></em>
+ has an ancestor <em class="parameter"><code>ancestor</code></em>
+ somewhere up in
+the hierarchy. One can e.g. check if a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> is inside a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.32.10.24.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> to check</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ancestor</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> to check as ancestor</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.32.10.24.7"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>ancestor</code></em>
+is an ancestor of <em class="parameter"><code>object</code></em>
+.</p>
 </div>
 </div>
 <hr>
@@ -1150,7 +1252,7 @@
 constructs like :
  result = gst_object_ref (object-&gt;parent);</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.23.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.25.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1165,7 +1267,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.23.7"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.25.7"></a><h4>Returns</h4>
 <p> A pointer to <em class="parameter"><code>object</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="Override the parsed C type with given type."><span class="acronym">type</span></acronym> Gst.Object]</span></p>
@@ -1185,7 +1287,7 @@
 <p>The unref method should never be called with the LOCK held since
 this might deadlock the dispose function.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.24.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.26.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1214,8 +1316,9 @@
 the floating flag while leaving the reference count unchanged. If the object
 is not floating, then this call adds a new normal reference increasing the
 reference count by one.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.32.10.25.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.27.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1245,7 +1348,7 @@
  and the value pointed to by <em class="parameter"><code>oldobj</code></em>
  may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.26.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.28.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1268,11 +1371,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.26.7"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.28.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>newobj</code></em>
 was different from <em class="parameter"><code>oldobj</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1285,7 +1387,7 @@
 the object hierarchy. Only useful (or used) for debugging.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.27.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.29.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1300,7 +1402,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.27.7"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.29.7"></a><h4>Returns</h4>
 <p> a string describing the path of <em class="parameter"><code>object</code></em>
 . You must
 <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> the string after usage.</p>
@@ -1317,7 +1419,7 @@
 <p>Returns a suggestion for timestamps where buffers should be split
 to get best controller results.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1332,10 +1434,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.28.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.30.6"></a><h4>Returns</h4>
 <p> Returns the suggested timestamp or <a class="link" href="GstClock.html#GST-CLOCK-TIME-NONE:CAPS" title="GST_CLOCK_TIME_NONE"><code class="literal">GST_CLOCK_TIME_NONE</code></a>
 if no control-rate was set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1349,7 +1450,7 @@
 <p>If this function fails, it is most likely the application developers fault.
 Most probably the control sources are not setup correctly.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.29.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.31.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1371,10 +1472,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.29.7"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.31.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the controller values could be applied to the object
 properties, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1386,7 +1486,7 @@
 <p>Check if the <em class="parameter"><code>object</code></em>
  has an active controlled properties.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1401,9 +1501,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.30.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.32.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the object has active controlled properties</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1417,7 +1516,7 @@
  for
 some time, i.e. <a class="link" href="GstObject.html#gst-object-sync-values" title="gst_object_sync_values ()"><code class="function">gst_object_sync_values()</code></a> will do nothing.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1452,7 +1551,7 @@
 some time, i.e. <a class="link" href="GstObject.html#gst-object-sync-values" title="gst_object_sync_values ()"><code class="function">gst_object_sync_values()</code></a> will do nothing for the
 property.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1492,7 +1591,7 @@
  will take ownership of the <em class="parameter"><code>binding</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.33.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.35.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1514,11 +1613,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.33.7"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.35.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the given <em class="parameter"><code>binding</code></em>
 has not been setup for this object or
 has been setup for a non suitable property, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1530,7 +1628,7 @@
 <p>Gets the corresponding <a class="link" href="GstControlBinding.html" title="GstControlBinding"><span class="type">GstControlBinding</span></a> for the property. This should be
 unreferenced again after use.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1552,7 +1650,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.34.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.36.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstControlBinding.html" title="GstControlBinding"><span class="type">GstControlBinding</span></a> for
 <em class="parameter"><code>property_name</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the property is not controlled. </p>
@@ -1568,7 +1666,7 @@
 <p>Removes the corresponding <a class="link" href="GstControlBinding.html" title="GstControlBinding"><span class="type">GstControlBinding</span></a>. If it was the
 last ref of the binding, it will be disposed.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.35.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1590,9 +1688,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.35.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.37.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the binding could be removed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1604,7 +1701,7 @@
                       <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> timestamp</code></em>);</pre>
 <p>Gets the value for the given controlled property at the requested time.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1631,7 +1728,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.36.6"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.38.6"></a><h4>Returns</h4>
 <p> the GValue of the property at the given time,
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the property isn't controlled. </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>]</span></p>
@@ -1658,7 +1755,7 @@
 <a class="link" href="GstObject.html#gst-object-get-g-value-array" title="gst_object_get_g_value_array ()"><code class="function">gst_object_get_g_value_array()</code></a> returns the array as <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValues</span></a> and is
 better suites for bindings.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.37.7"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.39.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1700,9 +1797,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.37.8"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.39.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the given array could be filled, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1723,7 +1819,7 @@
 <p>This function is useful if one wants to e.g. draw a graph of the control
 curve or apply a control curve sample by sample.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.38.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.40.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1765,9 +1861,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.38.7"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.40.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the given array could be filled, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1787,7 +1882,7 @@
 <p>The control-rate is not expected to change if the element is in
 <a class="link" href="GstElement.html#GST-STATE-PAUSED:CAPS"><code class="literal">GST_STATE_PAUSED</code></a> or <a class="link" href="GstElement.html#GST-STATE-PLAYING:CAPS"><code class="literal">GST_STATE_PLAYING</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.39.7"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.41.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1802,9 +1897,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.32.10.39.8"></a><h4>Returns</h4>
+<a name="id-1.3.32.10.41.8"></a><h4>Returns</h4>
 <p> the control rate in nanoseconds</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1822,7 +1916,7 @@
 <p>The control-rate should not change if the element is in <a class="link" href="GstElement.html#GST-STATE-PAUSED:CAPS"><code class="literal">GST_STATE_PAUSED</code></a> or
 <a class="link" href="GstElement.html#GST-STATE-PLAYING:CAPS"><code class="literal">GST_STATE_PLAYING</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.32.10.40.6"></a><h4>Parameters</h4>
+<a name="id-1.3.32.10.42.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2021,12 +2115,11 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: No Hooks</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstPad.html b/docs/gst/html/GstPad.html
index fa6f321..f1b8895 100644
--- a/docs/gst/html/GstPad.html
+++ b/docs/gst/html/GstPad.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPad</title>
+<title>GstPad: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstObject.html" title="GstObject">
 <link rel="next" href="GstPadTemplate.html" title="GstPadTemplate">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -1272,6 +1272,24 @@
 <a class="link" href="GstPad.html#GST-PAD-UNSET-ACCEPT-INTERSECT:CAPS" title="GST_PAD_UNSET_ACCEPT_INTERSECT()">GST_PAD_UNSET_ACCEPT_INTERSECT</a><span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstPad.html#GST-PAD-IS-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_IS_ACCEPT_TEMPLATE()">GST_PAD_IS_ACCEPT_TEMPLATE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstPad.html#GST-PAD-SET-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_SET_ACCEPT_TEMPLATE()">GST_PAD_SET_ACCEPT_TEMPLATE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstPad.html#GST-PAD-UNSET-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_UNSET_ACCEPT_TEMPLATE()">GST_PAD_UNSET_ACCEPT_TEMPLATE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1296,6 +1314,11 @@
 <td class="property_flags">Read / Write / Construct Only</td>
 </tr>
 <tr>
+<td class="property_type"><span class="type">gint64</span></td>
+<td class="property_name"><a class="link" href="GstPad.html#GstPad--offset" title="The “offset” property">offset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type">
 <a class="link" href="GstPadTemplate.html" title="GstPadTemplate"><span class="type">GstPadTemplate</span></a> *</td>
 <td class="property_name"><a class="link" href="GstPad.html#GstPad--template" title="The “template” property">template</a></td>
@@ -1316,12 +1339,12 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstPad.html#GstPad-linked" title="The “linked” signal">linked</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstPad.html#GstPad-unlinked" title="The “unlinked” signal">unlinked</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -1465,9 +1488,8 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.2.6"></a><h4>Returns</h4>
 <p> a static string with the name of the pad-link return.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1539,7 +1561,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.5.6"></a><h4>Returns</h4>
 <p> a static string with the name of the flow return.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1567,7 +1588,6 @@
 <a name="id-1.3.33.10.6.6"></a><h4>Returns</h4>
 <p> the quark associated with the flow return or 0 if an
 invalid return was specified.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1595,7 +1615,6 @@
 <a name="id-1.3.33.10.7.6"></a><h4>Returns</h4>
 <p> short mnemonic for pad mode <em class="parameter"><code>mode</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1633,9 +1652,8 @@
 <a name="id-1.3.33.10.8.6"></a><h4>Returns</h4>
 <p> <a class="link" href="GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> on success, <a class="link" href="GstPad.html#GST-FLOW-FLUSHING:CAPS"><span class="type">GST_FLOW_FLUSHING</span></a> when the pad
 was flushing or <a class="link" href="GstPad.html#GST-FLOW-EOS:CAPS"><span class="type">GST_FLOW_EOS</span></a> when the pad was EOS.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1687,7 +1705,6 @@
 <a name="id-1.3.33.10.10.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstPad.html#GstPadDirection" title="enum GstPadDirection"><span class="type">GstPadDirection</span></a> of the pad.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1818,7 +1835,6 @@
 <p> A result code indicating if the connection worked or
 what went wrong.</p>
 <p>MT Safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1866,7 +1882,6 @@
 <a name="id-1.3.33.10.15.8"></a><h4>Returns</h4>
 <p> A result code indicating if the connection worked or
 what went wrong.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1904,7 +1919,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pads were unlinked. This function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
 the pads were not linked together.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1933,7 +1947,6 @@
 <a name="id-1.3.33.10.17.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is linked, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1969,7 +1982,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pads can be linked.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2035,7 +2047,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.20.6"></a><h4>Returns</h4>
 <p> the current caps of the pad with incremented ref-count.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2150,7 +2161,6 @@
 <a name="id-1.3.33.10.24.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>pad</code></em>
 has caps associated with it.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2247,7 +2257,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.26.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the iteration should continue</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2316,7 +2325,6 @@
 <a name="id-1.3.33.10.28.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is active.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2340,7 +2348,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2521,7 +2529,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.43.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstPadProbeReturn" title="enum GstPadProbeReturn"><span class="type">GstPadProbeReturn</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2578,10 +2585,9 @@
 <a name="id-1.3.33.10.44.6"></a><h4>Returns</h4>
 <p> an id or 0 if no probe is pending. The id can be used to remove the
 probe with <a class="link" href="GstPad.html#gst-pad-remove-probe" title="gst_pad_remove_probe ()"><code class="function">gst_pad_remove_probe()</code></a>. When using GST_PAD_PROBE_TYPE_IDLE it can
-happend that the probe can be run immediately and if the probe returns
+happen that the probe can be run immediately and if the probe returns
 GST_PAD_PROBE_REMOVE this functions returns 0.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2644,7 +2650,6 @@
 <a name="id-1.3.33.10.46.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is blocked.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2673,7 +2678,6 @@
 <a name="id-1.3.33.10.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is blocking.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2703,7 +2707,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.48.6"></a><h4>Returns</h4>
 <p> the offset.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2803,7 +2806,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p> the name of the element. </p></td>
+<td class="parameter_description"><p> the name of the pad. </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>
@@ -2842,7 +2845,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p>the name of the element</p></td>
+<td class="parameter_description"><p>the name of the pad</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -2970,8 +2973,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> that is chained, not <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> that is chained, not <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -2979,7 +2982,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.55.8"></a><h4>Returns</h4>
 <p> <a class="link" href="GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> for success</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3098,8 +3100,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>list</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a> that is chained, not <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the <a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a> that is chained, not <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -3107,7 +3109,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.58.8"></a><h4>Returns</h4>
 <p> <a class="link" href="GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> for success</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3189,7 +3190,6 @@
 <a name="id-1.3.33.10.59.12"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the pad.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3372,7 +3372,6 @@
 . Any other
 return value leaves <em class="parameter"><code>buffer</code></em>
 undefined.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3482,8 +3481,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>event</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> to handle.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> to handle. </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>
@@ -3491,7 +3490,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.65.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could handle the event.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3618,7 +3616,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.68.6"></a><h4>Returns</h4>
 <p> the result of the link with the specified peer.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3768,7 +3765,6 @@
 <a name="id-1.3.33.10.72.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>query</code></em>
 could be executed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3810,7 +3806,6 @@
 <a name="id-1.3.33.10.73.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>query</code></em>
 could be executed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3927,7 +3922,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.76.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could be activated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4052,7 +4046,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.79.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could be activated or deactivated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4082,7 +4075,6 @@
 <a name="id-1.3.33.10.80.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is the GST_PAD_FLAG_NEED_RECONFIGURE flag is set on <em class="parameter"><code>pad</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4112,7 +4104,6 @@
 <a name="id-1.3.33.10.81.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is the GST_PAD_FLAG_NEED_RECONFIGURE flag was set on <em class="parameter"><code>pad</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4182,7 +4173,6 @@
 <a name="id-1.3.33.10.83.9"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the peer pad.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4222,7 +4212,6 @@
 <a name="id-1.3.33.10.84.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event was handled.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4271,7 +4260,6 @@
 <a name="id-1.3.33.10.85.9"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the peer pad.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4352,7 +4340,6 @@
 <a name="id-1.3.33.10.86.11"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the peer pad.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4397,7 +4384,6 @@
 <a name="id-1.3.33.10.87.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation was successful.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4452,7 +4438,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.88.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event was handled.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4466,7 +4451,7 @@
 <p>The EOS event will pause the task associated with <em class="parameter"><code>pad</code></em>
  before it is forwarded
 to all internally linked pads,</p>
-<p>The the event is sent to all pads internally linked to <em class="parameter"><code>pad</code></em>
+<p>The event is sent to all pads internally linked to <em class="parameter"><code>pad</code></em>
 . This function
 takes ownership of <em class="parameter"><code>event</code></em>
 .</p>
@@ -4501,7 +4486,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.89.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event was sent successfully.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4543,7 +4527,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.90.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4583,7 +4566,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed. This function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 if <em class="parameter"><code>pad</code></em>
 has no peer.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4631,7 +4613,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.92.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query was performed successfully.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4672,7 +4653,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.93.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4714,7 +4694,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.94.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4770,7 +4749,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.95.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4805,7 +4783,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.96.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad can accept the caps.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4900,7 +4877,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.98.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4943,7 +4919,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.99.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5001,7 +4976,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.100.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5042,7 +5016,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the peer of <em class="parameter"><code>pad</code></em>
 can accept the caps or <em class="parameter"><code>pad</code></em>
 has no peer.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5091,7 +5064,6 @@
 or, when <em class="parameter"><code>filter</code></em>
 is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, ANY
 caps.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5210,7 +5182,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.105.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5326,7 +5297,6 @@
 <p> a new <a class="link" href="gstreamer-GstIterator.html#GstIterator" title="struct GstIterator"><span class="type">GstIterator</span></a> that will iterate over all pads that are
 linked to the given pad on the inside of the parent element.</p>
 <p>the caller must call <a class="link" href="gstreamer-GstIterator.html#gst-iterator-free" title="gst_iterator_free ()"><code class="function">gst_iterator_free()</code></a> after usage.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5525,7 +5495,6 @@
 <a name="id-1.3.33.10.113.8"></a><h4>Returns</h4>
 <p> A stream-id for <em class="parameter"><code>pad</code></em>
 . <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5593,7 +5562,6 @@
 <a name="id-1.3.33.10.114.7"></a><h4>Returns</h4>
 <p> A stream-id for <em class="parameter"><code>pad</code></em>
 . <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5662,7 +5630,6 @@
 <a name="id-1.3.33.10.115.7"></a><h4>Returns</h4>
 <p> A stream-id for <em class="parameter"><code>pad</code></em>
 . <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5700,7 +5667,7 @@
 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>]</span></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -5735,7 +5702,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.117.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the dispatching procedure has to be stopped.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5784,7 +5750,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.118.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if one of the dispatcher functions returned <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5836,7 +5801,6 @@
 <a name="id-1.3.33.10.119.10"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the pad.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5887,7 +5851,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.120.11"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> from the pad.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5942,7 +5905,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.121.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be started.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -5973,7 +5935,6 @@
 <a name="id-1.3.33.10.122.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be paused or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the pad
 has no task.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -6007,7 +5968,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.123.8"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be stopped or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on error.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -6051,7 +6011,6 @@
 <a name="id-1.3.33.10.124.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation was successful.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -6291,7 +6250,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -6628,7 +6587,6 @@
 <a name="id-1.3.33.10.148.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is linked to another pad. Use <a class="link" href="GstPad.html#gst-pad-is-linked" title="gst_pad_is_linked ()"><code class="function">gst_pad_is_linked()</code></a>
 instead.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -6654,7 +6612,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.149.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is a source pad (i.e. produces data).</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -6680,7 +6637,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.150.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad is a sink pad (i.e. consumes data).</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -6706,7 +6662,6 @@
 <div class="refsect3">
 <a name="id-1.3.33.10.151.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad has been activated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -7250,6 +7205,81 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GST-PAD-IS-ACCEPT-TEMPLATE:CAPS"></a><h3>GST_PAD_IS_ACCEPT_TEMPLATE()</h3>
+<pre class="programlisting">#define GST_PAD_IS_ACCEPT_TEMPLATE(pad)    (GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_ACCEPT_TEMPLATE))
+</pre>
+<p>Check if the pad's accept caps operation will use the pad template caps.
+The default accept-caps will do a query caps to get the caps, which might
+be querying downstream causing unnecessary overhead. It is recommended to
+implement a proper accept-caps query handler or to use this flag to prevent
+recursive accept-caps handling.</p>
+<div class="refsect3">
+<a name="id-1.3.33.10.174.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>pad</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>
+<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-PAD-SET-ACCEPT-TEMPLATE:CAPS"></a><h3>GST_PAD_SET_ACCEPT_TEMPLATE()</h3>
+<pre class="programlisting">#define GST_PAD_SET_ACCEPT_TEMPLATE(pad)   (GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_ACCEPT_TEMPLATE))
+</pre>
+<p>Set <em class="parameter"><code>pad</code></em>
+ to by default use the pad template caps to compare with
+the accept caps instead of using a caps query result.</p>
+<div class="refsect3">
+<a name="id-1.3.33.10.175.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>pad</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>
+<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-PAD-UNSET-ACCEPT-TEMPLATE:CAPS"></a><h3>GST_PAD_UNSET_ACCEPT_TEMPLATE()</h3>
+<pre class="programlisting">#define GST_PAD_UNSET_ACCEPT_TEMPLATE(pad) (GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_ACCEPT_TEMPLATE))
+</pre>
+<p>Unset accept template flag.</p>
+<div class="refsect3">
+<a name="id-1.3.33.10.176.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>pad</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>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstPad.other_details"></a><h2>Types and Values</h2>
@@ -7443,6 +7473,16 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-PAD-FLAG-ACCEPT-TEMPLATE:CAPS"></a>GST_PAD_FLAG_ACCEPT_TEMPLATE</p></td>
+<td class="enum_member_description">
+<p>the default accept-caps handler will use
+                     the template pad caps instead of query caps to
+                     compare with the accept caps. Use this in combination
+                     with <a class="link" href="GstPad.html#GST-PAD-FLAG-ACCEPT-INTERSECT:CAPS"><code class="literal">GST_PAD_FLAG_ACCEPT_INTERSECT</code></a>. (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-PAD-FLAG-LAST:CAPS"></a>GST_PAD_FLAG_LAST</p></td>
 <td class="enum_member_description">
 <p>offset to define more flags</p>
@@ -7765,31 +7805,50 @@
 <td class="enum_member_name"><p><a name="GST-PAD-PROBE-DROP:CAPS"></a>GST_PAD_PROBE_DROP</p></td>
 <td class="enum_member_description">
 <p>drop data in data probes. For push mode this means that
-       the data item is not sent downstream. For pull mode, it means that the
-       data item is not passed upstream. In both cases, this result code
-       means that <a class="link" href="GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is returned to the caller.</p>
+       the data item is not sent downstream. For pull mode, it means that
+       the data item is not passed upstream. In both cases, no more probes
+       are called and <a class="link" href="GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is returned to the caller.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="GST-PAD-PROBE-OK:CAPS"></a>GST_PAD_PROBE_OK</p></td>
 <td class="enum_member_description">
-<p>normal probe return value</p>
+<p>normal probe return value. This leaves the probe in
+       place, and defers decisions about dropping or passing data to other
+       probes, if any. If there are no other probes, the default behaviour
+       for the probe type applies (block for blocking probes, and pass for
+       non-blocking probes).</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="GST-PAD-PROBE-REMOVE:CAPS"></a>GST_PAD_PROBE_REMOVE</p></td>
 <td class="enum_member_description">
-<p>remove probe</p>
+<p>remove this probe.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="GST-PAD-PROBE-PASS:CAPS"></a>GST_PAD_PROBE_PASS</p></td>
 <td class="enum_member_description">
-<p>pass the data item in the block probe and block on
-                        the next item</p>
+<p>pass the data item in the block probe and block on the
+       next item.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-PAD-PROBE-HANDLED:CAPS"></a>GST_PAD_PROBE_HANDLED</p></td>
+<td class="enum_member_description">
+<p>Data has been handled in the probe and will not be
+       forwarded further. For events and buffers this is the same behaviour as
+       <em class="parameter"><code>GST_PAD_PROBE_DROP</code></em>
+ (except that in this case you need to unref the buffer
+       or event yourself). For queries it will also return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to the caller.
+       The probe can also modify the <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> value by using the
+       <code class="function"><GTKDOCLINK HREF="GST-PAD-PROBE-INFO-FLOW-RETURN:CAPS"><code class="function">GST_PAD_PROBE_INFO_FLOW_RETURN()</code></code></GTKDOCLINK> accessor.
+       Note that the resulting query must contain valid entries.
+       Since: 1.6</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -8052,6 +8111,16 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPad--offset"></a><h3>The <code class="literal">“offset”</code> property</h3>
+<pre class="programlisting">  “offset”                   <span class="type">gint64</span></pre>
+<p>The offset that will be applied to the running time of the pad.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+<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="GstPad--template"></a><h3>The <code class="literal">“template”</code> property</h3>
 <pre class="programlisting">  “template”                 <a class="link" href="GstPadTemplate.html" title="GstPadTemplate"><span class="type">GstPadTemplate</span></a> *</pre>
 <p>The GstPadTemplate of this pad.</p>
@@ -8094,7 +8163,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -8131,7 +8200,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -8140,7 +8209,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstPadTemplate.html b/docs/gst/html/GstPadTemplate.html
index 7c16a85..c4d5ed5 100644
--- a/docs/gst/html/GstPadTemplate.html
+++ b/docs/gst/html/GstPadTemplate.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPadTemplate</title>
+<title>GstPadTemplate: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPad.html" title="GstPad">
 <link rel="next" href="gstreamer-GstParamSpec.html" title="GstParamSpec">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -158,7 +158,7 @@
 <tbody><tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstPadTemplate.html#GstPadTemplate-pad-created" title="The “pad-created” signal">pad-created</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -766,7 +766,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -775,7 +775,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstPipeline.html b/docs/gst/html/GstPipeline.html
index 95235fd..eb2b1ff 100644
--- a/docs/gst/html/GstPipeline.html
+++ b/docs/gst/html/GstPipeline.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPipeline</title>
+<title>GstPipeline: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstParse.html" title="GstParse">
 <link rel="next" href="GstPlugin.html" title="GstPlugin">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -72,6 +72,14 @@
 <a class="link" href="GstClock.html" title="GstClock"><span class="returnvalue">GstClock</span></a> *
 </td>
 <td class="function_name">
+<a class="link" href="GstPipeline.html#gst-pipeline-get-pipeline-clock" title="gst_pipeline_get_pipeline_clock ()">gst_pipeline_get_pipeline_clock</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstClock.html" title="GstClock"><span class="returnvalue">GstClock</span></a> *
+</td>
+<td class="function_name">
 <a class="link" href="GstPipeline.html#gst-pipeline-get-clock" title="gst_pipeline_get_clock ()">gst_pipeline_get_clock</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -123,6 +131,22 @@
 <a class="link" href="GstPipeline.html#gst-pipeline-get-delay" title="gst_pipeline_get_delay ()">gst_pipeline_get_delay</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="GstPipeline.html#gst-pipeline-set-latency" title="gst_pipeline_set_latency ()">gst_pipeline_set_latency</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstPipeline.html#gst-pipeline-get-latency" title="gst_pipeline_get_latency ()">gst_pipeline_get_latency</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -145,6 +169,11 @@
 <td class="property_name"><a class="link" href="GstPipeline.html#GstPipeline--delay" title="The “delay” property">delay</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="GstPipeline.html#GstPipeline--latency" title="The “latency” property">latency</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -297,8 +326,9 @@
 <p>Set the clock for <em class="parameter"><code>pipeline</code></em>
 . The clock will be distributed
 to all the elements managed by the pipeline.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.37.10.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -320,22 +350,23 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.37.10.4.6"></a><h4>Returns</h4>
+<a name="id-1.3.37.10.4.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the clock could be set on the pipeline. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
 some element did not accept the clock.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-pipeline-get-clock"></a><h3>gst_pipeline_get_clock ()</h3>
+<a name="gst-pipeline-get-pipeline-clock"></a><h3>gst_pipeline_get_pipeline_clock ()</h3>
 <pre class="programlisting"><a class="link" href="GstClock.html" title="GstClock"><span class="returnvalue">GstClock</span></a> *
-gst_pipeline_get_clock (<em class="parameter"><code><a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a> *pipeline</code></em>);</pre>
+gst_pipeline_get_pipeline_clock (<em class="parameter"><code><a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a> *pipeline</code></em>);</pre>
 <p>Gets the current clock used by <em class="parameter"><code>pipeline</code></em>
 .</p>
+<p>Unlike <a class="link" href="GstElement.html#gst-element-get-clock" title="gst_element_get_clock ()"><code class="function">gst_element_get_clock()</code></a>, this function will always return a
+clock, even if the pipeline is not in the PLAYING state.</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -350,7 +381,41 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.37.10.5.6"></a><h4>Returns</h4>
+<a name="id-1.3.37.10.5.7"></a><h4>Returns</h4>
+<p> a <a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a>, unref after usage. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<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-pipeline-get-clock"></a><h3>gst_pipeline_get_clock ()</h3>
+<pre class="programlisting"><a class="link" href="GstClock.html" title="GstClock"><span class="returnvalue">GstClock</span></a> *
+gst_pipeline_get_clock (<em class="parameter"><code><a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a> *pipeline</code></em>);</pre>
+<p>Gets the current clock used by <em class="parameter"><code>pipeline</code></em>
+. Users of object
+oriented languages should use <a class="link" href="GstPipeline.html#gst-pipeline-get-pipeline-clock" title="gst_pipeline_get_pipeline_clock ()"><code class="function">gst_pipeline_get_pipeline_clock()</code></a>
+to avoid confusion with <a class="link" href="GstElement.html#gst-element-get-clock" title="gst_element_get_clock ()"><code class="function">gst_element_get_clock()</code></a> which has a different behavior.</p>
+<p>Unlike <a class="link" href="GstElement.html#gst-element-get-clock" title="gst_element_get_clock ()"><code class="function">gst_element_get_clock()</code></a>, this function will always return a
+clock, even if the pipeline is not in the PLAYING state.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.3.37.10.6.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>pipeline</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.37.10.6.8"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstClock.html" title="GstClock"><span class="type">GstClock</span></a>, unref after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -371,7 +436,7 @@
 the pipeline run as fast as possible.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.6.7"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.7.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -406,7 +471,7 @@
 pipeline clock selection algorithm.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.7.7"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.8.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -439,7 +504,7 @@
 automatic flushing is disabled else memory leaks will be introduced.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.8.8"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.9.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -471,7 +536,7 @@
  will automatically flush messages when going to
 the NULL state.</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -486,11 +551,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.37.10.9.6"></a><h4>Returns</h4>
+<a name="id-1.3.37.10.10.6"></a><h4>Returns</h4>
 <p> whether the pipeline will automatically flush its bus when
 going from READY to NULL state or not.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -510,7 +574,7 @@
 used.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.10.7"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.11.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -539,7 +603,7 @@
 gst_pipeline_get_delay (<em class="parameter"><code><a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a> *pipeline</code></em>);</pre>
 <p>Get the configured delay (see <a class="link" href="GstPipeline.html#gst-pipeline-set-delay" title="gst_pipeline_set_delay ()"><code class="function">gst_pipeline_set_delay()</code></a>).</p>
 <div class="refsect3">
-<a name="id-1.3.37.10.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.37.10.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -554,12 +618,75 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.37.10.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.37.10.12.6"></a><h4>Returns</h4>
 <p> The configured delay.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-pipeline-set-latency"></a><h3>gst_pipeline_set_latency ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_pipeline_set_latency (<em class="parameter"><code><a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a> *pipeline</code></em>,
+                          <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> latency</code></em>);</pre>
+<p>Sets the latency that should be configured on the pipeline. Setting
+GST_CLOCK_TIME_NONE will restore the default behaviour of using the minimum
+latency from the LATENCY query. Setting this is usually not required and
+the pipeline will figure out an appropriate latency automatically.</p>
+<p>Setting a too low latency, especially lower than the minimum latency from
+the LATENCY query, will most likely cause the pipeline to fail.</p>
+<div class="refsect3">
+<a name="id-1.3.37.10.13.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>pipeline</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>latency</p></td>
+<td class="parameter_description"><p>latency to configure</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-pipeline-get-latency"></a><h3>gst_pipeline_get_latency ()</h3>
+<pre class="programlisting"><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_pipeline_get_latency (<em class="parameter"><code><a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a> *pipeline</code></em>);</pre>
+<p>Gets the latency that should be configured on the pipeline. See
+<a class="link" href="GstPipeline.html#gst-pipeline-set-latency" title="gst_pipeline_set_latency ()"><code class="function">gst_pipeline_set_latency()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.37.10.14.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>pipeline</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.37.10.14.6"></a><h4>Returns</h4>
+<p> Latency to configure on the pipeline or GST_CLOCK_TIME_NONE</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstPipeline.other_details"></a><h2>Types and Values</h2>
@@ -659,6 +786,15 @@
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstPipeline--latency"></a><h3>The <code class="literal">“latency”</code> property</h3>
+<pre class="programlisting">  “latency”                  <span class="type">guint64</span></pre>
+<p>Latency to configure on the pipeline. See <a class="link" href="GstPipeline.html#gst-pipeline-set-latency" title="gst_pipeline_set_latency ()"><code class="function">gst_pipeline_set_latency()</code></a>.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 18446744073709551615</p>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstPipeline.see-also"></a><h2>See Also</h2>
@@ -666,7 +802,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstPlugin.html b/docs/gst/html/GstPlugin.html
index ed21bc1..2318182 100644
--- a/docs/gst/html/GstPlugin.html
+++ b/docs/gst/html/GstPlugin.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPlugin</title>
+<title>GstPlugin: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPipeline.html" title="GstPipeline">
 <link rel="next" href="GstPluginFeature.html" title="GstPluginFeature">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -324,7 +324,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.2.5"></a><h4>Returns</h4>
 <p> The error quark used in GError messages</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -354,7 +353,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.3.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if plugin initialised successfully</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -393,7 +391,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.4.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if plugin initialised successfully</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -492,7 +489,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -518,7 +515,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -553,7 +550,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for a positive match, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -580,7 +576,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.9.6"></a><h4>Returns</h4>
 <p> the name of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -607,7 +602,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.10.6"></a><h4>Returns</h4>
 <p> the long name of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -634,7 +628,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.11.6"></a><h4>Returns</h4>
 <p> the filename of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -661,7 +654,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.12.6"></a><h4>Returns</h4>
 <p> the license of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -688,7 +680,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.13.6"></a><h4>Returns</h4>
 <p> the package of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -715,7 +706,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.14.6"></a><h4>Returns</h4>
 <p> the origin of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -742,7 +732,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.15.6"></a><h4>Returns</h4>
 <p> the source of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -769,7 +758,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.16.6"></a><h4>Returns</h4>
 <p> the version of the plugin</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -829,7 +817,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is loaded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1106,7 +1093,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.25.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the plugin was registered correctly, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1207,7 +1193,6 @@
 <div class="refsect3">
 <a name="id-1.3.38.8.26.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the plugin was registered correctly, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1480,7 +1465,7 @@
 format (or rather, a subset thereof), or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. Allowed are the
 following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with
 'T' a separator and 'Z' indicating UTC/Zulu time). This field
-should be set via the <code class="literal">GST_PACKAGE_RELEASE_DATETIME</code>
+should be set via the GST_PACKAGE_RELEASE_DATETIME
 preprocessor macro. </p></td>
 <td class="struct_member_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>
@@ -1581,7 +1566,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstPluginFeature.html b/docs/gst/html/GstPluginFeature.html
index 617b18a..6611495 100644
--- a/docs/gst/html/GstPluginFeature.html
+++ b/docs/gst/html/GstPluginFeature.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPluginFeature</title>
+<title>GstPluginFeature: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPlugin.html" title="GstPlugin">
 <link rel="next" href="gstreamer-GstPoll.html" title="GstPoll">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -214,7 +214,6 @@
 <div class="refsect3">
 <a name="id-1.3.39.8.2.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for a positive match, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -301,7 +300,6 @@
 <div class="refsect3">
 <a name="id-1.3.39.8.5.6"></a><h4>Returns</h4>
 <p> The rank of the feature</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -392,7 +390,7 @@
 plugin. </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>]</span></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -574,7 +572,6 @@
 <a name="id-1.3.39.8.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the plugin feature has at least
 the required version, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -613,7 +610,6 @@
 equal but the name of p1 comes before the name of p2; zero if the rank
 and names are equal; positive value if the rank of p1 &lt; the rank of p2 or the
 ranks are equal but the name of p2 comes before the name of p1</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -682,7 +678,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstPreset.html b/docs/gst/html/GstPreset.html
index dcad6b2..56f211d 100644
--- a/docs/gst/html/GstPreset.html
+++ b/docs/gst/html/GstPreset.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPreset</title>
+<title>GstPreset: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstPoll.html" title="GstPoll">
-<link rel="next" href="GstQuery.html" title="GstQuery">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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="gstreamer-GstPoll.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="GstQuery.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-GstProtectionMeta.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="GstPreset"></a><div class="titlepage"></div>
@@ -119,6 +119,14 @@
 <a class="link" href="GstPreset.html#gst-preset-get-app-dir" title="gst_preset_get_app_dir ()">gst_preset_get_app_dir</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstPreset.html#gst-preset-is-editable" title="gst_preset_is_editable ()">gst_preset_is_editable</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -164,7 +172,10 @@
 Wrapper plugins will override most methods to implement support for the
 native preset format of those wrapped plugins.
 One method that is useful to be overridden is <a class="link" href="GstPreset.html#gst-preset-get-property-names" title="gst_preset_get_property_names ()"><code class="function">gst_preset_get_property_names()</code></a>.
-With that one can control which properties are saved and in which order.</p>
+With that one can control which properties are saved and in which order.
+When implementing support for read-only presets, one should set the vmethods
+for <a class="link" href="GstPreset.html#gst-preset-save-preset" title="gst_preset_save_preset ()"><code class="function">gst_preset_save_preset()</code></a> and <a class="link" href="GstPreset.html#gst-preset-delete-preset" title="gst_preset_delete_preset ()"><code class="function">gst_preset_delete_preset()</code></a> to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
+Applications can use <a class="link" href="GstPreset.html#gst-preset-is-editable" title="gst_preset_is_editable ()"><code class="function">gst_preset_is_editable()</code></a> to check for that.</p>
 <p>The default implementation supports presets located in a system directory, 
 application specific directory and in the users home directory. When getting
 a list of presets individual presets are read and overlaid in 1) system, 
@@ -260,7 +271,6 @@
 <a name="id-1.3.41.8.4.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if e.g. there is no preset with that <em class="parameter"><code>name</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -297,7 +307,6 @@
 <div class="refsect3">
 <a name="id-1.3.41.8.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -341,7 +350,6 @@
 <a name="id-1.3.41.8.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if e.g. there is no preset with <em class="parameter"><code>old_name</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -377,7 +385,6 @@
 <a name="id-1.3.41.8.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if e.g. there is no preset with that <em class="parameter"><code>name</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -430,7 +437,6 @@
 <a name="id-1.3.41.8.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if e.g. there is no preset with that <em class="parameter"><code>name</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -483,7 +489,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if e.g. there is no preset with that <em class="parameter"><code>name</code></em>
 or no value for the given <em class="parameter"><code>tag</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -512,7 +517,6 @@
 <div class="refsect3">
 <a name="id-1.3.41.8.10.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the dir already has been set</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -529,6 +533,33 @@
 <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>]</span></p>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-preset-is-editable"></a><h3>gst_preset_is_editable ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_preset_is_editable (<em class="parameter"><code><a class="link" href="GstPreset.html" title="GstPreset"><span class="type">GstPreset</span></a> *preset</code></em>);</pre>
+<p>Check if one can add new presets, change existing ones and remove presets.</p>
+<div class="refsect3">
+<a name="id-1.3.41.8.12.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>preset</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> that implements <a class="link" href="GstPreset.html" title="GstPreset"><span class="type">GstPreset</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.41.8.12.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if presets are editable or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if they are static</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstPreset.other_details"></a><h2>Types and Values</h2>
@@ -622,7 +653,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstQuery.html b/docs/gst/html/GstQuery.html
index 02bf83c..6045a57 100644
--- a/docs/gst/html/GstQuery.html
+++ b/docs/gst/html/GstQuery.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstQuery</title>
+<title>GstQuery: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPreset.html" title="GstPreset">
+<link rel="prev" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">
 <link rel="next" href="GstRegistry.html" title="GstRegistry">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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="GstPreset.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-GstProtectionMeta.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="GstRegistry.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -892,7 +892,7 @@
 <p>when making custom query types, use this macro with the num and
 the given flags</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -921,7 +921,7 @@
 </pre>
 <p>Get the <a class="link" href="GstQuery.html#GstQueryType" title="enum GstQueryType"><span class="type">GstQueryType</span></a> of the query.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -943,7 +943,7 @@
 </pre>
 <p>Get a constant string representation of the <a class="link" href="GstQuery.html#GstQueryType" title="enum GstQueryType"><span class="type">GstQueryType</span></a> of the query.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -965,7 +965,7 @@
 </pre>
 <p>Check if an query can travel upstream.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -987,7 +987,7 @@
 </pre>
 <p>Check if an query can travel downstream.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1009,7 +1009,7 @@
 </pre>
 <p>Check if an query is serialized with the data stream.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1032,7 +1032,7 @@
 <p>Gets the <a class="link" href="GstQuery.html#GstQueryTypeFlags" title="enum GstQueryTypeFlags"><span class="type">GstQueryTypeFlags</span></a> associated with <em class="parameter"><code>type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1047,9 +1047,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.8.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.8.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstQuery.html#GstQueryTypeFlags" title="enum GstQueryTypeFlags"><span class="type">GstQueryTypeFlags</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1059,7 +1058,7 @@
 gst_query_type_get_name (<em class="parameter"><code><a class="link" href="GstQuery.html#GstQueryType" title="enum GstQueryType"><span class="type">GstQueryType</span></a> type</code></em>);</pre>
 <p>Get a printable name for the given query type. Do not modify or free.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1074,9 +1073,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.9.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.9.6"></a><h4>Returns</h4>
 <p> a reference to the static name of the query.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1086,7 +1084,7 @@
 gst_query_type_to_quark (<em class="parameter"><code><a class="link" href="GstQuery.html#GstQueryType" title="enum GstQueryType"><span class="type">GstQueryType</span></a> type</code></em>);</pre>
 <p>Get the unique quark for the given query type.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1101,9 +1099,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.10.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.10.6"></a><h4>Returns</h4>
 <p> the quark associated with the query type</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1113,7 +1110,7 @@
 gst_query_ref (<em class="parameter"><code><a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> *q</code></em>);</pre>
 <p>Increases the refcount of the given query by one.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1128,10 +1125,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.11.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>q</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1142,7 +1138,7 @@
 <p>Decreases the refcount of the query. If the refcount reaches 0, the query
 will be freed.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1165,7 +1161,7 @@
 <p>Copies the given query using the copy function of the parent <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.13.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.13.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1180,7 +1176,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.13.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.13.7"></a><h4>Returns</h4>
 <p> a new copy of <em class="parameter"><code>q</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1193,7 +1189,7 @@
 </pre>
 <p>Makes a writable query from the given query.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1208,7 +1204,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.14.6"></a><h4>Returns</h4>
 <p> a new writable query (possibly same as <em class="parameter"><code>q</code></em>
 ). </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1221,7 +1217,7 @@
 </pre>
 <p>Tests if you can safely write data into a query's structure.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1250,7 +1246,7 @@
  or the <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> pointed to by <em class="parameter"><code>old_query</code></em>
  may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.16.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.16.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1275,11 +1271,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.16.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.16.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>new_query</code></em>
 was different from <em class="parameter"><code>old_query</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1291,7 +1286,7 @@
 <em class="parameter"><code>query</code></em>
  so that the returned structure is guaranteed to be writable.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1306,7 +1301,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.17.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> of the query. The structure is
 still owned by the query and will therefore be freed when the query
 is unreffed. </p>
@@ -1323,7 +1318,7 @@
 when done with it.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.18.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.18.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1345,7 +1340,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.18.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.18.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1357,7 +1352,7 @@
 gst_query_get_structure (<em class="parameter"><code><a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> *query</code></em>);</pre>
 <p>Get the structure of a query.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1372,7 +1367,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.19.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> of the query. The structure is
 still owned by the query and will therefore be freed when the query
 is unreffed. </p>
@@ -1391,7 +1386,7 @@
 one format and another.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.20.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.20.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1418,7 +1413,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.20.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.20.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1434,7 +1429,7 @@
                        <em class="parameter"><code><span class="type">gint64</span> dest_value</code></em>);</pre>
 <p>Answer a convert query by setting the requested values.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1487,7 +1482,7 @@
 and <em class="parameter"><code>dest_value</code></em>
  may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, in which case that value is omitted.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1537,7 +1532,7 @@
 of playback in the streams, in some format.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.23.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.23.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1552,7 +1547,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.23.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.23.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1566,7 +1561,7 @@
                         <em class="parameter"><code><span class="type">gint64</span> cur</code></em>);</pre>
 <p>Answer a position query by setting the requested value in the given format.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.24.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1605,7 +1600,7 @@
 into <em class="parameter"><code>cur</code></em>
 , if the respective parameters are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.25.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1643,7 +1638,7 @@
 total length of the stream.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.26.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.26.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1658,7 +1653,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.26.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.26.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1672,7 +1667,7 @@
                         <em class="parameter"><code><span class="type">gint64</span> duration</code></em>);</pre>
 <p>Answer a duration query by setting the requested value in the given format.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1711,7 +1706,7 @@
 and the value into <em class="parameter"><code>duration</code></em>
 , if the respective variables are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1750,7 +1745,7 @@
 pipeline.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.29.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.29.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1765,7 +1760,7 @@
                          <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> *max_latency</code></em>);</pre>
 <p>Parse a latency query answer.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1807,7 +1802,7 @@
                        <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> max_latency</code></em>);</pre>
 <p>Answer a latency query by setting the requested values in the given format.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1848,7 +1843,7 @@
 the stream.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.32.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.32.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1863,7 +1858,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.32.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.32.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1880,7 +1875,7 @@
 <p>Set the seeking query result fields in <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1933,7 +1928,7 @@
 other results into the passed parameters, if the respective parameters
 are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
 <div class="refsect3">
-<a name="id-1.3.42.8.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1981,7 +1976,7 @@
 the stream.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.35.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.35.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -1998,7 +1993,7 @@
 must be equal to <em class="parameter"><code>n_formats</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2040,7 +2035,7 @@
  array must be equal to <em class="parameter"><code>n_formats</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2078,7 +2073,7 @@
 <p>Parse the number of formats in the formats <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.38.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2115,7 +2110,7 @@
  will be
 set to GST_FORMAT_UNDEFINED.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.39.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.39.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2152,7 +2147,7 @@
 currently configured segment for playback.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.40.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.40.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2167,7 +2162,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.40.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.40.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -2200,7 +2195,7 @@
 <em class="parameter"><code>start_value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.41.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.41.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2256,7 +2251,7 @@
  may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, which will cause this value to be omitted.</p>
 <p>See <a class="link" href="GstQuery.html#gst-query-set-segment" title="gst_query_set_segment ()"><code class="function">gst_query_set_segment()</code></a> for an explanation of the function arguments.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.42.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.42.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2318,7 +2313,7 @@
 greatly reduce the amount of processing an element needs to do.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.43.9"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.43.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2333,7 +2328,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.43.10"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.43.10"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -2349,7 +2344,7 @@
 <em class="parameter"><code>query</code></em>
  remains valid.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.44.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2381,7 +2376,7 @@
  result in <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.45.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.45.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2414,7 +2409,7 @@
 <em class="parameter"><code>query</code></em>
  remains valid.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2445,7 +2440,7 @@
  are accepted.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.47.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.47.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2460,7 +2455,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.47.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.47.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -2476,7 +2471,7 @@
  remains
 valid.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.48.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2508,7 +2503,7 @@
  as the result for the <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.49.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.49.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2540,7 +2535,7 @@
  and store in <em class="parameter"><code>result</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.50.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2571,7 +2566,7 @@
 a stream.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.51.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.51.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2586,7 +2581,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.51.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.51.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -2602,7 +2597,7 @@
 The <em class="parameter"><code>busy</code></em>
  indicator is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the buffering is in progress.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.52.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2640,7 +2635,7 @@
 The <em class="parameter"><code>busy</code></em>
  indicator is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the buffering is in progress.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.53.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2679,7 +2674,7 @@
 <p>Configures the buffering stats values in <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.54.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.54.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2728,7 +2723,7 @@
 <p>Extracts the buffering stats values from <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.55.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2778,7 +2773,7 @@
 <p>Set the available query result fields in <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.56.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2832,7 +2827,7 @@
 other results into the passed parameters, if the respective parameters
 are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
 <div class="refsect3">
-<a name="id-1.3.42.8.57.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.57.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2884,7 +2879,7 @@
 start position of the array should be inferior to <em class="parameter"><code>start</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.58.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.58.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2911,9 +2906,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.58.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.58.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating if the range was added or not.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2924,7 +2918,7 @@
 <p>Retrieve the number of values currently stored in the
 buffered-ranges array of the query's structure.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.59.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.59.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2939,9 +2933,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.59.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.59.6"></a><h4>Returns</h4>
 <p> the range array size as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2956,7 +2949,7 @@
 at the <em class="parameter"><code>index</code></em>
  of the buffered ranges array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.60.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.60.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2988,9 +2981,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.60.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.60.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating if the parsing succeeded.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3003,7 +2995,7 @@
 that is used by the source or sink.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.61.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.61.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -3019,7 +3011,7 @@
 allocated string, if the respective parameters are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
 Free the string with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.62.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.62.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3050,7 +3042,7 @@
                    <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
 <p>Answer a URI query by setting the requested URI.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.63.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.63.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3083,7 +3075,7 @@
 allocated string, if the respective parameters are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
 Free the string with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.64.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.64.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3105,7 +3097,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3115,7 +3107,7 @@
                                <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
 <p>Answer a URI query by setting the requested URI redirection.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.65.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.65.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3136,7 +3128,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3151,7 +3143,7 @@
 applications should update their internal storage of the URI, otherwise
 they should make all future requests to the original URI.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.66.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.66.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3173,7 +3165,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3185,7 +3177,7 @@
 <p>Answer a URI query by setting the requested URI redirection
 to permanent or not.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.67.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.67.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3206,7 +3198,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3217,7 +3209,7 @@
 <p>Constructs a new query object for querying the allocation properties.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.68.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.68.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3239,7 +3231,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.68.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.68.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -3257,7 +3249,7 @@
 , if the respective parameters
 are non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.69.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.69.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3296,7 +3288,7 @@
 <p>Set the pool parameters in <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.70.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.70.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3341,7 +3333,7 @@
 <p>Retrieve the number of values currently stored in the
 pool array of the query's structure.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.71.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.71.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3356,9 +3348,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.71.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.71.6"></a><h4>Returns</h4>
 <p> the pool array size as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3376,7 +3367,7 @@
 <p>Unref <em class="parameter"><code>pool</code></em>
  with <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> when it's not needed any more.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.72.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.72.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3431,7 +3422,7 @@
 <p>Set the pool parameters in <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.73.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.73.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3482,7 +3473,7 @@
 <p>Remove the allocation pool at <em class="parameter"><code>index</code></em>
  of the allocation pool array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.74.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.74.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3503,7 +3494,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3516,7 +3507,7 @@
  and its <em class="parameter"><code>params</code></em>
  as a supported memory allocator.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.75.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.75.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3555,7 +3546,7 @@
 should be generic and allow mapping to system memory, all following
 allocators should be ordered by preference with the preferred one first.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.76.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.76.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3570,9 +3561,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.76.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.76.7"></a><h4>Returns</h4>
 <p> the allocator array size as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3587,7 +3577,7 @@
 at <em class="parameter"><code>index</code></em>
  of the allocator array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.77.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.77.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3631,7 +3621,7 @@
 at <em class="parameter"><code>index</code></em>
  of the allocator array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.78.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.78.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3672,7 +3662,7 @@
 <p>Remove the allocation param at <em class="parameter"><code>index</code></em>
  of the allocation param array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.79.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.79.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3693,7 +3683,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3707,7 +3697,7 @@
  as one of the supported metadata API to <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.80.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.80.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3742,7 +3732,7 @@
 <p>Retrieve the number of values currently stored in the
 meta API array of the query's structure.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.81.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.81.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3757,9 +3747,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.81.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.81.6"></a><h4>Returns</h4>
 <p> the metadata API array size as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3773,7 +3762,7 @@
 at <em class="parameter"><code>index</code></em>
  of the metadata API array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.82.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.82.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3800,10 +3789,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.82.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.82.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the metadata API at <em class="parameter"><code>index</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3815,7 +3803,7 @@
 <p>Remove the metadata API at <em class="parameter"><code>index</code></em>
  of the metadata API array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.83.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.83.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3851,7 +3839,7 @@
  will contain the index where the requested API and the flags can be
 found.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.84.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.84.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3878,10 +3866,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.84.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.84.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>api</code></em>
 is in the list of metadata.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3892,7 +3879,7 @@
 <p>Constructs a new query object for querying the scheduling properties.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.85.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.85.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -3908,7 +3895,7 @@
                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *align</code></em>);</pre>
 <p>Set the scheduling properties.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.86.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.86.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3956,7 +3943,7 @@
                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> align</code></em>);</pre>
 <p>Set the scheduling properties.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.87.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.87.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4003,7 +3990,7 @@
  as one of the supported scheduling modes to <em class="parameter"><code>query</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.88.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.88.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4033,7 +4020,7 @@
 <p>Retrieve the number of values currently stored in the
 scheduling mode array of the query's structure.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.89.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.89.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4048,9 +4035,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.89.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.89.6"></a><h4>Returns</h4>
 <p> the scheduling mode array size as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4063,7 +4049,7 @@
 at <em class="parameter"><code>index</code></em>
  of the scheduling modes array.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.90.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.90.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4085,10 +4071,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.90.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.90.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstPadMode" title="enum GstPadMode"><span class="type">GstPadMode</span></a> of the scheduling mode at <em class="parameter"><code>index</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4107,7 +4092,7 @@
     random access is supported, not only sequential pulls).
   </p></div>
 <div class="refsect3">
-<a name="id-1.3.42.8.91.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.91.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4129,10 +4114,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.91.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.91.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>mode</code></em>
 is in the list of scheduling modes.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4148,7 +4132,7 @@
  is set in
 query scheduling flags.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.92.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.92.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4175,12 +4159,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.92.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.92.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>mode</code></em>
 is in the list of scheduling modes
 and <em class="parameter"><code>flags</code></em>
 are compatible with query flags.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -4191,7 +4174,7 @@
 <p>Constructs a new query object for querying the drain state.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.93.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.93.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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>
@@ -4204,7 +4187,7 @@
 <p>Constructs a new query object for querying the pipeline-local context.</p>
 <p>Free-function: gst_query_unref</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.94.6"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.94.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4219,11 +4202,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.94.7"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.94.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4233,7 +4216,7 @@
                        <em class="parameter"><code><a class="link" href="GstContext.html" title="GstContext"><span class="type">GstContext</span></a> *context</code></em>);</pre>
 <p>Answer a context query by setting the requested context.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.95.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.95.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4254,7 +4237,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4267,7 +4250,7 @@
 <em class="parameter"><code>query</code></em>
  remains valid.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.96.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.96.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4288,7 +4271,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4298,7 +4281,7 @@
                               <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **context_type</code></em>);</pre>
 <p>Parse a context type from an existing GST_QUERY_CONTEXT query.</p>
 <div class="refsect3">
-<a name="id-1.3.42.8.97.5"></a><h4>Parameters</h4>
+<a name="id-1.3.43.8.97.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4320,11 +4303,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.42.8.97.6"></a><h4>Returns</h4>
+<a name="id-1.3.43.8.97.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating if the parsing succeeded.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -4339,7 +4321,7 @@
 </pre>
 <p>The <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> structure.</p>
 <div class="refsect3">
-<a name="id-1.3.42.9.2.5"></a><h4>Members</h4>
+<a name="id-1.3.43.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -4368,7 +4350,7 @@
 values. You can get the type flags of a <a class="link" href="GstQuery.html#GstQueryType" title="enum GstQueryType"><span class="type">GstQueryType</span></a> with the
 <a class="link" href="GstQuery.html#gst-query-type-get-flags" title="gst_query_type_get_flags ()"><code class="function">gst_query_type_get_flags()</code></a> function.</p>
 <div class="refsect3">
-<a name="id-1.3.42.9.3.4"></a><h4>Members</h4>
+<a name="id-1.3.43.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4413,7 +4395,7 @@
 <a name="GstQueryType"></a><h3>enum GstQueryType</h3>
 <p>Standard predefined Query types</p>
 <div class="refsect3">
-<a name="id-1.3.42.9.5.4"></a><h4>Members</h4>
+<a name="id-1.3.43.9.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4564,7 +4546,7 @@
 <a name="GstBufferingMode"></a><h3>enum GstBufferingMode</h3>
 <p>The different types of buffering methods.</p>
 <div class="refsect3">
-<a name="id-1.3.42.9.6.4"></a><h4>Members</h4>
+<a name="id-1.3.43.9.6.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4609,7 +4591,7 @@
 <a name="GstSchedulingFlags"></a><h3>enum GstSchedulingFlags</h3>
 <p>The different scheduling flags.</p>
 <div class="refsect3">
-<a name="id-1.3.42.9.7.4"></a><h4>Members</h4>
+<a name="id-1.3.43.9.7.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4649,7 +4631,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstRegistry.html b/docs/gst/html/GstRegistry.html
index 2e8518d..4d3913d 100644
--- a/docs/gst/html/GstRegistry.html
+++ b/docs/gst/html/GstRegistry.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstRegistry</title>
+<title>GstRegistry: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstQuery.html" title="GstQuery">
 <link rel="next" href="GstSegment.html" title="GstSegment">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -208,12 +208,12 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstRegistry.html#GstRegistry-feature-added" title="The “feature-added” signal">feature-added</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="GstRegistry.html#GstRegistry-plugin-added" title="The “plugin-added” signal">plugin-added</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -312,7 +312,7 @@
 reference on the registry, as it is alive as long as GStreamer is
 initialized.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.2.5"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.2.5"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstRegistry.html" title="GstRegistry"><span class="type">GstRegistry</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>
@@ -326,7 +326,7 @@
 <p>Retrieves a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of <a class="link" href="GstPluginFeature.html" title="GstPluginFeature"><span class="type">GstPluginFeature</span></a> of <em class="parameter"><code>type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -348,7 +348,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.3.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.3.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 <a class="link" href="GstPluginFeature.html" title="GstPluginFeature"><span class="type">GstPluginFeature</span></a> of <em class="parameter"><code>type</code></em>
 . Use <a class="link" href="GstPluginFeature.html#gst-plugin-feature-list-free" title="gst_plugin_feature_list_free ()"><code class="function">gst_plugin_feature_list_free()</code></a> after use</p>
@@ -364,7 +364,7 @@
 <p>Returns the registry's feature list cookie. This changes
 every time a feature is added or removed from the registry.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -379,9 +379,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.4.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.4.6"></a><h4>Returns</h4>
 <p> the feature list cookie.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -394,7 +393,7 @@
 <p>Retrieves a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of features of the plugin with name <em class="parameter"><code>name</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -416,7 +415,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.5.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.5.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 <a class="link" href="GstPluginFeature.html" title="GstPluginFeature"><span class="type">GstPluginFeature</span></a>. Use <a class="link" href="GstPluginFeature.html#gst-plugin-feature-list-free" title="gst_plugin_feature_list_free ()"><code class="function">gst_plugin_feature_list_free()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Gst.PluginFeature]</span></p>
@@ -430,7 +429,7 @@
 <p>Get a copy of all plugins registered in the given registry. The refcount
 of each element in the list in incremented.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -445,7 +444,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.6.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.6.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of <a class="link" href="GstPlugin.html" title="GstPlugin"><span class="type">GstPlugin</span></a>.
 Use <a class="link" href="GstPlugin.html#gst-plugin-list-free" title="gst_plugin_list_free ()"><code class="function">gst_plugin_list_free()</code></a> after usage.</p>
 <p>MT safe. </p>
@@ -462,7 +461,7 @@
 This function will sink <em class="parameter"><code>plugin</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -484,10 +483,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.7.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -499,7 +497,7 @@
 <p>Remove the plugin from the registry.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.8.6"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -535,7 +533,7 @@
 Every plugin is reffed; use <a class="link" href="GstPlugin.html#gst-plugin-list-free" title="gst_plugin_list_free ()"><code class="function">gst_plugin_list_free()</code></a> after use, which
 will unref again.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -567,7 +565,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.9.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.9.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of <a class="link" href="GstPlugin.html" title="GstPlugin"><span class="type">GstPlugin</span></a>.
 Use <a class="link" href="GstPlugin.html#gst-plugin-list-free" title="gst_plugin_list_free ()"><code class="function">gst_plugin_list_free()</code></a> after usage.</p>
 <p>MT safe. </p>
@@ -587,7 +585,7 @@
 If the first flag is set, only the first match is
 returned (as a list with a single object).</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -619,7 +617,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.10.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.10.6"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 <a class="link" href="GstPluginFeature.html" title="GstPluginFeature"><span class="type">GstPluginFeature</span></a>. Use <a class="link" href="GstPluginFeature.html#gst-plugin-feature-list-free" title="gst_plugin_feature_list_free ()"><code class="function">gst_plugin_feature_list_free()</code></a> after usage.</p>
 <p>MT safe. </p>
@@ -635,7 +633,7 @@
 <p>Find the plugin with the given name in the registry.
 The plugin will be reffed; caller is responsible for unreffing.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -657,7 +655,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.11.6"></a><h4>Returns</h4>
 <p> the plugin with the given name
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the plugin was not found. <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> after
 usage.</p>
@@ -674,7 +672,7 @@
                            <em class="parameter"><code><a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> type</code></em>);</pre>
 <p>Find the pluginfeature with the given name and type in the registry.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -701,7 +699,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.12.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.12.6"></a><h4>Returns</h4>
 <p> the pluginfeature with the
 given name and type or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the plugin was not
 found. <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> after usage.</p>
@@ -719,7 +717,7 @@
  in <em class="parameter"><code>registry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -741,7 +739,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.13.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPluginFeature.html" title="GstPluginFeature"><span class="type">GstPluginFeature</span></a> with its refcount incremented,
 use <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> after usage.</p>
 <p>MT safe. </p>
@@ -758,7 +756,7 @@
 path is specific to the registry. If the path has already been
 added, do nothing.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -787,7 +785,7 @@
 gst_registry_get_path_list (<em class="parameter"><code><a class="link" href="GstRegistry.html" title="GstRegistry"><span class="type">GstRegistry</span></a> *registry</code></em>);</pre>
 <p>Get the list of paths for the given registry.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -802,7 +800,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.15.6"></a><h4>Returns</h4>
 <p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of paths as
 strings. g_list_free after use.</p>
 <p>MT safe. </p>
@@ -818,7 +816,7 @@
 <p>Scan the given path for plugins to add to the registry. The syntax of the
 path is specific to the registry.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -840,9 +838,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.16.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if registry changed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -854,7 +851,7 @@
 <p>Look up a plugin in the given registry with the given filename.
 If found, plugin is reffed.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -876,7 +873,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.17.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstPlugin.html" title="GstPlugin"><span class="type">GstPlugin</span></a> if found, or
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not.  <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<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>
@@ -891,7 +888,7 @@
 <p>Remove the feature from the registry.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.18.6"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.18.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -923,7 +920,7 @@
 This function sinks <em class="parameter"><code>feature</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -945,10 +942,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.19.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -965,7 +961,7 @@
  and whether its version is at least the
 version required.</p>
 <div class="refsect3">
-<a name="id-1.3.43.9.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.9.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1002,10 +998,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.43.9.20.6"></a><h4>Returns</h4>
+<a name="id-1.3.44.9.20.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the feature could be found and the version is
 the same as the required version or newer, and <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1028,7 +1023,7 @@
 <p>Signals that a feature has been added to the registry (possibly
 replacing a previously-added one by the same name)</p>
 <div class="refsect3">
-<a name="id-1.3.43.11.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.11.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1054,7 +1049,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1066,7 +1061,7 @@
 <p>Signals that a plugin has been added to the registry (possibly
 replacing a previously-added one by the same name)</p>
 <div class="refsect3">
-<a name="id-1.3.43.11.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.44.11.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1092,7 +1087,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -1101,7 +1096,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstSample.html b/docs/gst/html/GstSample.html
index 2b89995..df0e58a 100644
--- a/docs/gst/html/GstSample.html
+++ b/docs/gst/html/GstSample.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstSample</title>
+<title>GstSample: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstCapsFeatures.html" title="GstCapsFeatures">
 <link rel="next" href="GstChildProxy.html" title="GstChildProxy">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -50,6 +50,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a class="link" href="GstBufferList.html" title="GstBufferList"><span class="returnvalue">GstBufferList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstSample.html#gst-sample-get-buffer-list" title="gst_sample_get_buffer_list ()">gst_sample_get_buffer_list</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">
@@ -73,6 +81,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstSample.html#gst-sample-set-buffer-list" title="gst_sample_set_buffer_list ()">gst_sample_set_buffer_list</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstSample.html" title="GstSample"><span class="returnvalue">GstSample</span></a> *
 </td>
 <td class="function_name">
@@ -171,10 +187,10 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-sample-get-caps"></a><h3>gst_sample_get_caps ()</h3>
-<pre class="programlisting"><a class="link" href="GstCaps.html" title="GstCaps"><span class="returnvalue">GstCaps</span></a> *
-gst_sample_get_caps (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
-<p>Get the caps associated with <em class="parameter"><code>sample</code></em>
+<a name="gst-sample-get-buffer-list"></a><h3>gst_sample_get_buffer_list ()</h3>
+<pre class="programlisting"><a class="link" href="GstBufferList.html" title="GstBufferList"><span class="returnvalue">GstBufferList</span></a> *
+gst_sample_get_buffer_list (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
+<p>Get the buffer list associated with <em class="parameter"><code>sample</code></em>
 </p>
 <div class="refsect3">
 <a name="id-1.3.13.8.3.5"></a><h4>Parameters</h4>
@@ -193,22 +209,23 @@
 </div>
 <div class="refsect3">
 <a name="id-1.3.13.8.3.6"></a><h4>Returns</h4>
-<p> the caps of <em class="parameter"><code>sample</code></em>
+<p> the buffer list of <em class="parameter"><code>sample</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-when there is no caps. The caps remain valid as long as <em class="parameter"><code>sample</code></em>
-is
-valid.  If you need to hold on to the caps for longer than that,
-take a ref to the caps with <a class="link" href="GstCaps.html#gst-caps-ref" title="gst_caps_ref ()"><code class="function">gst_caps_ref()</code></a>. </p>
+when there is no buffer list. The buffer list remains valid as long as
+<em class="parameter"><code>sample</code></em>
+is valid.  If you need to hold on to it for longer than
+that, take a ref to the buffer list with <a class="link" href="gstreamer-GstMiniObject.html#gst-mini-object-ref" title="gst_mini_object_ref ()"><code class="function">gst_mini_object_ref()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-sample-get-info"></a><h3>gst_sample_get_info ()</h3>
-<pre class="programlisting">const <a class="link" href="GstStructure.html" title="GstStructure"><span class="returnvalue">GstStructure</span></a> *
-gst_sample_get_info (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
-<p>Get extra information associated with <em class="parameter"><code>sample</code></em>
-.</p>
+<a name="gst-sample-get-caps"></a><h3>gst_sample_get_caps ()</h3>
+<pre class="programlisting"><a class="link" href="GstCaps.html" title="GstCaps"><span class="returnvalue">GstCaps</span></a> *
+gst_sample_get_caps (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
+<p>Get the caps associated with <em class="parameter"><code>sample</code></em>
+</p>
 <div class="refsect3">
 <a name="id-1.3.13.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -226,20 +243,22 @@
 </div>
 <div class="refsect3">
 <a name="id-1.3.13.8.4.6"></a><h4>Returns</h4>
-<p> the extra info of <em class="parameter"><code>sample</code></em>
-.
-The info remains valid as long as <em class="parameter"><code>sample</code></em>
-is valid. </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>
+<p> the caps of <em class="parameter"><code>sample</code></em>
+or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
+when there is no caps. The caps remain valid as long as <em class="parameter"><code>sample</code></em>
+is
+valid.  If you need to hold on to the caps for longer than that,
+take a ref to the caps with <a class="link" href="GstCaps.html#gst-caps-ref" title="gst_caps_ref ()"><code class="function">gst_caps_ref()</code></a>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<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>
 <div class="refsect2">
-<a name="gst-sample-get-segment"></a><h3>gst_sample_get_segment ()</h3>
-<pre class="programlisting"><a class="link" href="GstSegment.html" title="GstSegment"><span class="returnvalue">GstSegment</span></a> *
-gst_sample_get_segment (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
-<p>Get the segment associated with <em class="parameter"><code>sample</code></em>
-</p>
+<a name="gst-sample-get-info"></a><h3>gst_sample_get_info ()</h3>
+<pre class="programlisting">const <a class="link" href="GstStructure.html" title="GstStructure"><span class="returnvalue">GstStructure</span></a> *
+gst_sample_get_info (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
+<p>Get extra information associated with <em class="parameter"><code>sample</code></em>
+.</p>
 <div class="refsect3">
 <a name="id-1.3.13.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -257,6 +276,37 @@
 </div>
 <div class="refsect3">
 <a name="id-1.3.13.8.5.6"></a><h4>Returns</h4>
+<p> the extra info of <em class="parameter"><code>sample</code></em>
+.
+The info remains valid as long as <em class="parameter"><code>sample</code></em>
+is valid. </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>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-sample-get-segment"></a><h3>gst_sample_get_segment ()</h3>
+<pre class="programlisting"><a class="link" href="GstSegment.html" title="GstSegment"><span class="returnvalue">GstSegment</span></a> *
+gst_sample_get_segment (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
+<p>Get the segment associated with <em class="parameter"><code>sample</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.3.13.8.6.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>sample</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.13.8.6.6"></a><h4>Returns</h4>
 <p> the segment of <em class="parameter"><code>sample</code></em>
 .
 The segment remains valid as long as <em class="parameter"><code>sample</code></em>
@@ -266,6 +316,38 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-sample-set-buffer-list"></a><h3>gst_sample_set_buffer_list ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_sample_set_buffer_list (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>,
+                            <em class="parameter"><code><a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a> *buffer_list</code></em>);</pre>
+<p>Set the buffer list associated with <em class="parameter"><code>sample</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.3.13.8.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>sample</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buffer_list</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-sample-new"></a><h3>gst_sample_new ()</h3>
 <pre class="programlisting"><a class="link" href="GstSample.html" title="GstSample"><span class="returnvalue">GstSample</span></a> *
 gst_sample_new (<em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>,
@@ -275,7 +357,7 @@
 <p>Create a new <a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> with the provided details.</p>
 <p>Free-function: gst_sample_unref</p>
 <div class="refsect3">
-<a name="id-1.3.13.8.6.6"></a><h4>Parameters</h4>
+<a name="id-1.3.13.8.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -307,7 +389,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.13.8.6.7"></a><h4>Returns</h4>
+<a name="id-1.3.13.8.8.7"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a>. <a class="link" href="GstSample.html#gst-sample-unref" title="gst_sample_unref ()"><code class="function">gst_sample_unref()</code></a>
 after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -320,7 +402,7 @@
 gst_sample_ref (<em class="parameter"><code><a class="link" href="GstSample.html" title="GstSample"><span class="type">GstSample</span></a> *sample</code></em>);</pre>
 <p>Increases the refcount of the given sample by one.</p>
 <div class="refsect3">
-<a name="id-1.3.13.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.13.8.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -335,7 +417,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.13.8.7.6"></a><h4>Returns</h4>
+<a name="id-1.3.13.8.9.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>sample</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -349,7 +431,7 @@
 <p>Decreases the refcount of the sample. If the refcount reaches 0, the
 sample will be freed.</p>
 <div class="refsect3">
-<a name="id-1.3.13.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.13.8.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -372,7 +454,7 @@
 <p>Create a copy of the given sample. This will also make a newly allocated
 copy of the data the source sample contains.</p>
 <div class="refsect3">
-<a name="id-1.3.13.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.13.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -387,12 +469,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.13.8.9.6"></a><h4>Returns</h4>
+<a name="id-1.3.13.8.11.6"></a><h4>Returns</h4>
 <p> a new copy of <em class="parameter"><code>buf</code></em>
 . </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.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -411,7 +493,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstSegment.html b/docs/gst/html/GstSegment.html
index 263cd07..5adb6b3 100644
--- a/docs/gst/html/GstSegment.html
+++ b/docs/gst/html/GstSegment.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstSegment</title>
+<title>GstSegment: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstRegistry.html" title="GstRegistry">
 <link rel="next" href="GstStructure.html" title="GstStructure">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -99,6 +99,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstSegment.html#gst-segment-to-running-time-full" title="gst_segment_to_running_time_full ()">gst_segment_to_running_time_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">guint64</span>
 </td>
 <td class="function_name">
@@ -137,6 +145,14 @@
 <a class="link" href="GstSegment.html#gst-segment-offset-running-time" title="gst_segment_offset_running_time ()">gst_segment_offset_running_time</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstSegment.html#gst-segment-is-equal" title="gst_segment_is_equal ()">gst_segment_is_equal</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -251,7 +267,7 @@
  will be set to the end of the
 segment. Depending on the use case, this may or may not be what you want.</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.2.8"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.2.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -293,14 +309,13 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.2.9"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.2.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the given <em class="parameter"><code>start</code></em>
 and <em class="parameter"><code>stop</code></em>
 times fall partially or
 completely in <em class="parameter"><code>segment</code></em>
 , <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the values are completely outside
 of the segment.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -315,7 +330,7 @@
 <p>Initialize <em class="parameter"><code>segment</code></em>
  to its default values.</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.3.6"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -346,7 +361,7 @@
 <a class="link" href="GstSegment.html#gst-segment-init" title="gst_segment_init ()"><code class="function">gst_segment_init()</code></a>.</p>
 <p>Free-function: gst_segment_free</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.4.6"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.4.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a>, free with <a class="link" href="GstSegment.html#gst-segment-free" title="gst_segment_free ()"><code class="function">gst_segment_free()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -360,7 +375,7 @@
 .</p>
 <p>Free-function: gst_segment_free</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.5.6"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -375,7 +390,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.5.7"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.5.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a>, free with <a class="link" href="GstSegment.html#gst-segment-free" title="gst_segment_free ()"><code class="function">gst_segment_free()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -388,7 +403,7 @@
 <p>Free the allocated segment <em class="parameter"><code>segment</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -457,7 +472,7 @@
 
 has been changed but not the playback position.</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.7.10"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.7.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -514,9 +529,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.7.11"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.7.11"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seek could be performed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -537,7 +551,7 @@
 <p>This function returns -1 if the position is outside of <em class="parameter"><code>segment</code></em>
  start and stop.</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.8.7"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.8.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -564,14 +578,75 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.8.8"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.8.8"></a><h4>Returns</h4>
 <p> the position as the total running time or -1 when an invalid position
 was given.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-segment-to-running-time-full"></a><h3>gst_segment_to_running_time_full ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
+gst_segment_to_running_time_full (<em class="parameter"><code>const <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> *segment</code></em>,
+                                  <em class="parameter"><code><a class="link" href="gstreamer-GstFormat.html#GstFormat" title="enum GstFormat"><span class="type">GstFormat</span></a> format</code></em>,
+                                  <em class="parameter"><code><span class="type">guint64</span> position</code></em>,
+                                  <em class="parameter"><code><span class="type">guint64</span> *running_time</code></em>);</pre>
+<p>Translate <em class="parameter"><code>position</code></em>
+ to the total running time using the currently configured
+segment. Compared to <a class="link" href="GstSegment.html#gst-segment-to-running-time" title="gst_segment_to_running_time ()"><code class="function">gst_segment_to_running_time()</code></a> this function can return
+negative running-time.</p>
+<p>This function is typically used by elements that need to synchronize buffers
+against the clock or eachother.</p>
+<p><em class="parameter"><code>position</code></em>
+ can be any value and the result of this function for values outside
+of the segment is extrapolated.</p>
+<p>When 1 is returned, <em class="parameter"><code>position</code></em>
+ resulted in a positive running-time returned
+in <em class="parameter"><code>running_time</code></em>
+.</p>
+<p>When this function returns -1, the returned <em class="parameter"><code>running_time</code></em>
+ should be negated
+to get the real negative running time.</p>
+<div class="refsect3">
+<a name="id-1.3.45.8.9.9"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>segment</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> structure.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the format of the segment.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>position</p></td>
+<td class="parameter_description"><p>the position in the segment</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>running_time</p></td>
+<td class="parameter_description"><p>result running-time</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.45.8.9.10"></a><h4>Returns</h4>
+<p> a 1 or -1 on success, 0 on failure.</p>
+</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-segment-to-stream-time"></a><h3>gst_segment_to_stream_time ()</h3>
 <pre class="programlisting"><span class="returnvalue">guint64</span>
 gst_segment_to_stream_time (<em class="parameter"><code>const <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> *segment</code></em>,
@@ -591,7 +666,7 @@
 The stream time is always between 0 and the total duration of the
 media stream.</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.9.6"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -618,10 +693,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.9.7"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.10.7"></a><h4>Returns</h4>
 <p> the position in stream_time or -1 when an invalid position
 was given.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -636,7 +710,7 @@
 <a class="link" href="GstSegment.html#gst-segment-to-running-time" title="gst_segment_to_running_time ()"><code class="function">gst_segment_to_running_time()</code></a> with that position returns <em class="parameter"><code>running_time</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -663,13 +737,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.10.6"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.11.6"></a><h4>Returns</h4>
 <p> the position in the segment for <em class="parameter"><code>running_time</code></em>
 . This function returns
 -1 when <em class="parameter"><code>running_time</code></em>
 is -1 or when it is not inside <em class="parameter"><code>segment</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -684,7 +757,7 @@
 buffer will be one with <em class="parameter"><code>running_time</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -711,12 +784,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.12.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the segment could be updated successfully. If <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is
 returned, <em class="parameter"><code>running_time</code></em>
 is -1 or not in <em class="parameter"><code>segment</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -729,7 +801,7 @@
  into <em class="parameter"><code>dest</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -763,7 +835,7 @@
  is applied to all
 future running-time calculations.</p>
 <div class="refsect3">
-<a name="id-1.3.44.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.45.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -790,14 +862,49 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.44.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.45.8.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the segment could be updated successfully. If <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is
 returned, <em class="parameter"><code>offset</code></em>
 is not in <em class="parameter"><code>segment</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2.3</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2.3">1.2.3</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-segment-is-equal"></a><h3>gst_segment_is_equal ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_segment_is_equal (<em class="parameter"><code>const <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> *s0</code></em>,
+                      <em class="parameter"><code>const <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> *s1</code></em>);</pre>
+<p>Checks for two segments being equal. Equality here is defined
+as perfect equality, including floating point values.</p>
+<div class="refsect3">
+<a name="id-1.3.45.8.15.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>s0</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> structure.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>s1</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> structure.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.45.8.15.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the segments are equal, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -824,7 +931,7 @@
 <p>A helper structure that holds the configured region of
 interest in a media file.</p>
 <div class="refsect3">
-<a name="id-1.3.44.9.2.5"></a><h4>Members</h4>
+<a name="id-1.3.45.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -881,7 +988,8 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><span class="type">guint64</span> <em class="structfield"><code><a name="GstSegment-struct.position"></a>position</code></em>;</p></td>
-<td class="struct_member_description"><p>the position in the segment</p></td>
+<td class="struct_member_description"><p>the position in the segment (used internally by elements
+such as sources, demuxers or parsers to track progress)</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -899,7 +1007,7 @@
 <p>Flags for the GstSegment structure. Currently mapped to the corresponding
 values of the seek flags.</p>
 <div class="refsect3">
-<a name="id-1.3.44.9.3.4"></a><h4>Members</h4>
+<a name="id-1.3.45.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -923,9 +1031,18 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-SEGMENT-FLAG-TRICKMODE:CAPS"></a>GST_SEGMENT_FLAG_TRICKMODE</p></td>
+<td class="enum_member_description">
+<p>perform skip playback (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-SEGMENT-FLAG-SKIP:CAPS"></a>GST_SEGMENT_FLAG_SKIP</p></td>
 <td class="enum_member_description">
-<p>perform skip playback</p>
+<p>Deprecated backward compatibility flag, replaced
+                        by <em class="parameter"><code>GST_SEGMENT_FLAG_TRICKMODE</code></em>
+</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -936,6 +1053,22 @@
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-SEGMENT-FLAG-TRICKMODE-KEY-UNITS:CAPS"></a>GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS</p></td>
+<td class="enum_member_description">
+<p>Decode only keyframes, where
+                                       possible (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-SEGMENT-FLAG-TRICKMODE-NO-AUDIO:CAPS"></a>GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO</p></td>
+<td class="enum_member_description">
+<p>Do not decode any audio, where
+                                       possible (Since 1.6)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -947,7 +1080,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstStructure.html b/docs/gst/html/GstStructure.html
index 9594880..e22bbfb 100644
--- a/docs/gst/html/GstStructure.html
+++ b/docs/gst/html/GstStructure.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstStructure</title>
+<title>GstStructure: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstSystemClock.html" title="GstSystemClock">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -58,6 +58,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="GstStructure.html#GstStructureFilterMapFunc" title="GstStructureFilterMapFunc ()">*GstStructureFilterMapFunc</a><span class="c_punctuation">)</span> <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">
@@ -303,14 +311,6 @@
 </tr>
 <tr>
 <td class="function_type">
-<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="GstStructure.html#gst-structure-foreach" title="gst_structure_foreach ()">gst_structure_foreach</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
 </td>
 <td class="function_name">
@@ -481,10 +481,26 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
+<a class="link" href="GstStructure.html#gst-structure-foreach" title="gst_structure_foreach ()">gst_structure_foreach</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
 <a class="link" href="GstStructure.html#gst-structure-map-in-place" title="gst_structure_map_in_place ()">gst_structure_map_in_place</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="GstStructure.html#gst-structure-filter-and-map-in-place" title="gst_structure_filter_and_map_in_place ()">gst_structure_filter_and_map_in_place</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 </td>
 <td class="function_name">
@@ -639,7 +655,7 @@
 not modify <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -666,10 +682,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.2.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.2.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the foreach operation should continue, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
 the foreach operation should stop with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -683,7 +698,7 @@
 may modify <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -710,10 +725,53 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.3.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.3.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the map operation should continue, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if
 the map operation should stop with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstStructureFilterMapFunc"></a><h3>GstStructureFilterMapFunc ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<span class="c_punctuation">(</span>*GstStructureFilterMapFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Quarks.html#GQuark"><span class="type">GQuark</span></a> field_id</code></em>,
+                              <em class="parameter"><code><a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>,
+                              <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>A function that will be called in <a class="link" href="GstStructure.html#gst-structure-filter-and-map-in-place" title="gst_structure_filter_and_map_in_place ()"><code class="function">gst_structure_filter_and_map_in_place()</code></a>.
+The function may modify <em class="parameter"><code>value</code></em>
+, and the value will be removed from
+the structure if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned.</p>
+<div class="refsect3">
+<a name="id-1.3.46.8.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>field_id</p></td>
+<td class="parameter_description"><p>the <a href="https://developer.gnome.org/glib/unstable/glib-Quarks.html#GQuark"><span class="type">GQuark</span></a> of the field name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of the field</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</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.46.8.4.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the field should be preserved, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it
+should be removed.</p>
 </div>
 </div>
 <hr>
@@ -727,7 +785,7 @@
  parameter.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.4.7"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.5.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -742,7 +800,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.4.8"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.5.8"></a><h4>Returns</h4>
 <p> a new, empty <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</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>
@@ -755,7 +813,7 @@
 <p>Creates a new, empty <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> with the given name as a GQuark.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.5.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -770,7 +828,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.5.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.6.7"></a><h4>Returns</h4>
 <p> a new, empty <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</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>
@@ -788,7 +846,7 @@
 and value.  Last variable argument should be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.6.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -815,7 +873,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.6.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.7.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</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>
@@ -835,7 +893,7 @@
  parameter.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.7.7"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.8.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -862,7 +920,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.7.8"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.8.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</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>
@@ -881,7 +939,7 @@
 <p>The last variable argument must be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> (or 0).</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.8.7"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.9.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -908,7 +966,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.8.8"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.9.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</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>
@@ -925,7 +983,7 @@
 when there are nested <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> deeper than one level.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.9.7"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.10.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -940,13 +998,13 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.9.8"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.10.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
 when the string could not be parsed. Free with
 <a class="link" href="GstStructure.html#gst-structure-free" title="gst_structure_free ()"><code class="function">gst_structure_free()</code></a> 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>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -956,7 +1014,7 @@
 <p>Duplicates a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> and all its fields and values.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.10.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -971,7 +1029,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.10.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.11.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</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>
@@ -984,7 +1042,7 @@
 <p>Frees a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> and all its fields and values. The structure must not
 have a parent when this function is called.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1007,7 +1065,7 @@
 <p>Get the name of <em class="parameter"><code>structure</code></em>
  as a string.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1022,9 +1080,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.12.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.13.6"></a><h4>Returns</h4>
 <p> the name of the structure.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1035,7 +1092,7 @@
                         <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
 <p>Checks if the structure has the given name</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1057,10 +1114,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>name</code></em>
 matches the name of the structure.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1074,7 +1130,7 @@
 provided is copied before being used. It must not be empty, start with a
 letter and can be followed by letters, numbers and any of "/-_.:".</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1104,7 +1160,7 @@
 <p>Get the name of <em class="parameter"><code>structure</code></em>
  as a GQuark.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1119,9 +1175,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.16.6"></a><h4>Returns</h4>
 <p> the quark representing the name of the structure.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1146,7 +1201,7 @@
 strings and boxed types you will receive a copy which you will need to
 release with either <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> or the suitable function for the boxed type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.16.7"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.17.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1173,11 +1228,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.16.8"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.17.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if there was a problem reading any of the fields (e.g.
 because the field requested did not exist, or was of a type other
 than the type specified), otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1192,7 +1246,7 @@
 valist-variant of <a class="link" href="GstStructure.html#gst-structure-id-get" title="gst_structure_id_get ()"><code class="function">gst_structure_id_get()</code></a>. Look at the documentation of
 <a class="link" href="GstStructure.html#gst-structure-id-get" title="gst_structure_id_get ()"><code class="function">gst_structure_id_get()</code></a> for more details.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1219,9 +1273,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if there was a problem reading any of the fields</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1233,7 +1286,7 @@
 <p>Get the value of the field with GQuark <em class="parameter"><code>field</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1255,10 +1308,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.18.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.19.6"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> corresponding to the field with the given name
 identifier.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1274,7 +1326,7 @@
 does not exist, it is created.  If the field exists, the previous
 value is replaced and freed.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1314,7 +1366,7 @@
 does not exist, it is created.  If the field exists, the previous
 value is replaced and freed.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1358,7 +1410,7 @@
 strings and boxed types you will receive a copy which you will need to
 release with either <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> or the suitable function for the boxed type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.21.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.22.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1385,11 +1437,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.21.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.22.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if there was a problem reading any of the fields (e.g.
 because the field requested did not exist, or was of a type other
 than the type specified), otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1404,7 +1455,7 @@
 valist-variant of <a class="link" href="GstStructure.html#gst-structure-get" title="gst_structure_get ()"><code class="function">gst_structure_get()</code></a>. Look at the documentation of
 <a class="link" href="GstStructure.html#gst-structure-get" title="gst_structure_get ()"><code class="function">gst_structure_get()</code></a> for more details.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1431,9 +1482,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.22.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.23.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if there was a problem reading any of the fields</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1445,7 +1495,7 @@
 <p>Get the value of the field with name <em class="parameter"><code>fieldname</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1467,9 +1517,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.23.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.24.6"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> corresponding to the field with the given name.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1485,7 +1534,7 @@
 does not exist, it is created.  If the field exists, the previous
 value is replaced and freed.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.24.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1526,7 +1575,7 @@
 value is replaced and freed. The function will take ownership of <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.25.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1560,11 +1609,12 @@
 gst_structure_set (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
                    <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *fieldname</code></em>,
                    <em class="parameter"><code>...</code></em>);</pre>
-<p>Parses the variable arguments and sets fields accordingly.
+<p>Parses the variable arguments and sets fields accordingly. Fields that
+weren't already part of the structure are added as needed.
 Variable arguments should be in the form field name, field type
 (as a GType), value(s).  The last variable argument should be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.26.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1600,7 +1650,7 @@
                           <em class="parameter"><code><span class="type">va_list</span> varargs</code></em>);</pre>
 <p>va_list form of <a class="link" href="GstStructure.html#gst-structure-set" title="gst_structure_set ()"><code class="function">gst_structure_set()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1640,7 +1690,7 @@
 quark values.
 The last variable argument must be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1676,7 +1726,7 @@
                              <em class="parameter"><code><span class="type">va_list</span> varargs</code></em>);</pre>
 <p>va_list form of <a class="link" href="GstStructure.html#gst-structure-id-set" title="gst_structure_id_set ()"><code class="function">gst_structure_id_set()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1712,7 +1762,7 @@
 <p>Removes the field with the given name.  If the field with the given
 name does not exist, the structure is unchanged.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1744,7 +1794,7 @@
 <p>Removes the fields with the given names. If a field does not exist, the
 argument is ignored.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1780,7 +1830,7 @@
                                     <em class="parameter"><code><span class="type">va_list</span> varargs</code></em>);</pre>
 <p>va_list form of <a class="link" href="GstStructure.html#gst-structure-remove-fields" title="gst_structure_remove_fields ()"><code class="function">gst_structure_remove_fields()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1814,7 +1864,7 @@
 gst_structure_remove_all_fields (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>);</pre>
 <p>Removes all fields in a GstStructure.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1839,7 +1889,7 @@
 value it contains.  If the field is not found, G_TYPE_INVALID is
 returned.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1861,52 +1911,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.34.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.35.6"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of the field</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-structure-foreach"></a><h3>gst_structure_foreach ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_structure_foreach (<em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
-                       <em class="parameter"><code><a class="link" href="GstStructure.html#GstStructureForeachFunc" title="GstStructureForeachFunc ()"><span class="type">GstStructureForeachFunc</span></a> func</code></em>,
-                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>Calls the provided function once for each field in the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>. The
-function must not modify the fields. Also see <a class="link" href="GstStructure.html#gst-structure-map-in-place" title="gst_structure_map_in_place ()"><code class="function">gst_structure_map_in_place()</code></a>.</p>
-<div class="refsect3">
-<a name="id-1.3.45.8.35.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>structure</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p> a function to call for each field. </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>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> private data. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.3.45.8.35.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the supplied function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> For each of the fields,
-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1916,7 +1922,7 @@
 gst_structure_n_fields (<em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>);</pre>
 <p>Get the number of fields in the structure.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1931,9 +1937,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.36.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.36.6"></a><h4>Returns</h4>
 <p> the number of fields in the structure</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1946,7 +1951,7 @@
  contains a field named <em class="parameter"><code>fieldname</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1968,9 +1973,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.37.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.37.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure contains a field with the given name</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1985,7 +1989,7 @@
  and with GType <em class="parameter"><code>type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.38.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2012,9 +2016,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.38.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.38.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure contains a field with the given name and type</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2025,7 +2028,7 @@
                         <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure2</code></em>);</pre>
 <p>Tests if the two <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> are equal.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.39.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.39.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2047,9 +2050,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.39.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.39.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the two structures have the same name and field.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2067,7 +2069,7 @@
  has a value that is a subset of the value in <em class="parameter"><code>superset</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.40.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.40.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2089,11 +2091,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.40.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.40.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>subset</code></em>
 is a subset of <em class="parameter"><code>superset</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2107,7 +2108,7 @@
  and reports whether the result
 would not be empty.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.41.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2129,9 +2130,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.41.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.41.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if intersection would not be empty</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2144,7 +2144,7 @@
  and <em class="parameter"><code>struct2</code></em>
  and returns the intersection.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.42.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.42.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2166,11 +2166,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.42.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.42.6"></a><h4>Returns</h4>
 <p> Intersection of <em class="parameter"><code>struct1</code></em>
 and <em class="parameter"><code>struct2</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2183,7 +2182,7 @@
  contains a field named <em class="parameter"><code>field</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.43.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2205,9 +2204,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.43.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.43.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure contains a field with the given name</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2222,7 +2220,7 @@
  and with GType <em class="parameter"><code>type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.44.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2249,9 +2247,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.44.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.44.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure contains a field with the given name and type</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2266,7 +2263,7 @@
 given field.  Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.45.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.45.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2293,12 +2290,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.45.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.45.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a boolean, this
 function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2313,7 +2309,7 @@
 given field.  Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2340,12 +2336,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.46.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.46.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain an int, this function
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2360,7 +2355,7 @@
 given field.  Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.47.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2387,12 +2382,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.47.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a uint, this function
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2407,7 +2401,7 @@
 given field. Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.48.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2434,14 +2428,13 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.48.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.48.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a <span class="type">gint64</span>, this function
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2455,7 +2448,7 @@
 given field. Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.49.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.49.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2482,14 +2475,13 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.49.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.49.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a <span class="type">guint64</span>, this function
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -2503,7 +2495,7 @@
 given field.  Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.50.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2530,12 +2522,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.50.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.50.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a double, this
 function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2551,7 +2542,7 @@
 <p>The string should not be modified, and remains valid until the next
 call to a gst_structure_*() function with the given structure.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.51.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.51.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2573,7 +2564,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.51.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.51.7"></a><h4>Returns</h4>
 <p> a pointer to the string or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when the
 field did not exist or did not contain a string. </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>]</span></p>
@@ -2596,7 +2587,7 @@
 inconsistent with e.g. <a class="link" href="GstStructure.html#gst-structure-get-string" title="gst_structure_get_string ()"><code class="function">gst_structure_get_string()</code></a> which doesn't return a
 copy of the string).</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.52.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.52.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2623,12 +2614,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.52.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.52.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a data, this function
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2648,7 +2638,7 @@
 (note: this is inconsistent with e.g. <a class="link" href="GstStructure.html#gst-structure-get-string" title="gst_structure_get_string ()"><code class="function">gst_structure_get_string()</code></a>
 which doesn't return a copy of the string).</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.53.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.53.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2675,12 +2665,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.53.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.53.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a data, this function
 returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2695,7 +2684,7 @@
 of the given field.  Caller is responsible for making sure the field exists
 and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.54.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.54.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2722,12 +2711,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.54.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.54.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a <a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a>, this
 function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2743,7 +2731,7 @@
 given field.  Caller is responsible for making sure the field exists,
 has the correct type and that the enumtype is correct.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.55.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2775,12 +2763,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.55.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.55.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain an enum of the given
 type, this function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2797,7 +2784,7 @@
 corresponding to the value of the given field.  Caller is responsible
 for making sure the field exists and has the correct type.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.56.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2829,26 +2816,25 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.56.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.56.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the values could be set correctly. If there was no field
 with <em class="parameter"><code>fieldname</code></em>
 or the existing field did not contain a GstFraction, this
 function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-structure-map-in-place"></a><h3>gst_structure_map_in_place ()</h3>
+<a name="gst-structure-foreach"></a><h3>gst_structure_foreach ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_structure_map_in_place (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
-                            <em class="parameter"><code><a class="link" href="GstStructure.html#GstStructureMapFunc" title="GstStructureMapFunc ()"><span class="type">GstStructureMapFunc</span></a> func</code></em>,
-                            <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>Calls the provided function once for each field in the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>. In
-contrast to <a class="link" href="GstStructure.html#gst-structure-foreach" title="gst_structure_foreach ()"><code class="function">gst_structure_foreach()</code></a>, the function may modify but not delete the
-fields. The structure must be mutable.</p>
+gst_structure_foreach (<em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                       <em class="parameter"><code><a class="link" href="GstStructure.html#GstStructureForeachFunc" title="GstStructureForeachFunc ()"><span class="type">GstStructureForeachFunc</span></a> func</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>Calls the provided function once for each field in the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>. The
+function must not modify the fields. Also see <a class="link" href="GstStructure.html#gst-structure-map-in-place" title="gst_structure_map_in_place ()"><code class="function">gst_structure_map_in_place()</code></a>
+and <a class="link" href="GstStructure.html#gst-structure-filter-and-map-in-place" title="gst_structure_filter_and_map_in_place ()"><code class="function">gst_structure_filter_and_map_in_place()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.57.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.57.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2875,21 +2861,104 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.57.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.57.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the supplied function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> For each of the fields,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-structure-map-in-place"></a><h3>gst_structure_map_in_place ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_structure_map_in_place (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                            <em class="parameter"><code><a class="link" href="GstStructure.html#GstStructureMapFunc" title="GstStructureMapFunc ()"><span class="type">GstStructureMapFunc</span></a> func</code></em>,
+                            <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>Calls the provided function once for each field in the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>. In
+contrast to <a class="link" href="GstStructure.html#gst-structure-foreach" title="gst_structure_foreach ()"><code class="function">gst_structure_foreach()</code></a>, the function may modify but not delete the
+fields. The structure must be mutable.</p>
+<div class="refsect3">
+<a name="id-1.3.46.8.58.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p> a function to call for each field. </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>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p> private data. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.46.8.58.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the supplied function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> For each of the fields,
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-structure-filter-and-map-in-place"></a><h3>gst_structure_filter_and_map_in_place ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_structure_filter_and_map_in_place (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                                       <em class="parameter"><code><a class="link" href="GstStructure.html#GstStructureFilterMapFunc" title="GstStructureFilterMapFunc ()"><span class="type">GstStructureFilterMapFunc</span></a> func</code></em>,
+                                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>Calls the provided function once for each field in the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>. In
+contrast to <a class="link" href="GstStructure.html#gst-structure-foreach" title="gst_structure_foreach ()"><code class="function">gst_structure_foreach()</code></a>, the function may modify the fields.
+In contrast to <a class="link" href="GstStructure.html#gst-structure-map-in-place" title="gst_structure_map_in_place ()"><code class="function">gst_structure_map_in_place()</code></a>, the field is removed from
+the structure if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned from the function.
+The structure must be mutable.</p>
+<div class="refsect3">
+<a name="id-1.3.46.8.59.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p> a function to call for each field. </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>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p> private data. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</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-structure-nth-field-name"></a><h3>gst_structure_nth_field_name ()</h3>
 <pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_structure_nth_field_name (<em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
                               <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> index</code></em>);</pre>
 <p>Get the name of the given field number, counting from 0 onwards.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.58.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.60.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2911,9 +2980,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.58.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.60.6"></a><h4>Returns</h4>
 <p> the name of the given field number</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2927,7 +2995,7 @@
 called by code implementing parent objects of <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>, as described in
 the MT Refcounting section of the design documents.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.59.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.61.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2949,9 +3017,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.59.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.61.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parent refcount could be set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2979,7 +3046,7 @@
 when there are nested <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> deeper than one level.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.60.10"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.62.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2994,7 +3061,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.60.11"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.62.11"></a><h4>Returns</h4>
 <p> a pointer to string allocated by <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-malloc"><code class="function">g_malloc()</code></a>.
 <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -3011,7 +3078,7 @@
 where parsing ended will be returned.</p>
 <p>Free-function: gst_structure_free</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.61.6"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.63.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3033,7 +3100,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.61.7"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.63.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
 when the string could not be parsed. Free with
 <a class="link" href="GstStructure.html#gst-structure-free" title="gst_structure_free ()"><code class="function">gst_structure_free()</code></a> after use. </p>
@@ -3050,7 +3117,7 @@
 <em class="parameter"><code>structure</code></em>
  will be modified in-place and should be writable.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.62.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.64.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3073,7 +3140,7 @@
                             <em class="parameter"><code>const <span class="type">char</span> *field_name</code></em>);</pre>
 <p>Fixates a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> by changing the given field with its fixated value.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.63.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.65.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3096,9 +3163,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.63.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.65.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure field could be fixated</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3113,7 +3179,7 @@
 integer to <em class="parameter"><code>target</code></em>
  that is a subset of the existing field.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.64.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.66.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3141,9 +3207,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.64.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.66.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure could be fixated</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3158,7 +3223,7 @@
 double to <em class="parameter"><code>target</code></em>
  that is a subset of the existing field.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.65.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.67.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3186,9 +3251,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.65.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.67.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure could be fixated</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3206,7 +3270,7 @@
  that is a subset
 of the existing field.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.66.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.68.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3239,9 +3303,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.66.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.68.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure could be fixated</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3256,7 +3319,7 @@
 <em class="parameter"><code>target</code></em>
  boolean if that field is not fixed yet.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.67.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.69.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3284,9 +3347,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.67.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.69.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure could be fixated</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3301,7 +3363,7 @@
 <em class="parameter"><code>target</code></em>
  string if that field is not fixed yet.</p>
 <div class="refsect3">
-<a name="id-1.3.45.8.68.5"></a><h4>Parameters</h4>
+<a name="id-1.3.46.8.70.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3329,9 +3391,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.45.8.68.6"></a><h4>Returns</h4>
+<a name="id-1.3.46.8.70.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the structure could be fixated</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -3345,7 +3406,7 @@
 </pre>
 <p>The GstStructure object. Most fields are private.</p>
 <div class="refsect3">
-<a name="id-1.3.45.9.2.5"></a><h4>Members</h4>
+<a name="id-1.3.46.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -3367,7 +3428,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstSystemClock.html b/docs/gst/html/GstSystemClock.html
index 8f07db0..36e384d 100644
--- a/docs/gst/html/GstSystemClock.html
+++ b/docs/gst/html/GstSystemClock.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstSystemClock</title>
+<title>GstSystemClock: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstStructure.html" title="GstStructure">
 <link rel="next" href="GstTagList.html" title="GstTagList">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -128,7 +128,7 @@
 clock will be increased so you need to unref the clock after
 usage.</p>
 <div class="refsect3">
-<a name="id-1.3.46.9.2.5"></a><h4>Returns</h4>
+<a name="id-1.3.47.9.2.5"></a><h4>Returns</h4>
 <p> the default clock.</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>
@@ -146,7 +146,7 @@
 clock.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.46.9.3.7"></a><h4>Parameters</h4>
+<a name="id-1.3.47.9.3.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -160,7 +160,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -169,7 +169,7 @@
 <a name="GstClockType"></a><h3>enum GstClockType</h3>
 <p>The different kind of clocks.</p>
 <div class="refsect3">
-<a name="id-1.3.46.10.2.4"></a><h4>Members</h4>
+<a name="id-1.3.47.10.2.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -195,7 +195,7 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-CLOCK-TYPE-OTHER:CAPS"></a>GST_CLOCK_TYPE_OTHER</p></td>
 <td class="enum_member_description">
-<p>some other time source is used (Since: 1.0.5)</p>
+<p>some other time source is used (Since 1.0.5)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -226,7 +226,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstTagList.html b/docs/gst/html/GstTagList.html
index 1420daa..8fda899 100644
--- a/docs/gst/html/GstTagList.html
+++ b/docs/gst/html/GstTagList.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTagList</title>
+<title>GstTagList: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstSystemClock.html" title="GstSystemClock">
 <link rel="next" href="GstTagSetter.html" title="GstTagSetter">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -948,7 +948,7 @@
 <p>A function that will be called in <a class="link" href="GstTagList.html#gst-tag-list-foreach" title="gst_tag_list_foreach ()"><code class="function">gst_tag_list_foreach()</code></a>. The function may
 not modify the tag list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -985,7 +985,7 @@
 <p>A function for merging multiple values of a tag used when registering
 tags.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1036,7 +1036,7 @@
 <p>Two default merge functions are provided: <a class="link" href="GstTagList.html#gst-tag-merge-use-first" title="gst_tag_merge_use_first ()"><code class="function">gst_tag_merge_use_first()</code></a> and
 <a class="link" href="GstTagList.html#gst-tag-merge-strings-with-comma" title="gst_tag_merge_strings_with_comma ()"><code class="function">gst_tag_merge_strings_with_comma()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.4.8"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.4.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1072,7 +1072,7 @@
 <tr>
 <td class="parameter_name"><p>func</p></td>
 <td class="parameter_description"><p> function for merging multiple values of this tag, or <a href="https://developer.gnome.org/glib/unstable/glib-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>]</span></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="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -1097,7 +1097,7 @@
 plugins will be made resident once loaded, so this function can be used
 even from dynamically loaded plugins.)</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.5.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1133,7 +1133,7 @@
 <tr>
 <td class="parameter_name"><p>func</p></td>
 <td class="parameter_description"><p> function for merging multiple values of this tag, or <a href="https://developer.gnome.org/glib/unstable/glib-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>]</span></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="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -1148,7 +1148,7 @@
 <p>This is a convenience function for the func argument of <a class="link" href="GstTagList.html#gst-tag-register" title="gst_tag_register ()"><code class="function">gst_tag_register()</code></a>.
 It creates a copy of the first value from the list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1180,7 +1180,7 @@
 It concatenates all given strings using a comma. The tag must be registered
 as a G_TYPE_STRING or this function will fail.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1209,7 +1209,7 @@
 gst_tag_exists (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *tag</code></em>);</pre>
 <p>Checks if the given type is already registered.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1224,9 +1224,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.8.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the type is already registered</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1236,7 +1235,7 @@
 gst_tag_get_type (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *tag</code></em>);</pre>
 <p>Gets the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> used for this tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1251,9 +1250,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.9.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.9.6"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of this tag</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1264,7 +1262,7 @@
 <p>Returns the human-readable name of this tag, You must not change or free
 this string.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1279,9 +1277,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.10.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.10.6"></a><h4>Returns</h4>
 <p> the human-readable name of this tag</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1292,7 +1289,7 @@
 <p>Returns the human-readable description of this tag, You must not change or
 free this string.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1307,9 +1304,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.11.6"></a><h4>Returns</h4>
 <p> the human-readable description of this tag</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1320,7 +1316,7 @@
 <p>Gets the flag of <em class="parameter"><code>tag</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1335,9 +1331,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.12.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.12.6"></a><h4>Returns</h4>
 <p> the flag of this tag.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1348,7 +1343,7 @@
 <p>Checks if the given tag is fixed. A fixed tag can only contain one value.
 Unfixed tags can contain lists of values.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1363,9 +1358,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the given tag is fixed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1386,7 +1380,7 @@
 default stream scope is assumes. See <a class="link" href="GstTagList.html#gst-tag-list-set-scope" title="gst_tag_list_set_scope ()"><code class="function">gst_tag_list_set_scope()</code></a>.</p>
 <p>Free-function: gst_tag_list_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.14.7"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.14.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1408,7 +1402,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.14.8"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.14.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>. Free with <a class="link" href="GstTagList.html#gst-tag-list-unref" title="gst_tag_list_unref ()"><code class="function">gst_tag_list_unref()</code></a>
 when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1422,7 +1416,7 @@
 <p>Creates a new empty GstTagList.</p>
 <p>Free-function: gst_tag_list_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.15.6"></a><h4>Returns</h4>
 <p> An empty tag list. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1436,7 +1430,7 @@
 Useful mostly for language bindings.</p>
 <p>Free-function: gst_tag_list_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.16.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.16.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1451,7 +1445,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.16.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.16.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>. Free with <a class="link" href="GstTagList.html#gst-tag-list-unref" title="gst_tag_list_unref ()"><code class="function">gst_tag_list_unref()</code></a>
 when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1464,7 +1458,7 @@
 gst_tag_list_new_from_string (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *str</code></em>);</pre>
 <p>Deserializes a tag list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1479,7 +1473,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.17.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> in case of an
 error. </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>]</span></p>
@@ -1500,7 +1494,7 @@
 <p>Gets the scope of <em class="parameter"><code>list</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1515,10 +1509,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.19.6"></a><h4>Returns</h4>
 <p> The scope of <em class="parameter"><code>list</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1532,7 +1525,7 @@
 . By default the scope
 of a taglist is stream scope.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1562,7 +1555,7 @@
 gst_tag_list_to_string (<em class="parameter"><code>const <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *list</code></em>);</pre>
 <p>Serializes a tag list to a string.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1577,7 +1570,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.21.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.21.6"></a><h4>Returns</h4>
 <p> a newly-allocated string, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> in case of
 an error. The string must be freed with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer
 needed. </p>
@@ -1591,7 +1584,7 @@
 gst_tag_list_is_empty (<em class="parameter"><code>const <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *list</code></em>);</pre>
 <p>Checks if the given taglist is empty.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1606,9 +1599,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.22.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.22.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the taglist is empty, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1619,7 +1611,7 @@
                        <em class="parameter"><code>const <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *list2</code></em>);</pre>
 <p>Checks if the two given taglists are equal.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1641,9 +1633,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.23.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.23.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the taglists are equal, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1660,7 +1651,7 @@
 reference to the data, you should use <a class="link" href="GstTagList.html#gst-tag-list-ref" title="gst_tag_list_ref ()"><code class="function">gst_tag_list_ref()</code></a>.</p>
 <p>When you are finished with the taglist, call <a class="link" href="GstTagList.html#gst-tag-list-unref" title="gst_tag_list_unref ()"><code class="function">gst_tag_list_unref()</code></a> on it.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.24.7"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.24.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1675,9 +1666,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.24.8"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.24.8"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1692,7 +1682,7 @@
 it -- either the one made implicitly by e.g. <a class="link" href="GstTagList.html#gst-tag-list-new" title="gst_tag_list_new ()"><code class="function">gst_tag_list_new()</code></a>, or via
 taking one explicitly with this function.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.25.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.25.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1707,9 +1697,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.25.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.25.7"></a><h4>Returns</h4>
 <p> the same <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> mini object.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1719,7 +1708,7 @@
 gst_tag_list_unref (<em class="parameter"><code><a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *taglist</code></em>);</pre>
 <p>Unref a <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>, and and free all its memory when the refcount reaches 0.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.26.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1743,7 +1732,7 @@
 . It is only safe to modify taglist
 when there is only one owner of the taglist - ie, the refcount is 1.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1778,7 +1767,7 @@
 taglist that it returns. Don't access the argument after calling this
 function. See also: <a class="link" href="GstTagList.html#gst-tag-list-ref" title="gst_tag_list_ref ()"><code class="function">gst_tag_list_ref()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.28.7"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.28.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1793,7 +1782,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.28.8"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.28.8"></a><h4>Returns</h4>
 <p> a writable taglist which may or may not be the
 same as <em class="parameter"><code>taglist</code></em>
 . </p>
@@ -1810,7 +1799,7 @@
 <p>Inserts the tags of the <em class="parameter"><code>from</code></em>
  list into the first list using the given mode.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1848,7 +1837,7 @@
 copy of the other is returned. If both lists are <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is returned.</p>
 <p>Free-function: gst_tag_list_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.30.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.30.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1875,7 +1864,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.30.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.30.7"></a><h4>Returns</h4>
 <p> the new list. </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>
@@ -1888,7 +1877,7 @@
                            <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *tag</code></em>);</pre>
 <p>Checks how many value are stored in this tag list for the given tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1910,9 +1899,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.31.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.31.6"></a><h4>Returns</h4>
 <p> The number of tags stored</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1923,7 +1911,7 @@
 <p>Get the number of tags in <em class="parameter"><code>list</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1938,10 +1926,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.32.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.32.6"></a><h4>Returns</h4>
 <p> The number of tags in <em class="parameter"><code>list</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1954,7 +1941,7 @@
  at <em class="parameter"><code>index</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1976,10 +1963,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.33.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.33.6"></a><h4>Returns</h4>
 <p> The name of the tag at <em class="parameter"><code>index</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1992,7 +1978,7 @@
                   <em class="parameter"><code>...</code></em>);</pre>
 <p>Sets the values for the given tags using the specified mode.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2034,7 +2020,7 @@
                         <em class="parameter"><code>const <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
 <p>Sets the GValue for a given tag using the specified mode.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.35.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2076,7 +2062,7 @@
                          <em class="parameter"><code>...</code></em>);</pre>
 <p>Sets the GValues for the given tags using the specified mode.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2118,7 +2104,7 @@
                          <em class="parameter"><code><span class="type">va_list</span> var_args</code></em>);</pre>
 <p>Sets the values for the given tags using the specified mode.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2160,7 +2146,7 @@
                                 <em class="parameter"><code><span class="type">va_list</span> var_args</code></em>);</pre>
 <p>Sets the GValues for the given tags using the specified mode.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.38.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2200,7 +2186,7 @@
                          <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *tag</code></em>);</pre>
 <p>Removes the given tag from the taglist.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.39.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.39.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2232,7 +2218,7 @@
 <p>Calls the given function for each tag inside the tag list. Note that if there
 is no tag, the function won't be called at all.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.40.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.40.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2269,7 +2255,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.41.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2296,7 +2282,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.41.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.41.6"></a><h4>Returns</h4>
 <p> The GValue for the specified
 entry or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the tag wasn't available or the tag
 doesn't have as many entries. </p>
@@ -2315,7 +2301,7 @@
 with the tag.
 You must <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#g-value-unset"><code class="function">g_value_unset()</code></a> the value after use.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.42.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.42.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2342,10 +2328,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.42.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.42.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2358,7 +2343,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.43.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2385,10 +2370,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.43.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.43.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2402,7 +2386,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.44.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2434,10 +2418,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.44.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.44.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2450,7 +2433,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.45.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.45.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2477,10 +2460,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.45.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.45.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2494,7 +2476,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2526,10 +2508,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.46.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.46.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2542,7 +2523,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.47.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2569,10 +2550,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.47.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2586,7 +2566,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.48.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2618,10 +2598,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.48.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.48.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2643,7 +2622,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.50.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2675,10 +2654,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.50.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.50.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2691,7 +2669,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.51.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.51.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2718,10 +2696,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.51.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.51.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2735,7 +2712,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.52.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2767,10 +2744,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.52.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.52.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2783,7 +2759,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.53.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2810,10 +2786,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.53.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.53.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2827,7 +2802,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.54.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.54.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2859,10 +2834,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.54.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.54.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2875,7 +2849,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.55.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2902,10 +2876,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.55.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.55.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2919,7 +2892,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.56.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2951,10 +2924,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.56.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.56.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2974,7 +2946,7 @@
 returned string is also guaranteed to be non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> and non-empty.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.57.8"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.57.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3001,10 +2973,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.57.9"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.57.9"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3023,7 +2994,7 @@
 returned string is also guaranteed to be non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> and non-empty.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.58.7"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.58.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3055,10 +3026,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.58.8"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.58.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3076,7 +3046,7 @@
 to be freed by the caller. The returned string is also guaranteed to
 be non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> and non-empty.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.59.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.59.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3108,10 +3078,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.59.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.59.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was set, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3124,7 +3093,7 @@
 <p>Copies the contents for the given tag into the value, merging multiple values
 into one if multiple values are associated with the tag.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.60.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.60.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3151,10 +3120,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.60.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.60.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3168,7 +3136,7 @@
 <p>Gets the value that is at the given index for the given tag in the given
 list.</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.61.5"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.61.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3200,10 +3168,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.61.6"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.61.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3219,7 +3186,7 @@
 needed.</p>
 <p>Free-function: g_date_free</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.62.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.62.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3247,10 +3214,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.62.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.62.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a date was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list or if it was <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3267,7 +3233,7 @@
 with <a href="https://developer.gnome.org/glib/unstable/glib-Date-and-Time-Functions.html#g-date-free"><code class="function">g_date_free()</code></a> when it is no longer needed.</p>
 <p>Free-function: g_date_free</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.63.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.63.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3299,10 +3265,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.63.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.63.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list or if it was <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3318,7 +3283,7 @@
 it is no longer needed.</p>
 <p>Free-function: gst_date_time_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.64.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.64.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3346,10 +3311,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.64.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.64.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a datetime was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in
 the given list or if it was <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3366,7 +3330,7 @@
 with <a class="link" href="GstDateTime.html#gst-date-time-unref" title="gst_date_time_unref ()"><code class="function">gst_date_time_unref()</code></a> when it is no longer needed.</p>
 <p>Free-function: gst_date_time_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.65.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.65.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3398,10 +3362,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.65.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.65.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a value was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list or if it was <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3419,7 +3382,7 @@
 <a class="link" href="GstSample.html#gst-sample-get-caps" title="gst_sample_get_caps ()"><code class="function">gst_sample_get_caps()</code></a>.</p>
 <p>Free-function: gst_sample_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.66.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.66.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3447,10 +3410,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.66.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.66.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a sample was returned, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in
 the given list or if it was <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3469,7 +3431,7 @@
 caps (if any) with <a class="link" href="GstSample.html#gst-sample-get-caps" title="gst_sample_get_caps ()"><code class="function">gst_sample_get_caps()</code></a>.</p>
 <p>Free-function: gst_sample_unref</p>
 <div class="refsect3">
-<a name="id-1.3.47.8.67.6"></a><h4>Parameters</h4>
+<a name="id-1.3.48.8.67.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3502,10 +3464,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.47.8.67.7"></a><h4>Returns</h4>
+<a name="id-1.3.48.8.67.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if a sample was copied, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the tag didn't exist in the
 given list or if it was <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -3519,7 +3480,7 @@
 </pre>
 <p>Object describing tags / metadata.</p>
 <div class="refsect3">
-<a name="id-1.3.47.9.2.5"></a><h4>Members</h4>
+<a name="id-1.3.48.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -3545,7 +3506,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.47.9.3.4"></a><p class="title"><b>Table 1. merge mode</b></p>
+<a name="id-1.3.48.9.3.4"></a><p class="title"><b>Table 1. merge mode</b></p>
 <div class="table-contents"><table summary="merge mode" border="1">
 <colgroup>
 <col>
@@ -3608,7 +3569,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="refsect3">
-<a name="id-1.3.47.9.3.5"></a><h4>Members</h4>
+<a name="id-1.3.48.9.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3681,7 +3642,7 @@
 <a name="GstTagFlag"></a><h3>enum GstTagFlag</h3>
 <p>Extra tag flags used when registering tags.</p>
 <div class="refsect3">
-<a name="id-1.3.47.9.4.4"></a><h4>Members</h4>
+<a name="id-1.3.48.9.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3734,7 +3695,7 @@
 <p>GstTagScope specifies if a taglist applies to the complete
 medium or only to one single stream.</p>
 <div class="refsect3">
-<a name="id-1.3.47.9.5.4"></a><h4>Members</h4>
+<a name="id-1.3.48.9.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4392,7 +4353,7 @@
 <pre class="programlisting">#define GST_TAG_PUBLISHER                         "publisher"
 </pre>
 <p>Name of the label or publisher (string)</p>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4401,7 +4362,7 @@
 </pre>
 <p>Information about the people behind a remix and similar
 interpretations of another existing piece (string)</p>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -4410,12 +4371,11 @@
 </pre>
 <a class="ulink" href="http://en.wikipedia.org/wiki/Note#Note_designation_in_accordance_with_octave_name" target="_top">Midi note number</a><p>of the audio track. This is useful for sample instruments and in particular
 for multi-samples.</p>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstTagSetter.html b/docs/gst/html/GstTagSetter.html
index 4395582..1ba5318 100644
--- a/docs/gst/html/GstTagSetter.html
+++ b/docs/gst/html/GstTagSetter.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTagSetter</title>
+<title>GstTagSetter: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstTagList.html" title="GstTagList">
 <link rel="next" href="GstTask.html" title="GstTask">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -235,7 +235,7 @@
 <p>Reset the internal taglist. Elements should call this from within the
 state-change handler.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -259,7 +259,7 @@
                            <em class="parameter"><code><a class="link" href="GstTagList.html#GstTagMergeMode" title="enum GstTagMergeMode"><span class="type">GstTagMergeMode</span></a> mode</code></em>);</pre>
 <p>Merges the given list into the setter's list using the given mode.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -297,7 +297,7 @@
 <p>Adds the given tag / value pairs on the setter using the given merge mode.
 The list must be terminated with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -339,7 +339,7 @@
                               <em class="parameter"><code>const <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
 <p>Adds the given tag / GValue pair on the setter using the given merge mode.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -382,7 +382,7 @@
 <p>Adds the given tag / GValue pairs on the setter using the given merge mode.
 The list must be terminated with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -425,7 +425,7 @@
 <p>Adds the given tag / value pairs on the setter using the given merge mode.
 The list must be terminated with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -468,7 +468,7 @@
 <p>Adds the given tag / GValue pairs on the setter using the given merge mode.
 The list must be terminated with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -509,7 +509,7 @@
 modified or freed.</p>
 <p>This function is not thread-safe.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.9.6"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -524,7 +524,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.48.9.9.7"></a><h4>Returns</h4>
+<a name="id-1.3.49.9.9.7"></a><h4>Returns</h4>
 <p> a current snapshot of the
 taglist used in the setter or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if none is used. </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>
@@ -540,7 +540,7 @@
 specified by this interface. The default is <a class="link" href="GstTagList.html#GST-TAG-MERGE-KEEP:CAPS"><span class="type">GST_TAG_MERGE_KEEP</span></a>, which keeps
 the tags set with this interface and discards tags from events.</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -570,7 +570,7 @@
 <p>Queries the mode by which tags inside the setter are overwritten by tags
 from events</p>
 <div class="refsect3">
-<a name="id-1.3.48.9.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.49.9.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -585,9 +585,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.48.9.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.49.9.11.6"></a><h4>Returns</h4>
 <p> the merge mode used inside the element.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -611,7 +610,7 @@
 </pre>
 <p><a class="link" href="GstTagSetter.html#GstTagSetterInterface" title="struct GstTagSetterInterface"><span class="type">GstTagSetterInterface</span></a> interface.</p>
 <div class="refsect3">
-<a name="id-1.3.48.10.3.5"></a><h4>Members</h4>
+<a name="id-1.3.49.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -629,7 +628,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstTask.html b/docs/gst/html/GstTask.html
index 2712f14..89fae3c 100644
--- a/docs/gst/html/GstTask.html
+++ b/docs/gst/html/GstTask.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTask</title>
+<title>GstTask: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstTagSetter.html" title="GstTagSetter">
 <link rel="next" href="GstTaskPool.html" title="GstTaskPool">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -273,7 +273,7 @@
 <p>A function that will repeatedly be called in the thread created by
 a <a class="link" href="GstTask.html" title="GstTask"><span class="type">GstTask</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -295,7 +295,7 @@
 </pre>
 <p>Send a broadcast signal to all waiting task conds</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -317,7 +317,7 @@
 </pre>
 <p>Get access to the cond of the task.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -339,7 +339,7 @@
 </pre>
 <p>Get access to the task lock.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -361,7 +361,7 @@
 </pre>
 <p>Signal the task cond</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -383,7 +383,7 @@
 </pre>
 <p>Get access to the state of the task.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -405,7 +405,7 @@
 </pre>
 <p>Wait for the task cond to be signalled</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -441,7 +441,7 @@
 <em class="parameter"><code>func</code></em>
  is called.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.9.8"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.9.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -470,7 +470,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.9.9"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.9.9"></a><h4>Returns</h4>
 <p> A new <a class="link" href="GstTask.html" title="GstTask"><span class="type">GstTask</span></a>.</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>
@@ -488,7 +488,7 @@
 <a class="link" href="GstTask.html#gst-task-start" title="gst_task_start ()"><code class="function">gst_task_start()</code></a>.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.10.7"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.10.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -524,7 +524,7 @@
 .</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.11.6"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -555,7 +555,7 @@
 threads.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.12.6"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -570,7 +570,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.12.7"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.12.7"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstTaskPool.html" title="GstTaskPool"><span class="type">GstTaskPool</span></a> used by <em class="parameter"><code>task</code></em>
 . <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a>
 after usage. </p>
@@ -586,7 +586,7 @@
                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>Custom GstTask thread callback functions that can be installed.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -631,7 +631,7 @@
  is no
 longer referenced.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -683,7 +683,7 @@
  is no
 longer referenced.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -724,7 +724,7 @@
 gst_task_get_state (<em class="parameter"><code><a class="link" href="GstTask.html" title="GstTask"><span class="type">GstTask</span></a> *task</code></em>);</pre>
 <p>Get the current state of the task.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -739,10 +739,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.16.6"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.16.6"></a><h4>Returns</h4>
 <p> The <a class="link" href="GstTask.html#GstTaskState" title="enum GstTaskState"><span class="type">GstTaskState</span></a> of the task</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -760,7 +759,7 @@
 this function will return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.17.7"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.17.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -782,9 +781,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.17.8"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.17.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the state could be changed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -798,7 +796,7 @@
 in the paused state. This function does not wait for the task to complete
 the paused state.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -813,10 +811,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.18.6"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be paused.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -829,7 +826,7 @@
  must have a lock associated with it using
 <a class="link" href="GstTask.html#gst-task-set-lock" title="gst_task_set_lock ()"><code class="function">gst_task_set_lock()</code></a> or this function will return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -844,10 +841,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.19.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be started.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -860,7 +856,7 @@
 will not wait for the task to have completely stopped. Use
 <a class="link" href="GstTask.html#gst-task-join" title="gst_task_join ()"><code class="function">gst_task_join()</code></a> to stop and wait for completion.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -875,10 +871,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.20.6"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.20.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be stopped.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -894,7 +889,7 @@
 would cause a deadlock. The function will detect this and print a
 g_warning.</p>
 <div class="refsect3">
-<a name="id-1.3.49.8.21.7"></a><h4>Parameters</h4>
+<a name="id-1.3.50.8.21.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -909,10 +904,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.49.8.21.8"></a><h4>Returns</h4>
+<a name="id-1.3.50.8.21.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the task could be joined.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -944,7 +938,7 @@
 </pre>
 <p>The <a class="link" href="GstTask.html" title="GstTask"><span class="type">GstTask</span></a> object.</p>
 <div class="refsect3">
-<a name="id-1.3.49.9.2.5"></a><h4>Members</h4>
+<a name="id-1.3.50.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -997,7 +991,7 @@
 <a name="GstTaskState"></a><h3>enum GstTaskState</h3>
 <p>The different states a task can be in</p>
 <div class="refsect3">
-<a name="id-1.3.49.9.3.4"></a><h4>Members</h4>
+<a name="id-1.3.50.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -1037,7 +1031,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstTaskPool.html b/docs/gst/html/GstTaskPool.html
index c15e35e..0cecdba 100644
--- a/docs/gst/html/GstTaskPool.html
+++ b/docs/gst/html/GstTaskPool.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTaskPool</title>
+<title>GstTaskPool: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstTask.html" title="GstTask">
 <link rel="next" href="GstToc.html" title="GstToc">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -137,7 +137,7 @@
 <span class="c_punctuation">(</span>*GstTaskPoolFunction<span class="c_punctuation">)</span> (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
 <p>Task function, see <a class="link" href="GstTaskPool.html#gst-task-pool-push" title="gst_task_pool_push ()"><code class="function">gst_task_pool_push()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.50.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.51.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -160,7 +160,7 @@
 <p>Create a new default task pool. The default task pool will use a regular
 GThreadPool for threads.</p>
 <div class="refsect3">
-<a name="id-1.3.50.8.3.5"></a><h4>Returns</h4>
+<a name="id-1.3.51.8.3.5"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstTaskPool.html" title="GstTaskPool"><span class="type">GstTaskPool</span></a>. <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -174,7 +174,7 @@
 <p>Prepare the taskpool for accepting <a class="link" href="GstTaskPool.html#gst-task-pool-push" title="gst_task_pool_push ()"><code class="function">gst_task_pool_push()</code></a> operations.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.50.8.4.6"></a><h4>Parameters</h4>
+<a name="id-1.3.51.8.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -207,7 +207,7 @@
 <p>Start the execution of a new thread from <em class="parameter"><code>pool</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.50.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.51.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -240,7 +240,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.50.8.5.6"></a><h4>Returns</h4>
+<a name="id-1.3.51.8.5.6"></a><h4>Returns</h4>
 <p> a pointer that should be used
 for the gst_task_pool_join function. This pointer can be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, you
 must check <em class="parameter"><code>error</code></em>
@@ -258,7 +258,7 @@
  is the id obtained from 
 <a class="link" href="GstTaskPool.html#gst-task-pool-push" title="gst_task_pool_push ()"><code class="function">gst_task_pool_push()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.50.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.51.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -289,7 +289,7 @@
 to ensure proper cleanup of internal data structures in test suites.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.50.8.7.6"></a><h4>Parameters</h4>
+<a name="id-1.3.51.8.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -328,7 +328,7 @@
 </pre>
 <p>The <a class="link" href="GstTaskPool.html#GstTaskPoolClass" title="struct GstTaskPoolClass"><span class="type">GstTaskPoolClass</span></a> object.</p>
 <div class="refsect3">
-<a name="id-1.3.50.9.3.5"></a><h4>Members</h4>
+<a name="id-1.3.51.9.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -372,7 +372,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstToc.html b/docs/gst/html/GstToc.html
index 56f61ac..3370915 100644
--- a/docs/gst/html/GstToc.html
+++ b/docs/gst/html/GstToc.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstToc</title>
+<title>GstToc: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstTaskPool.html" title="GstTaskPool">
 <link rel="next" href="gstreamer-GstTocSetter.html" title="GstTocSetter">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -406,7 +406,7 @@
 gst_toc_new (<em class="parameter"><code><a class="link" href="GstToc.html#GstTocScope" title="enum GstTocScope"><span class="type">GstTocScope</span></a> scope</code></em>);</pre>
 <p>Create a new <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> structure.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -421,7 +421,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.2.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.2.6"></a><h4>Returns</h4>
 <p> newly allocated <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> structure, free it
 with <a class="link" href="GstToc.html#gst-toc-unref" title="gst_toc_unref()"><code class="function">gst_toc_unref()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -446,7 +446,7 @@
 </pre>
 <p>Copy <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> with all subentries (deep copy).</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -461,7 +461,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.5.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.5.6"></a><h4>Returns</h4>
 <p> newly allocated <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> in case of success,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> otherwise; free it when done with <a class="link" href="GstToc.html#gst-toc-unref" title="gst_toc_unref()"><code class="function">gst_toc_unref()</code></a>. </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>]</span></p>
@@ -479,7 +479,7 @@
 <pre class="programlisting"><a class="link" href="GstToc.html#GstTocScope" title="enum GstTocScope"><span class="returnvalue">GstTocScope</span></a>
 gst_toc_get_scope (<em class="parameter"><code>const <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> *toc</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.3.51.9.7.4"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.7.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -494,10 +494,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.7.5"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.7.5"></a><h4>Returns</h4>
 <p> scope of <em class="parameter"><code>toc</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -508,7 +507,7 @@
 <p>Gets the list of <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> of <em class="parameter"><code>toc</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -523,7 +522,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.8.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.8.6"></a><h4>Returns</h4>
 <p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> for <em class="parameter"><code>entry</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="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Gst.TocEntry]</span></p>
@@ -539,7 +538,7 @@
  to <em class="parameter"><code>toc</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -569,7 +568,7 @@
 <p>Gets the tags for <em class="parameter"><code>toc</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -584,7 +583,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.10.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.10.6"></a><h4>Returns</h4>
 <p> A <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> for <em class="parameter"><code>entry</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>]</span></p>
@@ -602,7 +601,7 @@
  using <em class="parameter"><code>mode</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -638,7 +637,7 @@
 <p>Set a <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> with tags for the complete <em class="parameter"><code>toc</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -674,7 +673,7 @@
                    <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uid</code></em>);</pre>
 <p>Create new <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> structure.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -696,9 +695,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.14.6"></a><h4>Returns</h4>
 <p> newly allocated <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> structure, free it with <a class="link" href="GstToc.html#gst-toc-entry-unref" title="gst_toc_entry_unref()"><code class="function">gst_toc_entry_unref()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -720,7 +718,7 @@
 </pre>
 <p>Copy <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> with all subentries (deep copy).</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -735,7 +733,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.17.6"></a><h4>Returns</h4>
 <p> newly allocated <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> in case of
 success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> otherwise; free it when done with
 <a class="link" href="GstToc.html#gst-toc-entry-unref" title="gst_toc_entry_unref()"><code class="function">gst_toc_entry_unref()</code></a>. </p>
@@ -758,7 +756,7 @@
  in the <em class="parameter"><code>toc</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -780,7 +778,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.19.6"></a><h4>Returns</h4>
 <p> <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> with specified
 <em class="parameter"><code>uid</code></em>
 from the <em class="parameter"><code>toc</code></em>
@@ -796,7 +794,7 @@
 <p>Gets the parent <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> of <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -811,7 +809,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.20.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.20.6"></a><h4>Returns</h4>
 <p> The parent <a class="link" href="GstToc.html" title="GstToc"><span class="type">GstToc</span></a> of <em class="parameter"><code>entry</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>]</span></p>
@@ -825,7 +823,7 @@
 <p>Gets the UID of <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -840,7 +838,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.21.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.21.6"></a><h4>Returns</h4>
 <p> The UID of <em class="parameter"><code>entry</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>]</span></p>
@@ -854,7 +852,7 @@
 <p>Gets the parent <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> of <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -869,7 +867,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.22.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.22.6"></a><h4>Returns</h4>
 <p> The parent <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> of <em class="parameter"><code>entry</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>]</span></p>
@@ -883,7 +881,7 @@
 <p>Gets the sub-entries of <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -898,7 +896,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.23.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.23.6"></a><h4>Returns</h4>
 <p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> of <em class="parameter"><code>entry</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="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Gst.TocEntry]</span></p>
@@ -914,7 +912,7 @@
  to <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.24.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -951,7 +949,7 @@
 is not automatically applying the loop. The application can process this
 meta data and use it e.g. to send a seek-event to loop a section.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.25.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -980,12 +978,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.25.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.25.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if all non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> storage pointers were filled with appropriate
 values, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -999,7 +996,7 @@
  values for the <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.26.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1025,7 +1022,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1040,7 +1037,7 @@
  and write them into appropriate
 storages.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1069,10 +1066,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.27.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.27.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if all non-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> storage pointers were filled with appropriate
 values, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1087,7 +1083,7 @@
  values for the <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1122,7 +1118,7 @@
 <p>Gets the tags for <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1137,7 +1133,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.29.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.29.6"></a><h4>Returns</h4>
 <p> A <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> for <em class="parameter"><code>entry</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>]</span></p>
@@ -1155,7 +1151,7 @@
  using <em class="parameter"><code>mode</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1191,7 +1187,7 @@
 <p>Set a <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> with tags for the complete <em class="parameter"><code>entry</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1221,7 +1217,7 @@
 <p>Converts <em class="parameter"><code>type</code></em>
  to a string representation.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1236,12 +1232,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.32.6"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.32.6"></a><h4>Returns</h4>
 <p> Returns a human-readable string for <em class="parameter"><code>type</code></em>
 . This string is
 only for debugging purpose and should not be displayed in a user
 interface.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1250,7 +1245,7 @@
 <pre class="programlisting"><a class="link" href="GstToc.html#GstTocEntryType" title="enum GstTocEntryType"><span class="returnvalue">GstTocEntryType</span></a>
 gst_toc_entry_get_entry_type (<em class="parameter"><code>const <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> *entry</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.3.51.9.33.4"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.33.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1265,10 +1260,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.33.5"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.33.5"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>entry</code></em>
 's entry type</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1277,7 +1271,7 @@
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_toc_entry_is_alternative (<em class="parameter"><code>const <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> *entry</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.3.51.9.34.4"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.34.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1292,10 +1286,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.34.5"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.34.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>entry</code></em>
 's type is an alternative type, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1304,7 +1297,7 @@
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_toc_entry_is_sequence (<em class="parameter"><code>const <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> *entry</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.3.51.9.35.4"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.35.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1319,10 +1312,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.51.9.35.5"></a><h4>Returns</h4>
+<a name="id-1.3.52.9.35.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>entry</code></em>
 's type is a sequence type, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1333,7 +1325,7 @@
 <p>Checks if <em class="parameter"><code>entry_type</code></em>
  indicates that its <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> is an alternative.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1356,7 +1348,7 @@
 <p>Checks if <em class="parameter"><code>entry_type</code></em>
  indicates that its <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> is a sequence.</p>
 <div class="refsect3">
-<a name="id-1.3.51.9.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.52.9.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1378,7 +1370,7 @@
 </pre>
 <p>Special value for the repeat_count set in <a class="link" href="GstToc.html#gst-toc-entry-set-loop" title="gst_toc_entry_set_loop ()"><code class="function">gst_toc_entry_set_loop()</code></a> or
 returned by <a class="link" href="GstToc.html#gst-toc-entry-set-loop" title="gst_toc_entry_set_loop ()"><code class="function">gst_toc_entry_set_loop()</code></a> to indicate infinite looping.</p>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -1392,7 +1384,7 @@
 <a name="GstTocScope"></a><h3>enum GstTocScope</h3>
 <p>The scope of a TOC.</p>
 <div class="refsect3">
-<a name="id-1.3.51.10.3.4"></a><h4>Members</h4>
+<a name="id-1.3.52.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -1435,7 +1427,7 @@
 <p>The different types of TOC entries (see <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a>).</p>
 <p>There are two types of TOC entries: alternatives or parts in a sequence.</p>
 <div class="refsect3">
-<a name="id-1.3.51.10.5.5"></a><h4>Members</h4>
+<a name="id-1.3.52.10.5.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -1502,7 +1494,7 @@
 <p>How a <a class="link" href="GstToc.html#GstTocEntry"><span class="type">GstTocEntry</span></a> should be repeated. By default, entries are played a
 single time.</p>
 <div class="refsect3">
-<a name="id-1.3.51.10.6.4"></a><h4>Members</h4>
+<a name="id-1.3.52.10.6.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -1541,7 +1533,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -1550,7 +1542,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/GstTypeFindFactory.html b/docs/gst/html/GstTypeFindFactory.html
index dbfdd10..a7408cd 100644
--- a/docs/gst/html/GstTypeFindFactory.html
+++ b/docs/gst/html/GstTypeFindFactory.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTypeFindFactory</title>
+<title>GstTypeFindFactory: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstTypeFind.html" title="GstTypeFind">
-<link rel="next" href="gstreamer-GstUriHandler.html" title="GstUriHandler">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-GstUri.html" title="GstUri">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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="gstreamer-GstTypeFind.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-GstUriHandler.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-GstUri.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="GstTypeFindFactory"></a><div class="titlepage"></div>
@@ -219,7 +219,7 @@
 factory name.</p>
 <p>Free-function: gst_plugin_feature_list_free</p>
 <div class="refsect3">
-<a name="id-1.3.54.8.2.7"></a><h4>Returns</h4>
+<a name="id-1.3.55.8.2.7"></a><h4>Returns</h4>
 <p> the list of all
 registered <a class="link" href="GstTypeFindFactory.html" title="GstTypeFindFactory"><span class="type">GstTypeFindFactory</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Gst.TypeFindFactory]</span></p>
@@ -235,7 +235,7 @@
 copy it using <a href="https://developer.gnome.org/glib/unstable/glib-String-Utility-Functions.html#g-strdupv"><code class="function">g_strdupv()</code></a>.  This function may return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to indicate
 a 0-length list.</p>
 <div class="refsect3">
-<a name="id-1.3.54.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.55.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -250,7 +250,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.54.8.3.6"></a><h4>Returns</h4>
+<a name="id-1.3.55.8.3.6"></a><h4>Returns</h4>
 <p>    a <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated array of extensions associated with this factory. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8][<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>
@@ -262,7 +262,7 @@
 gst_type_find_factory_get_caps (<em class="parameter"><code><a class="link" href="GstTypeFindFactory.html" title="GstTypeFindFactory"><span class="type">GstTypeFindFactory</span></a> *factory</code></em>);</pre>
 <p>Gets the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> associated with a typefind factory.</p>
 <div class="refsect3">
-<a name="id-1.3.54.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.55.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -277,7 +277,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.54.8.4.6"></a><h4>Returns</h4>
+<a name="id-1.3.55.8.4.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> associated with this factory. </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>
@@ -291,7 +291,7 @@
 without typefind functions are a last-effort fallback mechanism to
 e.g. assume a certain media type based on the file extension.</p>
 <div class="refsect3">
-<a name="id-1.3.54.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.55.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -306,9 +306,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.54.8.5.6"></a><h4>Returns</h4>
+<a name="id-1.3.55.8.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the factory has a typefind functions set, otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -319,7 +318,7 @@
                                      <em class="parameter"><code><a class="link" href="gstreamer-GstTypeFind.html#GstTypeFind" title="struct GstTypeFind"><span class="type">GstTypeFind</span></a> *find</code></em>);</pre>
 <p>Calls the <a class="link" href="gstreamer-GstTypeFind.html#GstTypeFindFunction" title="GstTypeFindFunction ()"><span class="type">GstTypeFindFunction</span></a> associated with this factory.</p>
 <div class="refsect3">
-<a name="id-1.3.54.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.55.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -353,7 +352,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/annotation-glossary.html b/docs/gst/html/annotation-glossary.html
index ced462a..4652329 100644
--- a/docs/gst/html/annotation-glossary.html
+++ b/docs/gst/html/annotation-glossary.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: Annotation Glossary</title>
+<title>Annotation Glossary: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
-<link rel="prev" href="api-index-deprecated.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="prev" href="ix08.html" title="Index of new API in 1.0.5">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -24,12 +24,16 @@
                      <span class="dim">|</span> 
                   <a class="shortcut" href="#glsO">O</a>
                      <span class="dim">|</span> 
+                  <a class="shortcut" href="#glsR">R</a>
+                     <span class="dim">|</span> 
                   <a class="shortcut" href="#glsS">S</a>
                      <span class="dim">|</span> 
-                  <a class="shortcut" href="#glsT">T</a></span></td>
+                  <a class="shortcut" href="#glsT">T</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#glsV">V</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="api-index-deprecated.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="ix08.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
 </tr></table>
 <div class="glossary">
@@ -61,6 +65,9 @@
 <dd class="glossdef"><p>Out parameter, where caller must allocate storage.</p></dd>
 <dt><span class="glossterm"><a name="annotation-glossterm-out%20caller-allocates"></a>out caller-allocates</span></dt>
 <dd class="glossdef"><p>Out parameter, where caller must allocate storage.</p></dd>
+<a name="glsR"></a><h3 class="title">R</h3>
+<dt><span class="glossterm"><a name="annotation-glossterm-rename-to"></a>rename-to</span></dt>
+<dd class="glossdef"><p>Rename the original symbol's name to SYMBOL.</p></dd>
 <a name="glsS"></a><h3 class="title">S</h3>
 <dt><span class="glossterm"><a name="annotation-glossterm-scope%20async"></a>scope async</span></dt>
 <dd class="glossdef"><p>The callback is valid until first called.</p></dd>
@@ -79,9 +86,11 @@
 <dd class="glossdef"><p>Don't free data after the code is done.</p></dd>
 <dt><span class="glossterm"><a name="annotation-glossterm-type"></a>type</span></dt>
 <dd class="glossdef"><p>Override the parsed C type with given type.</p></dd>
+<a name="glsV"></a><h3 class="title">V</h3>
+<dt><span class="glossterm"><a name="annotation-glossterm-virtual"></a>virtual</span></dt>
+<dd class="glossdef"><p>This is the invoker for a virtual method.</p></dd>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gst-building.html b/docs/gst/html/gst-building.html
index 5615141..8fc777f 100644
--- a/docs/gst/html/gst-building.html
+++ b/docs/gst/html/gst-building.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: Building GStreamer and GStreamer Applications</title>
+<title>Building GStreamer and GStreamer Applications: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer.html" title="GStreamer Overview">
 <link rel="prev" href="gstreamer.html" title="GStreamer Overview">
 <link rel="next" href="gst-running.html" title="Running GStreamer Applications">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -103,7 +103,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gst-running.html b/docs/gst/html/gst-running.html
index 012b00c..2582064 100644
--- a/docs/gst/html/gst-running.html
+++ b/docs/gst/html/gst-running.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: Running GStreamer Applications</title>
+<title>Running GStreamer Applications: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer.html" title="GStreamer Overview">
 <link rel="prev" href="gst-building.html" title="Building GStreamer and GStreamer Applications">
 <link rel="next" href="libgstreamer.html" title="GStreamer Core Library">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -371,23 +371,34 @@
   </p>
 <p><a name="GST_TAG_ENCODING"></a><b><code class="envar">GST_TAG_ENCODING</code>. </b>
 Try this character encoding first for tag-related strings where the encoding
-is not defined and which are not UTF-8 already. By defaul the current locale
+is not defined and which are not UTF-8 already. By default the current locale
 will be tried (if not UTF-8).
   </p>
 <p><a name="GST_TAG_ID3_ENCODING"></a><b><code class="envar">GST_TAG_ID3_ENCODING</code>. </b>
 Try this character encoding first for ID3 tag-related strings where the
-encoding is not defined and which are not UTF-8 already. By defaul the current
+encoding is not defined and which are not UTF-8 already. By default the current
 locale will be tried (if not UTF-8).
   </p>
 <p><a name="GST_TAG_ID3V1_ENCODING"></a><b><code class="envar">GST_TAG_ID3V1_ENCODING</code>. </b>
 Try this character encoding first for ID3v1 tag-related strings where the
 encoding does not look like UTF-8.
   </p>
+<p><a name="GST_GL_WINDOW"></a><b><code class="envar">GST_GL_WINDOW</code>. </b>
+Influences the window system to use by the GStreamer OpenGL library.
+Common values are 'x11', 'wayland', 'win32' or 'cocoa'.
+  </p>
+<p><a name="GST_GL_PLATFORM"></a><b><code class="envar">GST_GL_PLATFORM</code>. </b>
+Influences the OpenGL platform to use by the GStreamer OpenGL library.
+Common values are 'egl', 'glx', 'wgl' or 'cgl'.
+  </p>
+<p><a name="GST_GL_API"></a><b><code class="envar">GST_GL_API</code>. </b>
+Influences the OpenGL API requested by the OpenGL platform.
+Common values are 'opengl' or 'gles2'.
+  </p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-1.0.devhelp2 b/docs/gst/html/gstreamer-1.0.devhelp2
index 50a8101..e9feec5 100644
--- a/docs/gst/html/gstreamer-1.0.devhelp2
+++ b/docs/gst/html/gstreamer-1.0.devhelp2
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
 <book xmlns="http://www.devhelp.net/book" title="GStreamer 1.0 Core Reference Manual" link="index.html" author="" name="gstreamer-1.0" version="2" language="c">
   <chapters>
     <sub name="GStreamer Overview" link="gstreamer.html">
@@ -20,7 +19,7 @@
       <sub name="GstSample" link="GstSample.html"/>
       <sub name="GstChildProxy" link="GstChildProxy.html"/>
       <sub name="GstClock" link="GstClock.html"/>
-      <sub name="gstconfig" link="gstreamer-gstconfig.html"/>
+      <sub name="GstConfig" link="gstreamer-GstConfig.html"/>
       <sub name="GstContext" link="GstContext.html"/>
       <sub name="GstControlBinding" link="GstControlBinding.html"/>
       <sub name="GstControlSource" link="GstControlSource.html"/>
@@ -46,6 +45,7 @@
       <sub name="GstPluginFeature" link="GstPluginFeature.html"/>
       <sub name="GstPoll" link="gstreamer-GstPoll.html"/>
       <sub name="GstPreset" link="GstPreset.html"/>
+      <sub name="GstProtectionMeta" link="gstreamer-GstProtectionMeta.html"/>
       <sub name="GstQuery" link="GstQuery.html"/>
       <sub name="GstRegistry" link="GstRegistry.html"/>
       <sub name="GstSegment" link="GstSegment.html"/>
@@ -59,6 +59,7 @@
       <sub name="GstTocSetter" link="gstreamer-GstTocSetter.html"/>
       <sub name="GstTypeFind" link="gstreamer-GstTypeFind.html"/>
       <sub name="GstTypeFindFactory" link="GstTypeFindFactory.html"/>
+      <sub name="GstUri" link="gstreamer-GstUri.html"/>
       <sub name="GstUriHandler" link="gstreamer-GstUriHandler.html"/>
       <sub name="GstUtils" link="gstreamer-GstUtils.html"/>
       <sub name="GstValue" link="gstreamer-GstValue.html"/>
@@ -74,12 +75,17 @@
       <sub name="GstInfo" link="gstreamer-GstInfo.html"/>
     </sub>
     <sub name="Object Hierarchy" link="gstreamer-hierarchy.html"/>
-    <sub name="API Index" link="api-index-full.html"/>
-    <sub name="Index of deprecated API" link="api-index-deprecated.html"/>
+    <sub name="API Index" link="ix01.html"/>
+    <sub name="Index of deprecated API" link="ix02.html"/>
+    <sub name="Index of new API in 1.6" link="ix03.html"/>
+    <sub name="Index of new API in 1.4" link="ix04.html"/>
+    <sub name="Index of new API in 1.2.3" link="ix05.html"/>
+    <sub name="Index of new API in 1.2" link="ix06.html"/>
+    <sub name="Index of new API in 1.0.10" link="ix07.html"/>
+    <sub name="Index of new API in 1.0.5" link="ix08.html"/>
     <sub name="Annotation Glossary" link="annotation-glossary.html"/>
   </chapters>
   <functions>
-    <keyword type="" name="Environment variables" link="gst-running.html#id-1.2.6.3.2"/>
     <keyword type="function" name="gst_init ()" link="gstreamer-Gst.html#gst-init"/>
     <keyword type="function" name="gst_init_check ()" link="gstreamer-Gst.html#gst-init-check"/>
     <keyword type="function" name="gst_init_get_option_group ()" link="gstreamer-Gst.html#gst-init-get-option-group"/>
@@ -115,7 +121,6 @@
     <keyword type="function" name="gst_atomic_queue_pop ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-pop"/>
     <keyword type="function" name="gst_atomic_queue_length ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-length"/>
     <keyword type="struct" name="GstAtomicQueue" link="gstreamer-GstAtomicQueue.html#GstAtomicQueue"/>
-    <keyword type="" name="Notes" link="GstBin.html#id-1.3.6.10.9"/>
     <keyword type="function" name="gst_bin_new ()" link="GstBin.html#gst-bin-new"/>
     <keyword type="function" name="gst_bin_add ()" link="GstBin.html#gst-bin-add"/>
     <keyword type="function" name="gst_bin_remove ()" link="GstBin.html#gst-bin-remove"/>
@@ -132,6 +137,7 @@
     <keyword type="function" name="gst_bin_add_many ()" link="GstBin.html#gst-bin-add-many"/>
     <keyword type="function" name="gst_bin_remove_many ()" link="GstBin.html#gst-bin-remove-many"/>
     <keyword type="function" name="gst_bin_find_unlinked_pad ()" link="GstBin.html#gst-bin-find-unlinked-pad"/>
+    <keyword type="function" name="gst_bin_sync_children_states ()" link="GstBin.html#gst-bin-sync-children-states" since="1.6"/>
     <keyword type="macro" name="GST_BIN_IS_NO_RESYNC()" link="GstBin.html#GST-BIN-IS-NO-RESYNC:CAPS" since="1.0.5"/>
     <keyword type="macro" name="GST_BIN_CHILDREN()" link="GstBin.html#GST-BIN-CHILDREN:CAPS"/>
     <keyword type="macro" name="GST_BIN_CHILDREN_COOKIE()" link="GstBin.html#GST-BIN-CHILDREN-COOKIE:CAPS"/>
@@ -203,6 +209,7 @@
     <keyword type="function" name="gst_buffer_copy ()" link="GstBuffer.html#gst-buffer-copy"/>
     <keyword type="function" name="gst_buffer_copy_into ()" link="GstBuffer.html#gst-buffer-copy-into"/>
     <keyword type="function" name="gst_buffer_copy_region ()" link="GstBuffer.html#gst-buffer-copy-region"/>
+    <keyword type="function" name="gst_buffer_copy_deep ()" link="GstBuffer.html#gst-buffer-copy-deep" since="1.6"/>
     <keyword type="macro" name="gst_buffer_is_writable()" link="GstBuffer.html#gst-buffer-is-writable"/>
     <keyword type="macro" name="gst_buffer_make_writable()" link="GstBuffer.html#gst-buffer-make-writable"/>
     <keyword type="function" name="gst_buffer_replace ()" link="GstBuffer.html#gst-buffer-replace"/>
@@ -214,9 +221,12 @@
     <keyword type="function" name="gst_buffer_iterate_meta ()" link="GstBuffer.html#gst-buffer-iterate-meta"/>
     <keyword type="function" name="GstBufferForeachMetaFunc ()" link="GstBuffer.html#GstBufferForeachMetaFunc"/>
     <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="struct" name="struct GstBuffer" link="GstBuffer.html#GstBuffer-struct"/>
     <keyword type="enum" name="enum GstBufferFlags" link="GstBuffer.html#GstBufferFlags"/>
     <keyword type="enum" name="enum GstBufferCopyFlags" link="GstBuffer.html#GstBufferCopyFlags"/>
+    <keyword type="struct" name="struct GstParentBufferMeta" link="GstBuffer.html#GstParentBufferMeta" since="1.6"/>
     <keyword type="function" name="gst_buffer_list_new ()" link="GstBufferList.html#gst-buffer-list-new"/>
     <keyword type="function" name="gst_buffer_list_new_sized ()" link="GstBufferList.html#gst-buffer-list-new-sized"/>
     <keyword type="function" name="gst_buffer_list_length ()" link="GstBufferList.html#gst-buffer-list-length"/>
@@ -226,6 +236,7 @@
     <keyword type="function" name="gst_buffer_list_ref ()" link="GstBufferList.html#gst-buffer-list-ref"/>
     <keyword type="function" name="gst_buffer_list_unref ()" link="GstBufferList.html#gst-buffer-list-unref"/>
     <keyword type="function" name="gst_buffer_list_copy ()" link="GstBufferList.html#gst-buffer-list-copy"/>
+    <keyword type="function" name="gst_buffer_list_copy_deep ()" link="GstBufferList.html#gst-buffer-list-copy-deep" since="1.6"/>
     <keyword type="macro" name="gst_buffer_list_is_writable()" link="GstBufferList.html#gst-buffer-list-is-writable"/>
     <keyword type="macro" name="gst_buffer_list_make_writable()" link="GstBufferList.html#gst-buffer-list-make-writable"/>
     <keyword type="function" name="GstBufferListFunc ()" link="GstBufferList.html#GstBufferListFunc"/>
@@ -272,6 +283,7 @@
     <keyword type="function" name="gst_bus_create_watch ()" link="GstBus.html#gst-bus-create-watch"/>
     <keyword type="function" name="gst_bus_add_watch_full ()" link="GstBus.html#gst-bus-add-watch-full"/>
     <keyword type="function" name="gst_bus_add_watch ()" link="GstBus.html#gst-bus-add-watch"/>
+    <keyword type="function" name="gst_bus_remove_watch ()" link="GstBus.html#gst-bus-remove-watch" since="1.6"/>
     <keyword type="function" name="gst_bus_disable_sync_message_emission ()" link="GstBus.html#gst-bus-disable-sync-message-emission"/>
     <keyword type="function" name="gst_bus_enable_sync_message_emission ()" link="GstBus.html#gst-bus-enable-sync-message-emission"/>
     <keyword type="function" name="gst_bus_async_signal_func ()" link="GstBus.html#gst-bus-async-signal-func"/>
@@ -293,6 +305,9 @@
     <keyword type="macro" name="GST_CAPS_FLAG_IS_SET()" link="GstCaps.html#GST-CAPS-FLAG-IS-SET:CAPS"/>
     <keyword type="macro" name="GST_CAPS_FLAG_SET()" link="GstCaps.html#GST-CAPS-FLAG-SET:CAPS"/>
     <keyword type="macro" name="GST_CAPS_FLAG_UNSET()" link="GstCaps.html#GST-CAPS-FLAG-UNSET:CAPS"/>
+    <keyword type="function" name="GstCapsForeachFunc ()" link="GstCaps.html#GstCapsForeachFunc" since="1.6"/>
+    <keyword type="function" name="GstCapsMapFunc ()" link="GstCaps.html#GstCapsMapFunc"/>
+    <keyword type="function" name="GstCapsFilterMapFunc ()" link="GstCaps.html#GstCapsFilterMapFunc"/>
     <keyword type="function" name="gst_caps_new_empty ()" link="GstCaps.html#gst-caps-new-empty"/>
     <keyword type="function" name="gst_caps_new_empty_simple ()" link="GstCaps.html#gst-caps-new-empty-simple"/>
     <keyword type="function" name="gst_caps_new_any ()" link="GstCaps.html#gst-caps-new-any"/>
@@ -319,6 +334,9 @@
     <keyword type="function" name="gst_caps_set_value ()" link="GstCaps.html#gst-caps-set-value"/>
     <keyword type="function" name="gst_caps_set_simple ()" link="GstCaps.html#gst-caps-set-simple"/>
     <keyword type="function" name="gst_caps_set_simple_valist ()" link="GstCaps.html#gst-caps-set-simple-valist"/>
+    <keyword type="function" name="gst_caps_foreach ()" link="GstCaps.html#gst-caps-foreach" since="1.6"/>
+    <keyword type="function" name="gst_caps_map_in_place ()" link="GstCaps.html#gst-caps-map-in-place" since="1.6"/>
+    <keyword type="function" name="gst_caps_filter_and_map_in_place ()" link="GstCaps.html#gst-caps-filter-and-map-in-place" since="1.6"/>
     <keyword type="function" name="gst_caps_is_any ()" link="GstCaps.html#gst-caps-is-any"/>
     <keyword type="function" name="gst_caps_is_empty ()" link="GstCaps.html#gst-caps-is-empty"/>
     <keyword type="function" name="gst_caps_is_fixed ()" link="GstCaps.html#gst-caps-is-fixed"/>
@@ -379,9 +397,11 @@
     <keyword type="struct" name="GstCapsFeatures" link="GstCapsFeatures.html#GstCapsFeatures-struct"/>
     <keyword type="macro" name="GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY" link="GstCapsFeatures.html#GST-CAPS-FEATURE-MEMORY-SYSTEM-MEMORY:CAPS"/>
     <keyword type="function" name="gst_sample_get_buffer ()" link="GstSample.html#gst-sample-get-buffer"/>
+    <keyword type="function" name="gst_sample_get_buffer_list ()" link="GstSample.html#gst-sample-get-buffer-list" since="1.6"/>
     <keyword type="function" name="gst_sample_get_caps ()" link="GstSample.html#gst-sample-get-caps"/>
     <keyword type="function" name="gst_sample_get_info ()" link="GstSample.html#gst-sample-get-info"/>
     <keyword type="function" name="gst_sample_get_segment ()" link="GstSample.html#gst-sample-get-segment"/>
+    <keyword type="function" name="gst_sample_set_buffer_list ()" link="GstSample.html#gst-sample-set-buffer-list" since="1.6"/>
     <keyword type="function" name="gst_sample_new ()" link="GstSample.html#gst-sample-new"/>
     <keyword type="function" name="gst_sample_ref ()" link="GstSample.html#gst-sample-ref"/>
     <keyword type="function" name="gst_sample_unref ()" link="GstSample.html#gst-sample-unref"/>
@@ -405,6 +425,7 @@
     <keyword type="signal" name="The “child-removed” signal" link="GstChildProxy.html#GstChildProxy-child-removed"/>
     <keyword type="macro" name="GST_CLOCK_TIME_NONE" link="GstClock.html#GST-CLOCK-TIME-NONE:CAPS"/>
     <keyword type="macro" name="GST_CLOCK_TIME_IS_VALID()" link="GstClock.html#GST-CLOCK-TIME-IS-VALID:CAPS"/>
+    <keyword type="macro" name="GST_CLOCK_STIME_IS_VALID()" link="GstClock.html#GST-CLOCK-STIME-IS-VALID:CAPS" since="1.6"/>
     <keyword type="macro" name="GST_SECOND" link="GstClock.html#GST-SECOND:CAPS"/>
     <keyword type="macro" name="GST_MSECOND" link="GstClock.html#GST-MSECOND:CAPS"/>
     <keyword type="macro" name="GST_USECOND" link="GstClock.html#GST-USECOND:CAPS"/>
@@ -427,6 +448,7 @@
     <keyword type="macro" name="GST_CLOCK_ENTRY_STATUS()" link="GstClock.html#GST-CLOCK-ENTRY-STATUS:CAPS"/>
     <keyword type="macro" name="GST_CLOCK_FLAGS()" link="GstClock.html#GST-CLOCK-FLAGS:CAPS"/>
     <keyword type="function" name="gst_clock_add_observation ()" link="GstClock.html#gst-clock-add-observation"/>
+    <keyword type="function" name="gst_clock_add_observation_unapplied ()" link="GstClock.html#gst-clock-add-observation-unapplied" since="1.6"/>
     <keyword type="function" name="gst_clock_set_master ()" link="GstClock.html#gst-clock-set-master"/>
     <keyword type="function" name="gst_clock_get_master ()" link="GstClock.html#gst-clock-get-master"/>
     <keyword type="function" name="gst_clock_set_resolution ()" link="GstClock.html#gst-clock-set-resolution"/>
@@ -439,10 +461,14 @@
     <keyword type="function" name="gst_clock_get_internal_time ()" link="GstClock.html#gst-clock-get-internal-time"/>
     <keyword type="function" name="gst_clock_adjust_unlocked ()" link="GstClock.html#gst-clock-adjust-unlocked"/>
     <keyword type="function" name="gst_clock_unadjust_unlocked ()" link="GstClock.html#gst-clock-unadjust-unlocked"/>
+    <keyword type="function" name="gst_clock_adjust_with_calibration ()" link="GstClock.html#gst-clock-adjust-with-calibration" since="1.6"/>
     <keyword type="function" name="gst_clock_get_calibration ()" link="GstClock.html#gst-clock-get-calibration"/>
     <keyword type="function" name="gst_clock_set_calibration ()" link="GstClock.html#gst-clock-set-calibration"/>
     <keyword type="function" name="gst_clock_get_timeout ()" link="GstClock.html#gst-clock-get-timeout"/>
     <keyword type="function" name="gst_clock_set_timeout ()" link="GstClock.html#gst-clock-set-timeout"/>
+    <keyword type="function" name="gst_clock_wait_for_sync ()" link="GstClock.html#gst-clock-wait-for-sync" since="1.6"/>
+    <keyword type="function" name="gst_clock_is_synced ()" link="GstClock.html#gst-clock-is-synced" since="1.6"/>
+    <keyword type="function" name="gst_clock_set_synced ()" link="GstClock.html#gst-clock-set-synced" since="1.6"/>
     <keyword type="function" name="gst_clock_id_get_time ()" link="GstClock.html#gst-clock-id-get-time"/>
     <keyword type="function" name="gst_clock_id_wait ()" link="GstClock.html#gst-clock-id-wait"/>
     <keyword type="function" name="gst_clock_id_wait_async ()" link="GstClock.html#gst-clock-id-wait-async"/>
@@ -455,6 +481,7 @@
     <keyword type="typedef" name="GstClockTime" link="GstClock.html#GstClockTime"/>
     <keyword type="typedef" name="GstClockTimeDiff" link="GstClock.html#GstClockTimeDiff"/>
     <keyword type="typedef" name="GstClockID" link="GstClock.html#GstClockID"/>
+    <keyword type="macro" name="GST_CLOCK_STIME_NONE" link="GstClock.html#GST-CLOCK-STIME-NONE:CAPS"/>
     <keyword type="struct" name="struct GstClockEntry" link="GstClock.html#GstClockEntry"/>
     <keyword type="enum" name="enum GstClockEntryType" link="GstClock.html#GstClockEntryType"/>
     <keyword type="enum" name="enum GstClockReturn" link="GstClock.html#GstClockReturn"/>
@@ -462,12 +489,13 @@
     <keyword type="property" name="The “timeout” property" link="GstClock.html#GstClock--timeout"/>
     <keyword type="property" name="The “window-size” property" link="GstClock.html#GstClock--window-size"/>
     <keyword type="property" name="The “window-threshold” property" link="GstClock.html#GstClock--window-threshold"/>
-    <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="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"/>
     <keyword type="function" name="gst_context_ref ()" link="GstContext.html#gst-context-ref"/>
     <keyword type="function" name="gst_context_unref ()" link="GstContext.html#gst-context-unref"/>
@@ -650,9 +678,11 @@
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-AUDIOVIDEO-SINKS:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-AUDIO-ENCODER:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_DECODER" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DECODER:CAPS"/>
+    <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_DECRYPTOR" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DECRYPTOR:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_DEMUXER" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DEMUXER:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DEPAYLOADER:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_ENCODER" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-ENCODER:CAPS"/>
+    <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-ENCRYPTOR:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_FORMATTER" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-FORMATTER:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-MAX-ELEMENTS:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO" link="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-MEDIA-AUDIO:CAPS"/>
@@ -750,6 +780,8 @@
     <keyword type="function" name="gst_event_parse_toc_select ()" link="GstEvent.html#gst-event-parse-toc-select"/>
     <keyword type="function" name="gst_event_new_segment_done ()" link="GstEvent.html#gst-event-new-segment-done"/>
     <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="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"/>
@@ -822,7 +854,9 @@
     <keyword type="macro" name="GST_MEMORY_IS_NOT_MAPPABLE()" link="GstMemory.html#GST-MEMORY-IS-NOT-MAPPABLE:CAPS" since="1.2"/>
     <keyword type="macro" name="GST_MAP_READWRITE" link="GstMemory.html#GST-MAP-READWRITE:CAPS"/>
     <keyword type="function" name="GstMemoryMapFunction ()" link="GstMemory.html#GstMemoryMapFunction"/>
+    <keyword type="function" name="GstMemoryMapFullFunction ()" link="GstMemory.html#GstMemoryMapFullFunction"/>
     <keyword type="function" name="GstMemoryUnmapFunction ()" link="GstMemory.html#GstMemoryUnmapFunction"/>
+    <keyword type="function" name="GstMemoryUnmapFullFunction ()" link="GstMemory.html#GstMemoryUnmapFullFunction"/>
     <keyword type="function" name="GstMemoryCopyFunction ()" link="GstMemory.html#GstMemoryCopyFunction"/>
     <keyword type="function" name="GstMemoryShareFunction ()" link="GstMemory.html#GstMemoryShareFunction"/>
     <keyword type="function" name="GstMemoryIsSpanFunction ()" link="GstMemory.html#GstMemoryIsSpanFunction"/>
@@ -852,7 +886,7 @@
     <keyword type="macro" name="GST_MESSAGE_TIMESTAMP()" link="GstMessage.html#GST-MESSAGE-TIMESTAMP:CAPS"/>
     <keyword type="macro" name="GST_MESSAGE_SEQNUM()" link="GstMessage.html#GST-MESSAGE-SEQNUM:CAPS"/>
     <keyword type="macro" name="GST_MESSAGE_TYPE()" link="GstMessage.html#GST-MESSAGE-TYPE:CAPS"/>
-    <keyword type="macro" name="GST_MESSAGE_TYPE_IS_EXTENDED()" link="GstMessage.html#GST-MESSAGE-TYPE-IS-EXTENDED:CAPS"/>
+    <keyword type="macro" name="GST_MESSAGE_TYPE_IS_EXTENDED()" link="GstMessage.html#GST-MESSAGE-TYPE-IS-EXTENDED:CAPS" since="1.4"/>
     <keyword type="macro" name="GST_MESSAGE_TYPE_NAME()" link="GstMessage.html#GST-MESSAGE-TYPE-NAME:CAPS"/>
     <keyword type="function" name="gst_message_type_to_quark ()" link="GstMessage.html#gst-message-type-to-quark"/>
     <keyword type="function" name="gst_message_type_get_name ()" link="GstMessage.html#gst-message-type-get-name"/>
@@ -992,7 +1026,6 @@
     <keyword type="struct" name="struct GstMiniObject" link="gstreamer-GstMiniObject.html#GstMiniObject"/>
     <keyword type="enum" name="enum GstMiniObjectFlags" link="gstreamer-GstMiniObject.html#GstMiniObjectFlags"/>
     <keyword type="enum" name="enum GstLockFlags" link="gstreamer-GstMiniObject.html#GstLockFlags"/>
-    <keyword type="" name="controlled properties" link="GstObject.html#id-1.3.32.9.6"/>
     <keyword type="macro" name="GST_OBJECT_FLAGS()" link="GstObject.html#GST-OBJECT-FLAGS:CAPS"/>
     <keyword type="macro" name="GST_OBJECT_FLAG_IS_SET()" link="GstObject.html#GST-OBJECT-FLAG-IS-SET:CAPS"/>
     <keyword type="macro" name="GST_OBJECT_FLAG_SET()" link="GstObject.html#GST-OBJECT-FLAG-SET:CAPS"/>
@@ -1009,11 +1042,13 @@
     <keyword type="function" name="gst_object_get_name ()" link="GstObject.html#gst-object-get-name"/>
     <keyword type="function" name="gst_object_set_parent ()" link="GstObject.html#gst-object-set-parent"/>
     <keyword type="function" name="gst_object_get_parent ()" link="GstObject.html#gst-object-get-parent"/>
+    <keyword type="function" name="gst_object_has_as_parent ()" link="GstObject.html#gst-object-has-as-parent" since="1.6"/>
     <keyword type="function" name="gst_object_unparent ()" link="GstObject.html#gst-object-unparent"/>
     <keyword type="function" name="gst_object_default_deep_notify ()" link="GstObject.html#gst-object-default-deep-notify"/>
     <keyword type="function" name="gst_object_default_error ()" link="GstObject.html#gst-object-default-error"/>
     <keyword type="function" name="gst_object_check_uniqueness ()" link="GstObject.html#gst-object-check-uniqueness"/>
-    <keyword type="function" name="gst_object_has_ancestor ()" link="GstObject.html#gst-object-has-ancestor"/>
+    <keyword type="function" name="gst_object_has_as_ancestor ()" link="GstObject.html#gst-object-has-as-ancestor"/>
+    <keyword type="function" name="gst_object_has_ancestor ()" link="GstObject.html#gst-object-has-ancestor" deprecated=""/>
     <keyword type="function" name="gst_object_ref ()" link="GstObject.html#gst-object-ref"/>
     <keyword type="function" name="gst_object_unref ()" link="GstObject.html#gst-object-unref"/>
     <keyword type="function" name="gst_object_ref_sink ()" link="GstObject.html#gst-object-ref-sink"/>
@@ -1210,6 +1245,9 @@
     <keyword type="macro" name="GST_PAD_IS_ACCEPT_INTERSECT()" link="GstPad.html#GST-PAD-IS-ACCEPT-INTERSECT:CAPS"/>
     <keyword type="macro" name="GST_PAD_SET_ACCEPT_INTERSECT()" link="GstPad.html#GST-PAD-SET-ACCEPT-INTERSECT:CAPS"/>
     <keyword type="macro" name="GST_PAD_UNSET_ACCEPT_INTERSECT()" link="GstPad.html#GST-PAD-UNSET-ACCEPT-INTERSECT:CAPS"/>
+    <keyword type="macro" name="GST_PAD_IS_ACCEPT_TEMPLATE()" link="GstPad.html#GST-PAD-IS-ACCEPT-TEMPLATE:CAPS" since="1.6"/>
+    <keyword type="macro" name="GST_PAD_SET_ACCEPT_TEMPLATE()" link="GstPad.html#GST-PAD-SET-ACCEPT-TEMPLATE:CAPS" since="1.6"/>
+    <keyword type="macro" name="GST_PAD_UNSET_ACCEPT_TEMPLATE()" link="GstPad.html#GST-PAD-UNSET-ACCEPT-TEMPLATE:CAPS" since="1.6"/>
     <keyword type="struct" name="struct GstPad" link="GstPad.html#GstPad-struct"/>
     <keyword type="enum" name="enum GstPadDirection" link="GstPad.html#GstPadDirection"/>
     <keyword type="enum" name="enum GstPadFlags" link="GstPad.html#GstPadFlags"/>
@@ -1222,6 +1260,7 @@
     <keyword type="struct" name="struct GstPadProbeInfo" link="GstPad.html#GstPadProbeInfo"/>
     <keyword type="property" name="The “caps” property" link="GstPad.html#GstPad--caps"/>
     <keyword type="property" name="The “direction” property" link="GstPad.html#GstPad--direction"/>
+    <keyword type="property" name="The “offset” property" link="GstPad.html#GstPad--offset"/>
     <keyword type="property" name="The “template” property" link="GstPad.html#GstPad--template"/>
     <keyword type="signal" name="The “linked” signal" link="GstPad.html#GstPad-linked"/>
     <keyword type="signal" name="The “unlinked” signal" link="GstPad.html#GstPad-unlinked"/>
@@ -1268,6 +1307,7 @@
     <keyword type="function" name="gst_pipeline_new ()" link="GstPipeline.html#gst-pipeline-new"/>
     <keyword type="function" name="gst_pipeline_get_bus ()" link="GstPipeline.html#gst-pipeline-get-bus"/>
     <keyword type="function" name="gst_pipeline_set_clock ()" link="GstPipeline.html#gst-pipeline-set-clock"/>
+    <keyword type="function" name="gst_pipeline_get_pipeline_clock ()" link="GstPipeline.html#gst-pipeline-get-pipeline-clock" since="1.6"/>
     <keyword type="function" name="gst_pipeline_get_clock ()" link="GstPipeline.html#gst-pipeline-get-clock"/>
     <keyword type="function" name="gst_pipeline_use_clock ()" link="GstPipeline.html#gst-pipeline-use-clock"/>
     <keyword type="function" name="gst_pipeline_auto_clock ()" link="GstPipeline.html#gst-pipeline-auto-clock"/>
@@ -1275,10 +1315,13 @@
     <keyword type="function" name="gst_pipeline_get_auto_flush_bus ()" link="GstPipeline.html#gst-pipeline-get-auto-flush-bus"/>
     <keyword type="function" name="gst_pipeline_set_delay ()" link="GstPipeline.html#gst-pipeline-set-delay"/>
     <keyword type="function" name="gst_pipeline_get_delay ()" link="GstPipeline.html#gst-pipeline-get-delay"/>
+    <keyword type="function" name="gst_pipeline_set_latency ()" link="GstPipeline.html#gst-pipeline-set-latency" since="1.6"/>
+    <keyword type="function" name="gst_pipeline_get_latency ()" link="GstPipeline.html#gst-pipeline-get-latency" since="1.6"/>
     <keyword type="struct" name="struct GstPipeline" link="GstPipeline.html#GstPipeline-struct"/>
     <keyword type="enum" name="enum GstPipelineFlags" link="GstPipeline.html#GstPipelineFlags"/>
     <keyword type="property" name="The “auto-flush-bus” property" link="GstPipeline.html#GstPipeline--auto-flush-bus"/>
     <keyword type="property" name="The “delay” property" link="GstPipeline.html#GstPipeline--delay"/>
+    <keyword type="property" name="The “latency” property" link="GstPipeline.html#GstPipeline--latency"/>
     <keyword type="function" name="gst_plugin_error_quark ()" link="GstPlugin.html#gst-plugin-error-quark"/>
     <keyword type="function" name="GstPluginInitFunc ()" link="GstPlugin.html#GstPluginInitFunc"/>
     <keyword type="function" name="GstPluginInitFullFunc ()" link="GstPlugin.html#GstPluginInitFullFunc"/>
@@ -1361,8 +1404,14 @@
     <keyword type="function" name="gst_preset_get_meta ()" link="GstPreset.html#gst-preset-get-meta"/>
     <keyword type="function" name="gst_preset_set_app_dir ()" link="GstPreset.html#gst-preset-set-app-dir"/>
     <keyword type="function" name="gst_preset_get_app_dir ()" link="GstPreset.html#gst-preset-get-app-dir"/>
+    <keyword type="function" name="gst_preset_is_editable ()" link="GstPreset.html#gst-preset-is-editable" since="1.6"/>
     <keyword type="struct" name="GstPreset" link="GstPreset.html#GstPreset-struct"/>
     <keyword type="struct" name="struct GstPresetInterface" link="GstPreset.html#GstPresetInterface"/>
+    <keyword type="function" name="gst_buffer_add_protection_meta ()" link="gstreamer-GstProtectionMeta.html#gst-buffer-add-protection-meta" since="1.6"/>
+    <keyword type="macro" name="gst_buffer_get_protection_meta()" link="gstreamer-GstProtectionMeta.html#gst-buffer-get-protection-meta"/>
+    <keyword type="function" name="gst_protection_select_system ()" link="gstreamer-GstProtectionMeta.html#gst-protection-select-system" since="1.6"/>
+    <keyword type="struct" name="struct GstProtectionMeta" link="gstreamer-GstProtectionMeta.html#GstProtectionMeta" since="1.6"/>
+    <keyword type="macro" name="GST_PROTECTION_SYSTEM_ID_CAPS_FIELD" link="gstreamer-GstProtectionMeta.html#GST-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS" since="1.6"/>
     <keyword type="macro" name="GST_QUERY_MAKE_TYPE()" link="GstQuery.html#GST-QUERY-MAKE-TYPE:CAPS"/>
     <keyword type="macro" name="GST_QUERY_TYPE()" link="GstQuery.html#GST-QUERY-TYPE:CAPS"/>
     <keyword type="macro" name="GST_QUERY_TYPE_NAME()" link="GstQuery.html#GST-QUERY-TYPE-NAME:CAPS"/>
@@ -1494,15 +1543,18 @@
     <keyword type="function" name="gst_segment_free ()" link="GstSegment.html#gst-segment-free"/>
     <keyword type="function" name="gst_segment_do_seek ()" link="GstSegment.html#gst-segment-do-seek"/>
     <keyword type="function" name="gst_segment_to_running_time ()" link="GstSegment.html#gst-segment-to-running-time"/>
+    <keyword type="function" name="gst_segment_to_running_time_full ()" link="GstSegment.html#gst-segment-to-running-time-full" since="1.6"/>
     <keyword type="function" name="gst_segment_to_stream_time ()" link="GstSegment.html#gst-segment-to-stream-time"/>
     <keyword type="function" name="gst_segment_to_position ()" link="GstSegment.html#gst-segment-to-position"/>
     <keyword type="function" name="gst_segment_set_running_time ()" link="GstSegment.html#gst-segment-set-running-time"/>
     <keyword type="function" name="gst_segment_copy_into ()" link="GstSegment.html#gst-segment-copy-into"/>
     <keyword type="function" name="gst_segment_offset_running_time ()" link="GstSegment.html#gst-segment-offset-running-time" since="1.2.3"/>
+    <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="GstStructureForeachFunc ()" link="GstStructure.html#GstStructureForeachFunc"/>
     <keyword type="function" name="GstStructureMapFunc ()" link="GstStructure.html#GstStructureMapFunc"/>
+    <keyword type="function" name="GstStructureFilterMapFunc ()" link="GstStructure.html#GstStructureFilterMapFunc"/>
     <keyword type="function" name="gst_structure_new_empty ()" link="GstStructure.html#gst-structure-new-empty"/>
     <keyword type="function" name="gst_structure_new_id_empty ()" link="GstStructure.html#gst-structure-new-id-empty"/>
     <keyword type="function" name="gst_structure_new ()" link="GstStructure.html#gst-structure-new"/>
@@ -1534,7 +1586,6 @@
     <keyword type="function" name="gst_structure_remove_fields_valist ()" link="GstStructure.html#gst-structure-remove-fields-valist"/>
     <keyword type="function" name="gst_structure_remove_all_fields ()" link="GstStructure.html#gst-structure-remove-all-fields"/>
     <keyword type="function" name="gst_structure_get_field_type ()" link="GstStructure.html#gst-structure-get-field-type"/>
-    <keyword type="function" name="gst_structure_foreach ()" link="GstStructure.html#gst-structure-foreach"/>
     <keyword type="function" name="gst_structure_n_fields ()" link="GstStructure.html#gst-structure-n-fields"/>
     <keyword type="function" name="gst_structure_has_field ()" link="GstStructure.html#gst-structure-has-field"/>
     <keyword type="function" name="gst_structure_has_field_typed ()" link="GstStructure.html#gst-structure-has-field-typed"/>
@@ -1556,7 +1607,9 @@
     <keyword type="function" name="gst_structure_get_clock_time ()" link="GstStructure.html#gst-structure-get-clock-time"/>
     <keyword type="function" name="gst_structure_get_enum ()" link="GstStructure.html#gst-structure-get-enum"/>
     <keyword type="function" name="gst_structure_get_fraction ()" link="GstStructure.html#gst-structure-get-fraction"/>
+    <keyword type="function" name="gst_structure_foreach ()" link="GstStructure.html#gst-structure-foreach"/>
     <keyword type="function" name="gst_structure_map_in_place ()" link="GstStructure.html#gst-structure-map-in-place"/>
+    <keyword type="function" name="gst_structure_filter_and_map_in_place ()" link="GstStructure.html#gst-structure-filter-and-map-in-place" since="1.6"/>
     <keyword type="function" name="gst_structure_nth_field_name ()" link="GstStructure.html#gst-structure-nth-field-name"/>
     <keyword type="function" name="gst_structure_set_parent_refcount ()" link="GstStructure.html#gst-structure-set-parent-refcount"/>
     <keyword type="function" name="gst_structure_to_string ()" link="GstStructure.html#gst-structure-to-string"/>
@@ -1831,6 +1884,51 @@
     <keyword type="function" name="gst_type_find_factory_has_function ()" link="GstTypeFindFactory.html#gst-type-find-factory-has-function"/>
     <keyword type="function" name="gst_type_find_factory_call_function ()" link="GstTypeFindFactory.html#gst-type-find-factory-call-function"/>
     <keyword type="struct" name="GstTypeFindFactory" link="GstTypeFindFactory.html#GstTypeFindFactory-struct"/>
+    <keyword type="macro" name="GST_URI_CAST()" link="gstreamer-GstUri.html#GST-URI-CAST:CAPS"/>
+    <keyword type="macro" name="GST_URI_CONST_CAST()" link="gstreamer-GstUri.html#GST-URI-CONST-CAST:CAPS"/>
+    <keyword type="function" name="gst_uri_new ()" link="gstreamer-GstUri.html#gst-uri-new" since="1.6"/>
+    <keyword type="function" name="gst_uri_new_with_base ()" link="gstreamer-GstUri.html#gst-uri-new-with-base" since="1.6"/>
+    <keyword type="function" name="gst_uri_from_string ()" link="gstreamer-GstUri.html#gst-uri-from-string" since="1.6"/>
+    <keyword type="function" name="gst_uri_from_string_with_base ()" link="gstreamer-GstUri.html#gst-uri-from-string-with-base" since="1.6"/>
+    <keyword type="function" name="gst_uri_copy ()" link="gstreamer-GstUri.html#gst-uri-copy"/>
+    <keyword type="function" name="gst_uri_equal ()" link="gstreamer-GstUri.html#gst-uri-equal" since="1.6"/>
+    <keyword type="function" name="gst_uri_join ()" link="gstreamer-GstUri.html#gst-uri-join" since="1.6"/>
+    <keyword type="function" name="gst_uri_join_strings ()" link="gstreamer-GstUri.html#gst-uri-join-strings" since="1.6"/>
+    <keyword type="function" name="gst_uri_is_writable ()" link="gstreamer-GstUri.html#gst-uri-is-writable" since="1.6"/>
+    <keyword type="function" name="gst_uri_make_writable ()" link="gstreamer-GstUri.html#gst-uri-make-writable" since="1.6"/>
+    <keyword type="function" name="gst_uri_to_string ()" link="gstreamer-GstUri.html#gst-uri-to-string" since="1.6"/>
+    <keyword type="function" name="gst_uri_ref ()" link="gstreamer-GstUri.html#gst-uri-ref"/>
+    <keyword type="function" name="gst_uri_unref ()" link="gstreamer-GstUri.html#gst-uri-unref"/>
+    <keyword type="function" name="gst_uri_is_normalized ()" link="gstreamer-GstUri.html#gst-uri-is-normalized" since="1.6"/>
+    <keyword type="function" name="gst_uri_normalize ()" link="gstreamer-GstUri.html#gst-uri-normalize" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_scheme ()" link="gstreamer-GstUri.html#gst-uri-get-scheme"/>
+    <keyword type="function" name="gst_uri_set_scheme ()" link="gstreamer-GstUri.html#gst-uri-set-scheme" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_userinfo ()" link="gstreamer-GstUri.html#gst-uri-get-userinfo" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_userinfo ()" link="gstreamer-GstUri.html#gst-uri-set-userinfo" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_host ()" link="gstreamer-GstUri.html#gst-uri-get-host" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_host ()" link="gstreamer-GstUri.html#gst-uri-set-host" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_port ()" link="gstreamer-GstUri.html#gst-uri-get-port" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_port ()" link="gstreamer-GstUri.html#gst-uri-set-port" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_path ()" link="gstreamer-GstUri.html#gst-uri-get-path" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_path ()" link="gstreamer-GstUri.html#gst-uri-set-path" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_path_string ()" link="gstreamer-GstUri.html#gst-uri-get-path-string" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_path_string ()" link="gstreamer-GstUri.html#gst-uri-set-path-string" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_path_segments ()" link="gstreamer-GstUri.html#gst-uri-get-path-segments" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_path_segments ()" link="gstreamer-GstUri.html#gst-uri-set-path-segments" since="1.6"/>
+    <keyword type="function" name="gst_uri_append_path ()" link="gstreamer-GstUri.html#gst-uri-append-path" since="1.6"/>
+    <keyword type="function" name="gst_uri_append_path_segment ()" link="gstreamer-GstUri.html#gst-uri-append-path-segment" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_query_string ()" link="gstreamer-GstUri.html#gst-uri-get-query-string" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_query_string ()" link="gstreamer-GstUri.html#gst-uri-set-query-string" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_query_table ()" link="gstreamer-GstUri.html#gst-uri-get-query-table" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_query_table ()" link="gstreamer-GstUri.html#gst-uri-set-query-table" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_query_value ()" link="gstreamer-GstUri.html#gst-uri-get-query-value" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_query_value ()" link="gstreamer-GstUri.html#gst-uri-set-query-value" since="1.6"/>
+    <keyword type="function" name="gst_uri_remove_query_key ()" link="gstreamer-GstUri.html#gst-uri-remove-query-key" since="1.6"/>
+    <keyword type="function" name="gst_uri_query_has_key ()" link="gstreamer-GstUri.html#gst-uri-query-has-key" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_query_keys ()" link="gstreamer-GstUri.html#gst-uri-get-query-keys" since="1.6"/>
+    <keyword type="function" name="gst_uri_get_fragment ()" link="gstreamer-GstUri.html#gst-uri-get-fragment" since="1.6"/>
+    <keyword type="function" name="gst_uri_set_fragment ()" link="gstreamer-GstUri.html#gst-uri-set-fragment" since="1.6"/>
+    <keyword type="struct" name="GstUri" link="gstreamer-GstUri.html#GstUri"/>
     <keyword type="function" name="gst_uri_error_quark ()" link="gstreamer-GstUriHandler.html#gst-uri-error-quark"/>
     <keyword type="macro" name="GST_URI_TYPE_IS_VALID()" link="gstreamer-GstUriHandler.html#GST-URI-TYPE-IS-VALID:CAPS"/>
     <keyword type="function" name="gst_uri_protocol_is_valid ()" link="gstreamer-GstUriHandler.html#gst-uri-protocol-is-valid"/>
@@ -1850,6 +1948,7 @@
     <keyword type="struct" name="struct GstURIHandlerInterface" link="gstreamer-GstUriHandler.html#GstURIHandlerInterface"/>
     <keyword type="enum" name="enum GstURIType" link="gstreamer-GstUriHandler.html#GstURIType"/>
     <keyword type="enum" name="enum GstURIError" link="gstreamer-GstUriHandler.html#GstURIError"/>
+    <keyword type="macro" name="GST_URI_NO_PORT" link="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS"/>
     <keyword type="macro" name="GST_CALL_PARENT()" link="gstreamer-GstUtils.html#GST-CALL-PARENT:CAPS"/>
     <keyword type="macro" name="GST_CALL_PARENT_WITH_DEFAULT()" link="gstreamer-GstUtils.html#GST-CALL-PARENT-WITH-DEFAULT:CAPS"/>
     <keyword type="macro" name="GST_READ_UINT8()" link="gstreamer-GstUtils.html#GST-READ-UINT8:CAPS"/>
@@ -1942,6 +2041,13 @@
     <keyword type="macro" name="GST_TYPE_BITMASK" link="gstreamer-GstValue.html#GST-TYPE-BITMASK:CAPS"/>
     <keyword type="function" name="gst_value_set_bitmask ()" link="gstreamer-GstValue.html#gst-value-set-bitmask"/>
     <keyword type="function" name="gst_value_get_bitmask ()" link="gstreamer-GstValue.html#gst-value-get-bitmask"/>
+    <keyword type="macro" name="GST_VALUE_HOLDS_FLAG_SET()" link="gstreamer-GstValue.html#GST-VALUE-HOLDS-FLAG-SET:CAPS" since="1.6"/>
+    <keyword type="macro" name="GST_TYPE_FLAG_SET" link="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" since="1.6"/>
+    <keyword type="function" name="gst_structure_get_flagset ()" link="gstreamer-GstValue.html#gst-structure-get-flagset" since="1.6"/>
+    <keyword type="function" name="gst_value_get_flagset_flags ()" link="gstreamer-GstValue.html#gst-value-get-flagset-flags" since="1.6"/>
+    <keyword type="function" name="gst_value_get_flagset_mask ()" link="gstreamer-GstValue.html#gst-value-get-flagset-mask" since="1.6"/>
+    <keyword type="function" name="gst_value_set_flagset ()" link="gstreamer-GstValue.html#gst-value-set-flagset" since="1.6"/>
+    <keyword type="macro" name="GST_FLAG_SET_MASK_EXACT" link="gstreamer-GstValue.html#GST-FLAG-SET-MASK-EXACT:CAPS"/>
     <keyword type="macro" name="GST_VALUE_HOLDS_INT64_RANGE()" link="gstreamer-GstValue.html#GST-VALUE-HOLDS-INT64-RANGE:CAPS"/>
     <keyword type="macro" name="GST_TYPE_INT64_RANGE" link="gstreamer-GstValue.html#GST-TYPE-INT64-RANGE:CAPS"/>
     <keyword type="function" name="gst_value_set_int64_range ()" link="gstreamer-GstValue.html#gst-value-set-int64-range"/>
@@ -2020,6 +2126,7 @@
     <keyword type="function" name="gst_value_array_get_value ()" link="gstreamer-GstValue.html#gst-value-array-get-value"/>
     <keyword type="function" name="gst_value_array_prepend_value ()" link="gstreamer-GstValue.html#gst-value-array-prepend-value"/>
     <keyword type="function" name="gst_value_fixate ()" link="gstreamer-GstValue.html#gst-value-fixate"/>
+    <keyword type="function" name="gst_flagset_register ()" link="gstreamer-GstValue.html#gst-flagset-register" since="1.6"/>
     <keyword type="macro" name="GST_FOURCC_FORMAT" link="gstreamer-GstValue.html#GST-FOURCC-FORMAT:CAPS"/>
     <keyword type="macro" name="GST_VALUE_EQUAL" link="gstreamer-GstValue.html#GST-VALUE-EQUAL:CAPS"/>
     <keyword type="macro" name="GST_VALUE_GREATER_THAN" link="gstreamer-GstValue.html#GST-VALUE-GREATER-THAN:CAPS"/>
@@ -2046,6 +2153,7 @@
     <keyword type="function" name="gst_device_has_classes ()" link="gstreamer-GstDevice.html#gst-device-has-classes" since="1.4"/>
     <keyword type="function" name="gst_device_has_classesv ()" link="gstreamer-GstDevice.html#gst-device-has-classesv" since="1.4"/>
     <keyword type="function" name="gst_device_reconfigure_element ()" link="gstreamer-GstDevice.html#gst-device-reconfigure-element" since="1.4"/>
+    <keyword type="function" name="gst_device_get_properties ()" link="gstreamer-GstDevice.html#gst-device-get-properties" since="1.6"/>
     <keyword type="struct" name="struct GstDevice" link="gstreamer-GstDevice.html#GstDevice" since="1.4"/>
     <keyword type="struct" name="struct GstDeviceClass" link="gstreamer-GstDevice.html#GstDeviceClass" since="1.4"/>
     <keyword type="function" name="gst_device_provider_can_monitor ()" link="gstreamer-GstDeviceProvider.html#gst-device-provider-can-monitor"/>
@@ -2154,15 +2262,513 @@
     <keyword type="macro" name="GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()" link="gstreamer-GstInfo.html#GST-DEBUG-BIN-TO-DOT-FILE-WITH-TS:CAPS"/>
     <keyword type="function" name="gst_debug_print_stack_trace ()" link="gstreamer-GstInfo.html#gst-debug-print-stack-trace"/>
     <keyword type="macro" name="GST_TIME_ARGS()" link="gstreamer-GstInfo.html#GST-TIME-ARGS:CAPS"/>
+    <keyword type="macro" name="GST_STIME_ARGS()" link="gstreamer-GstInfo.html#GST-STIME-ARGS:CAPS" since="1.6"/>
+    <keyword type="function" name="gst_debug_bin_to_dot_data ()" link="gstreamer-GstInfo.html#gst-debug-bin-to-dot-data"/>
     <keyword type="function" name="gst_debug_bin_to_dot_file ()" link="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file"/>
     <keyword type="function" name="gst_debug_bin_to_dot_file_with_ts ()" link="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file-with-ts"/>
     <keyword type="enum" name="enum GstDebugLevel" link="gstreamer-GstInfo.html#GstDebugLevel"/>
     <keyword type="macro" name="GST_LEVEL_DEFAULT" link="gstreamer-GstInfo.html#GST-LEVEL-DEFAULT:CAPS"/>
+    <keyword type="macro" name="GST_LEVEL_MAX" link="gstreamer-GstInfo.html#GST-LEVEL-MAX:CAPS" since="1.6"/>
     <keyword type="enum" name="enum GstDebugColorFlags" link="gstreamer-GstInfo.html#GstDebugColorFlags"/>
     <keyword type="enum" name="enum GstDebugColorMode" link="gstreamer-GstInfo.html#GstDebugColorMode"/>
     <keyword type="struct" name="struct GstDebugCategory" link="gstreamer-GstInfo.html#GstDebugCategory"/>
     <keyword type="enum" name="enum GstDebugGraphDetails" link="gstreamer-GstInfo.html#GstDebugGraphDetails"/>
     <keyword type="variable" name="GST_CAT_DEFAULT" link="gstreamer-GstInfo.html#GST-CAT-DEFAULT:CAPS"/>
     <keyword type="macro" name="GST_TIME_FORMAT" link="gstreamer-GstInfo.html#GST-TIME-FORMAT:CAPS"/>
+    <keyword type="macro" name="GST_STIME_FORMAT" link="gstreamer-GstInfo.html#GST-STIME-FORMAT:CAPS" since="1.6"/>
+    <keyword type="constant" name="GST_ALLOCATOR_FLAG_CUSTOM_ALLOC" link="GstAllocator.html#GST-ALLOCATOR-FLAG-CUSTOM-ALLOC:CAPS"/>
+    <keyword type="constant" name="GST_ALLOCATOR_FLAG_LAST" link="GstAllocator.html#GST-ALLOCATOR-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_BIN_FLAG_NO_RESYNC" link="GstBin.html#GST-BIN-FLAG-NO-RESYNC:CAPS"/>
+    <keyword type="constant" name="GST_BIN_FLAG_LAST" link="GstBin.html#GST-BIN-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_LIVE" link="GstBuffer.html#GST-BUFFER-FLAG-LIVE:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_DECODE_ONLY" link="GstBuffer.html#GST-BUFFER-FLAG-DECODE-ONLY:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_DISCONT" link="GstBuffer.html#GST-BUFFER-FLAG-DISCONT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_RESYNC" link="GstBuffer.html#GST-BUFFER-FLAG-RESYNC:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_CORRUPTED" link="GstBuffer.html#GST-BUFFER-FLAG-CORRUPTED:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_MARKER" link="GstBuffer.html#GST-BUFFER-FLAG-MARKER:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_HEADER" link="GstBuffer.html#GST-BUFFER-FLAG-HEADER:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_GAP" link="GstBuffer.html#GST-BUFFER-FLAG-GAP:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_DROPPABLE" link="GstBuffer.html#GST-BUFFER-FLAG-DROPPABLE:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_DELTA_UNIT" link="GstBuffer.html#GST-BUFFER-FLAG-DELTA-UNIT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_TAG_MEMORY" link="GstBuffer.html#GST-BUFFER-FLAG-TAG-MEMORY:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_SYNC_AFTER" link="GstBuffer.html#GST-BUFFER-FLAG-SYNC-AFTER:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_FLAG_LAST" link="GstBuffer.html#GST-BUFFER-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_NONE" link="GstBuffer.html#GST-BUFFER-COPY-NONE:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_FLAGS" link="GstBuffer.html#GST-BUFFER-COPY-FLAGS:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_TIMESTAMPS" link="GstBuffer.html#GST-BUFFER-COPY-TIMESTAMPS:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_META" link="GstBuffer.html#GST-BUFFER-COPY-META:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_MEMORY" link="GstBuffer.html#GST-BUFFER-COPY-MEMORY:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_MERGE" link="GstBuffer.html#GST-BUFFER-COPY-MERGE:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_COPY_DEEP" link="GstBuffer.html#GST-BUFFER-COPY-DEEP:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_POOL_ACQUIRE_FLAG_NONE" link="GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-NONE:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT" link="GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-KEY-UNIT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT" link="GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-DONTWAIT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT" link="GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-DISCONT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFER_POOL_ACQUIRE_FLAG_LAST" link="GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_BUS_FLUSHING" link="GstBus.html#GST-BUS-FLUSHING:CAPS"/>
+    <keyword type="constant" name="GST_BUS_FLAG_LAST" link="GstBus.html#GST-BUS-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_BUS_DROP" link="GstBus.html#GST-BUS-DROP:CAPS"/>
+    <keyword type="constant" name="GST_BUS_PASS" link="GstBus.html#GST-BUS-PASS:CAPS"/>
+    <keyword type="constant" name="GST_BUS_ASYNC" link="GstBus.html#GST-BUS-ASYNC:CAPS"/>
+    <keyword type="constant" name="GST_CAPS_INTERSECT_ZIG_ZAG" link="GstCaps.html#GST-CAPS-INTERSECT-ZIG-ZAG:CAPS"/>
+    <keyword type="constant" name="GST_CAPS_INTERSECT_FIRST" link="GstCaps.html#GST-CAPS-INTERSECT-FIRST:CAPS"/>
+    <keyword type="constant" name="GST_CAPS_FLAG_ANY" link="GstCaps.html#GST-CAPS-FLAG-ANY:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_ENTRY_SINGLE" link="GstClock.html#GST-CLOCK-ENTRY-SINGLE:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_ENTRY_PERIODIC" link="GstClock.html#GST-CLOCK-ENTRY-PERIODIC:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_OK" link="GstClock.html#GST-CLOCK-OK:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_EARLY" link="GstClock.html#GST-CLOCK-EARLY:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_UNSCHEDULED" link="GstClock.html#GST-CLOCK-UNSCHEDULED:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_BUSY" link="GstClock.html#GST-CLOCK-BUSY:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_BADTIME" link="GstClock.html#GST-CLOCK-BADTIME:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_ERROR" link="GstClock.html#GST-CLOCK-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_UNSUPPORTED" link="GstClock.html#GST-CLOCK-UNSUPPORTED:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_DONE" link="GstClock.html#GST-CLOCK-DONE:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC" link="GstClock.html#GST-CLOCK-FLAG-CAN-DO-SINGLE-SYNC:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC" link="GstClock.html#GST-CLOCK-FLAG-CAN-DO-SINGLE-ASYNC:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC" link="GstClock.html#GST-CLOCK-FLAG-CAN-DO-PERIODIC-SYNC:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC" link="GstClock.html#GST-CLOCK-FLAG-CAN-DO-PERIODIC-ASYNC:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_CAN_SET_RESOLUTION" link="GstClock.html#GST-CLOCK-FLAG-CAN-SET-RESOLUTION:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_CAN_SET_MASTER" link="GstClock.html#GST-CLOCK-FLAG-CAN-SET-MASTER:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC" link="GstClock.html#GST-CLOCK-FLAG-NEEDS-STARTUP-SYNC:CAPS"/>
+    <keyword type="constant" name="GST_CLOCK_FLAG_LAST" link="GstClock.html#GST-CLOCK-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_LOCKED_STATE" link="GstElement.html#GST-ELEMENT-FLAG-LOCKED-STATE:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_SINK" link="GstElement.html#GST-ELEMENT-FLAG-SINK:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_SOURCE" link="GstElement.html#GST-ELEMENT-FLAG-SOURCE:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_PROVIDE_CLOCK" link="GstElement.html#GST-ELEMENT-FLAG-PROVIDE-CLOCK:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_REQUIRE_CLOCK" link="GstElement.html#GST-ELEMENT-FLAG-REQUIRE-CLOCK:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_INDEXABLE" link="GstElement.html#GST-ELEMENT-FLAG-INDEXABLE:CAPS"/>
+    <keyword type="constant" name="GST_ELEMENT_FLAG_LAST" link="GstElement.html#GST-ELEMENT-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_STATE_VOID_PENDING" link="GstElement.html#GST-STATE-VOID-PENDING:CAPS"/>
+    <keyword type="constant" name="GST_STATE_NULL" link="GstElement.html#GST-STATE-NULL:CAPS"/>
+    <keyword type="constant" name="GST_STATE_READY" link="GstElement.html#GST-STATE-READY:CAPS"/>
+    <keyword type="constant" name="GST_STATE_PAUSED" link="GstElement.html#GST-STATE-PAUSED:CAPS"/>
+    <keyword type="constant" name="GST_STATE_PLAYING" link="GstElement.html#GST-STATE-PLAYING:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_NULL_TO_READY" link="GstElement.html#GST-STATE-CHANGE-NULL-TO-READY:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_READY_TO_PAUSED" link="GstElement.html#GST-STATE-CHANGE-READY-TO-PAUSED:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_PAUSED_TO_PLAYING" link="GstElement.html#GST-STATE-CHANGE-PAUSED-TO-PLAYING:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_PLAYING_TO_PAUSED" link="GstElement.html#GST-STATE-CHANGE-PLAYING-TO-PAUSED:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_PAUSED_TO_READY" link="GstElement.html#GST-STATE-CHANGE-PAUSED-TO-READY:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_READY_TO_NULL" link="GstElement.html#GST-STATE-CHANGE-READY-TO-NULL:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_FAILURE" link="GstElement.html#GST-STATE-CHANGE-FAILURE:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_SUCCESS" link="GstElement.html#GST-STATE-CHANGE-SUCCESS:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_ASYNC" link="GstElement.html#GST-STATE-CHANGE-ASYNC:CAPS"/>
+    <keyword type="constant" name="GST_STATE_CHANGE_NO_PREROLL" link="GstElement.html#GST-STATE-CHANGE-NO-PREROLL:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_FAILED" link="gstreamer-GstGError.html#GST-CORE-ERROR-FAILED:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_TOO_LAZY" link="gstreamer-GstGError.html#GST-CORE-ERROR-TOO-LAZY:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_NOT_IMPLEMENTED" link="gstreamer-GstGError.html#GST-CORE-ERROR-NOT-IMPLEMENTED:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_STATE_CHANGE" link="gstreamer-GstGError.html#GST-CORE-ERROR-STATE-CHANGE:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_PAD" link="gstreamer-GstGError.html#GST-CORE-ERROR-PAD:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_THREAD" link="gstreamer-GstGError.html#GST-CORE-ERROR-THREAD:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_NEGOTIATION" link="gstreamer-GstGError.html#GST-CORE-ERROR-NEGOTIATION:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_EVENT" link="gstreamer-GstGError.html#GST-CORE-ERROR-EVENT:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_SEEK" link="gstreamer-GstGError.html#GST-CORE-ERROR-SEEK:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_CAPS" link="gstreamer-GstGError.html#GST-CORE-ERROR-CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_TAG" link="gstreamer-GstGError.html#GST-CORE-ERROR-TAG:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_MISSING_PLUGIN" link="gstreamer-GstGError.html#GST-CORE-ERROR-MISSING-PLUGIN:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_CLOCK" link="gstreamer-GstGError.html#GST-CORE-ERROR-CLOCK:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_DISABLED" link="gstreamer-GstGError.html#GST-CORE-ERROR-DISABLED:CAPS"/>
+    <keyword type="constant" name="GST_CORE_ERROR_NUM_ERRORS" link="gstreamer-GstGError.html#GST-CORE-ERROR-NUM-ERRORS:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_FAILED" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-FAILED:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_TOO_LAZY" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-TOO-LAZY:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_INIT" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-INIT:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_SHUTDOWN" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-SHUTDOWN:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_SETTINGS" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-SETTINGS:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_ENCODE" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-ENCODE:CAPS"/>
+    <keyword type="constant" name="GST_LIBRARY_ERROR_NUM_ERRORS" link="gstreamer-GstGError.html#GST-LIBRARY-ERROR-NUM-ERRORS:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_FAILED" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-FAILED:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_TOO_LAZY" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-TOO-LAZY:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_NOT_FOUND" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-NOT-FOUND:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_BUSY" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-BUSY:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_OPEN_READ" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-OPEN-READ:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_OPEN_WRITE" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-OPEN-WRITE:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_OPEN_READ_WRITE" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-OPEN-READ-WRITE:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_CLOSE" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-CLOSE:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_READ" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-READ:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_WRITE" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-WRITE:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_SEEK" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-SEEK:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_SYNC" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-SYNC:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_SETTINGS" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-SETTINGS:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_NO_SPACE_LEFT" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-NO-SPACE-LEFT:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_NOT_AUTHORIZED" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-NOT-AUTHORIZED:CAPS"/>
+    <keyword type="constant" name="GST_RESOURCE_ERROR_NUM_ERRORS" link="gstreamer-GstGError.html#GST-RESOURCE-ERROR-NUM-ERRORS:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_FAILED" link="gstreamer-GstGError.html#GST-STREAM-ERROR-FAILED:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_TOO_LAZY" link="gstreamer-GstGError.html#GST-STREAM-ERROR-TOO-LAZY:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_NOT_IMPLEMENTED" link="gstreamer-GstGError.html#GST-STREAM-ERROR-NOT-IMPLEMENTED:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_TYPE_NOT_FOUND" link="gstreamer-GstGError.html#GST-STREAM-ERROR-TYPE-NOT-FOUND:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_WRONG_TYPE" link="gstreamer-GstGError.html#GST-STREAM-ERROR-WRONG-TYPE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_CODEC_NOT_FOUND" link="gstreamer-GstGError.html#GST-STREAM-ERROR-CODEC-NOT-FOUND:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_DECODE" link="gstreamer-GstGError.html#GST-STREAM-ERROR-DECODE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_ENCODE" link="gstreamer-GstGError.html#GST-STREAM-ERROR-ENCODE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_DEMUX" link="gstreamer-GstGError.html#GST-STREAM-ERROR-DEMUX:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_MUX" link="gstreamer-GstGError.html#GST-STREAM-ERROR-MUX:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_FORMAT" link="gstreamer-GstGError.html#GST-STREAM-ERROR-FORMAT:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_DECRYPT" link="gstreamer-GstGError.html#GST-STREAM-ERROR-DECRYPT:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_DECRYPT_NOKEY" link="gstreamer-GstGError.html#GST-STREAM-ERROR-DECRYPT-NOKEY:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_ERROR_NUM_ERRORS" link="gstreamer-GstGError.html#GST-STREAM-ERROR-NUM-ERRORS:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_TYPE_UPSTREAM" link="GstEvent.html#GST-EVENT-TYPE-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_TYPE_DOWNSTREAM" link="GstEvent.html#GST-EVENT-TYPE-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_TYPE_SERIALIZED" link="GstEvent.html#GST-EVENT-TYPE-SERIALIZED:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_TYPE_STICKY" link="GstEvent.html#GST-EVENT-TYPE-STICKY:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_TYPE_STICKY_MULTI" link="GstEvent.html#GST-EVENT-TYPE-STICKY-MULTI:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_UNKNOWN" link="GstEvent.html#GST-EVENT-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_FLUSH_START" link="GstEvent.html#GST-EVENT-FLUSH-START:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_FLUSH_STOP" link="GstEvent.html#GST-EVENT-FLUSH-STOP:CAPS"/>
+    <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_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_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"/>
+    <keyword type="constant" name="GST_EVENT_SEGMENT_DONE" link="GstEvent.html#GST-EVENT-SEGMENT-DONE:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_GAP" link="GstEvent.html#GST-EVENT-GAP:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_QOS" link="GstEvent.html#GST-EVENT-QOS:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_SEEK" link="GstEvent.html#GST-EVENT-SEEK:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_NAVIGATION" link="GstEvent.html#GST-EVENT-NAVIGATION:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_LATENCY" link="GstEvent.html#GST-EVENT-LATENCY:CAPS"/>
+    <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_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"/>
+    <keyword type="constant" name="GST_EVENT_CUSTOM_DOWNSTREAM_STICKY" link="GstEvent.html#GST-EVENT-CUSTOM-DOWNSTREAM-STICKY:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_CUSTOM_BOTH" link="GstEvent.html#GST-EVENT-CUSTOM-BOTH:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_CUSTOM_BOTH_OOB" link="GstEvent.html#GST-EVENT-CUSTOM-BOTH-OOB:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_FLAG_NONE" link="GstEvent.html#GST-STREAM-FLAG-NONE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_FLAG_SPARSE" link="GstEvent.html#GST-STREAM-FLAG-SPARSE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_FLAG_SELECT" link="GstEvent.html#GST-STREAM-FLAG-SELECT:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_FLAG_UNSELECT" link="GstEvent.html#GST-STREAM-FLAG-UNSELECT:CAPS"/>
+    <keyword type="constant" name="GST_QOS_TYPE_OVERFLOW" link="GstEvent.html#GST-QOS-TYPE-OVERFLOW:CAPS"/>
+    <keyword type="constant" name="GST_QOS_TYPE_UNDERFLOW" link="GstEvent.html#GST-QOS-TYPE-UNDERFLOW:CAPS"/>
+    <keyword type="constant" name="GST_QOS_TYPE_THROTTLE" link="GstEvent.html#GST-QOS-TYPE-THROTTLE:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_TYPE_NONE" link="GstEvent.html#GST-SEEK-TYPE-NONE:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_TYPE_SET" link="GstEvent.html#GST-SEEK-TYPE-SET:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_TYPE_END" link="GstEvent.html#GST-SEEK-TYPE-END:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_NONE" link="GstEvent.html#GST-SEEK-FLAG-NONE:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_FLUSH" link="GstEvent.html#GST-SEEK-FLAG-FLUSH:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_ACCURATE" link="GstEvent.html#GST-SEEK-FLAG-ACCURATE:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_KEY_UNIT" link="GstEvent.html#GST-SEEK-FLAG-KEY-UNIT:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_SEGMENT" link="GstEvent.html#GST-SEEK-FLAG-SEGMENT:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_TRICKMODE" link="GstEvent.html#GST-SEEK-FLAG-TRICKMODE:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_SKIP" link="GstEvent.html#GST-SEEK-FLAG-SKIP:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_SNAP_BEFORE" link="GstEvent.html#GST-SEEK-FLAG-SNAP-BEFORE:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_SNAP_AFTER" link="GstEvent.html#GST-SEEK-FLAG-SNAP-AFTER:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_SNAP_NEAREST" link="GstEvent.html#GST-SEEK-FLAG-SNAP-NEAREST:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_TRICKMODE_KEY_UNITS" link="GstEvent.html#GST-SEEK-FLAG-TRICKMODE-KEY-UNITS:CAPS"/>
+    <keyword type="constant" name="GST_SEEK_FLAG_TRICKMODE_NO_AUDIO" link="GstEvent.html#GST-SEEK-FLAG-TRICKMODE-NO-AUDIO:CAPS"/>
+    <keyword type="constant" name="GST_FORMAT_UNDEFINED" link="gstreamer-GstFormat.html#GST-FORMAT-UNDEFINED:CAPS"/>
+    <keyword type="constant" name="GST_FORMAT_DEFAULT" link="gstreamer-GstFormat.html#GST-FORMAT-DEFAULT:CAPS"/>
+    <keyword type="constant" name="GST_FORMAT_BYTES" link="gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"/>
+    <keyword type="constant" name="GST_FORMAT_TIME" link="gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"/>
+    <keyword type="constant" name="GST_FORMAT_BUFFERS" link="gstreamer-GstFormat.html#GST-FORMAT-BUFFERS:CAPS"/>
+    <keyword type="constant" name="GST_FORMAT_PERCENT" link="gstreamer-GstFormat.html#GST-FORMAT-PERCENT:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_ITEM_SKIP" link="gstreamer-GstIterator.html#GST-ITERATOR-ITEM-SKIP:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_ITEM_PASS" link="gstreamer-GstIterator.html#GST-ITERATOR-ITEM-PASS:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_ITEM_END" link="gstreamer-GstIterator.html#GST-ITERATOR-ITEM-END:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_DONE" link="gstreamer-GstIterator.html#GST-ITERATOR-DONE:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_OK" link="gstreamer-GstIterator.html#GST-ITERATOR-OK:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_RESYNC" link="gstreamer-GstIterator.html#GST-ITERATOR-RESYNC:CAPS"/>
+    <keyword type="constant" name="GST_ITERATOR_ERROR" link="gstreamer-GstIterator.html#GST-ITERATOR-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_READONLY" link="GstMemory.html#GST-MEMORY-FLAG-READONLY:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_NO_SHARE" link="GstMemory.html#GST-MEMORY-FLAG-NO-SHARE:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_ZERO_PREFIXED" link="GstMemory.html#GST-MEMORY-FLAG-ZERO-PREFIXED:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_ZERO_PADDED" link="GstMemory.html#GST-MEMORY-FLAG-ZERO-PADDED:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS" link="GstMemory.html#GST-MEMORY-FLAG-PHYSICALLY-CONTIGUOUS:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_NOT_MAPPABLE" link="GstMemory.html#GST-MEMORY-FLAG-NOT-MAPPABLE:CAPS"/>
+    <keyword type="constant" name="GST_MEMORY_FLAG_LAST" link="GstMemory.html#GST-MEMORY-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_MAP_READ" link="GstMemory.html#GST-MAP-READ:CAPS"/>
+    <keyword type="constant" name="GST_MAP_WRITE" link="GstMemory.html#GST-MAP-WRITE:CAPS"/>
+    <keyword type="constant" name="GST_MAP_FLAG_LAST" link="GstMemory.html#GST-MAP-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_UNKNOWN" link="GstMessage.html#GST-MESSAGE-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_EOS" link="GstMessage.html#GST-MESSAGE-EOS:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_ERROR" link="GstMessage.html#GST-MESSAGE-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_WARNING" link="GstMessage.html#GST-MESSAGE-WARNING:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_INFO" link="GstMessage.html#GST-MESSAGE-INFO:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_TAG" link="GstMessage.html#GST-MESSAGE-TAG:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_BUFFERING" link="GstMessage.html#GST-MESSAGE-BUFFERING:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STATE_CHANGED" link="GstMessage.html#GST-MESSAGE-STATE-CHANGED:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STATE_DIRTY" link="GstMessage.html#GST-MESSAGE-STATE-DIRTY:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STEP_DONE" link="GstMessage.html#GST-MESSAGE-STEP-DONE:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_CLOCK_PROVIDE" link="GstMessage.html#GST-MESSAGE-CLOCK-PROVIDE:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_CLOCK_LOST" link="GstMessage.html#GST-MESSAGE-CLOCK-LOST:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_NEW_CLOCK" link="GstMessage.html#GST-MESSAGE-NEW-CLOCK:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STRUCTURE_CHANGE" link="GstMessage.html#GST-MESSAGE-STRUCTURE-CHANGE:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STREAM_STATUS" link="GstMessage.html#GST-MESSAGE-STREAM-STATUS:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_APPLICATION" link="GstMessage.html#GST-MESSAGE-APPLICATION:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_ELEMENT" link="GstMessage.html#GST-MESSAGE-ELEMENT:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_SEGMENT_START" link="GstMessage.html#GST-MESSAGE-SEGMENT-START:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_SEGMENT_DONE" link="GstMessage.html#GST-MESSAGE-SEGMENT-DONE:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_DURATION_CHANGED" link="GstMessage.html#GST-MESSAGE-DURATION-CHANGED:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_LATENCY" link="GstMessage.html#GST-MESSAGE-LATENCY:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_ASYNC_START" link="GstMessage.html#GST-MESSAGE-ASYNC-START:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_ASYNC_DONE" link="GstMessage.html#GST-MESSAGE-ASYNC-DONE:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_REQUEST_STATE" link="GstMessage.html#GST-MESSAGE-REQUEST-STATE:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STEP_START" link="GstMessage.html#GST-MESSAGE-STEP-START:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_QOS" link="GstMessage.html#GST-MESSAGE-QOS:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_PROGRESS" link="GstMessage.html#GST-MESSAGE-PROGRESS:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_TOC" link="GstMessage.html#GST-MESSAGE-TOC:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_RESET_TIME" link="GstMessage.html#GST-MESSAGE-RESET-TIME:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STREAM_START" link="GstMessage.html#GST-MESSAGE-STREAM-START:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_NEED_CONTEXT" link="GstMessage.html#GST-MESSAGE-NEED-CONTEXT:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_HAVE_CONTEXT" link="GstMessage.html#GST-MESSAGE-HAVE-CONTEXT:CAPS"/>
+    <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_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"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_CREATE" link="GstMessage.html#GST-STREAM-STATUS-TYPE-CREATE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_ENTER" link="GstMessage.html#GST-STREAM-STATUS-TYPE-ENTER:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_LEAVE" link="GstMessage.html#GST-STREAM-STATUS-TYPE-LEAVE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_DESTROY" link="GstMessage.html#GST-STREAM-STATUS-TYPE-DESTROY:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_START" link="GstMessage.html#GST-STREAM-STATUS-TYPE-START:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_PAUSE" link="GstMessage.html#GST-STREAM-STATUS-TYPE-PAUSE:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_STATUS_TYPE_STOP" link="GstMessage.html#GST-STREAM-STATUS-TYPE-STOP:CAPS"/>
+    <keyword type="constant" name="GST_PROGRESS_TYPE_START" link="GstMessage.html#GST-PROGRESS-TYPE-START:CAPS"/>
+    <keyword type="constant" name="GST_PROGRESS_TYPE_CONTINUE" link="GstMessage.html#GST-PROGRESS-TYPE-CONTINUE:CAPS"/>
+    <keyword type="constant" name="GST_PROGRESS_TYPE_COMPLETE" link="GstMessage.html#GST-PROGRESS-TYPE-COMPLETE:CAPS"/>
+    <keyword type="constant" name="GST_PROGRESS_TYPE_CANCELED" link="GstMessage.html#GST-PROGRESS-TYPE-CANCELED:CAPS"/>
+    <keyword type="constant" name="GST_PROGRESS_TYPE_ERROR" link="GstMessage.html#GST-PROGRESS-TYPE-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_META_FLAG_NONE" link="gstreamer-GstMeta.html#GST-META-FLAG-NONE:CAPS"/>
+    <keyword type="constant" name="GST_META_FLAG_READONLY" link="gstreamer-GstMeta.html#GST-META-FLAG-READONLY:CAPS"/>
+    <keyword type="constant" name="GST_META_FLAG_POOLED" link="gstreamer-GstMeta.html#GST-META-FLAG-POOLED:CAPS"/>
+    <keyword type="constant" name="GST_META_FLAG_LOCKED" link="gstreamer-GstMeta.html#GST-META-FLAG-LOCKED:CAPS"/>
+    <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_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_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"/>
+    <keyword type="constant" name="GST_PAD_SINK" link="GstPad.html#GST-PAD-SINK:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_BLOCKED" link="GstPad.html#GST-PAD-FLAG-BLOCKED:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_FLUSHING" link="GstPad.html#GST-PAD-FLAG-FLUSHING:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_EOS" link="GstPad.html#GST-PAD-FLAG-EOS:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_BLOCKING" link="GstPad.html#GST-PAD-FLAG-BLOCKING:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_NEED_PARENT" link="GstPad.html#GST-PAD-FLAG-NEED-PARENT:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_NEED_RECONFIGURE" link="GstPad.html#GST-PAD-FLAG-NEED-RECONFIGURE:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_PENDING_EVENTS" link="GstPad.html#GST-PAD-FLAG-PENDING-EVENTS:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_FIXED_CAPS" link="GstPad.html#GST-PAD-FLAG-FIXED-CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_PROXY_CAPS" link="GstPad.html#GST-PAD-FLAG-PROXY-CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_PROXY_ALLOCATION" link="GstPad.html#GST-PAD-FLAG-PROXY-ALLOCATION:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_PROXY_SCHEDULING" link="GstPad.html#GST-PAD-FLAG-PROXY-SCHEDULING:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_ACCEPT_INTERSECT" link="GstPad.html#GST-PAD-FLAG-ACCEPT-INTERSECT:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_ACCEPT_TEMPLATE" link="GstPad.html#GST-PAD-FLAG-ACCEPT-TEMPLATE:CAPS"/>
+    <keyword type="constant" name="GST_PAD_FLAG_LAST" link="GstPad.html#GST-PAD-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_OK" link="GstPad.html#GST-PAD-LINK-OK:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_WRONG_HIERARCHY" link="GstPad.html#GST-PAD-LINK-WRONG-HIERARCHY:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_WAS_LINKED" link="GstPad.html#GST-PAD-LINK-WAS-LINKED:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_WRONG_DIRECTION" link="GstPad.html#GST-PAD-LINK-WRONG-DIRECTION:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_NOFORMAT" link="GstPad.html#GST-PAD-LINK-NOFORMAT:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_NOSCHED" link="GstPad.html#GST-PAD-LINK-NOSCHED:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_REFUSED" link="GstPad.html#GST-PAD-LINK-REFUSED:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_CHECK_NOTHING" link="GstPad.html#GST-PAD-LINK-CHECK-NOTHING:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_CHECK_HIERARCHY" link="GstPad.html#GST-PAD-LINK-CHECK-HIERARCHY:CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_CHECK_TEMPLATE_CAPS" link="GstPad.html#GST-PAD-LINK-CHECK-TEMPLATE-CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_CHECK_CAPS" link="GstPad.html#GST-PAD-LINK-CHECK-CAPS"/>
+    <keyword type="constant" name="GST_PAD_LINK_CHECK_DEFAULT" link="GstPad.html#GST-PAD-LINK-CHECK-DEFAULT:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_CUSTOM_SUCCESS_2" link="GstPad.html#GST-FLOW-CUSTOM-SUCCESS-2:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_CUSTOM_SUCCESS_1" link="GstPad.html#GST-FLOW-CUSTOM-SUCCESS-1:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_CUSTOM_SUCCESS" link="GstPad.html#GST-FLOW-CUSTOM-SUCCESS:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_OK" link="GstPad.html#GST-FLOW-OK:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_NOT_LINKED" link="GstPad.html#GST-FLOW-NOT-LINKED:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_FLUSHING" link="GstPad.html#GST-FLOW-FLUSHING:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_EOS" link="GstPad.html#GST-FLOW-EOS:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_NOT_NEGOTIATED" link="GstPad.html#GST-FLOW-NOT-NEGOTIATED:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_ERROR" link="GstPad.html#GST-FLOW-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_NOT_SUPPORTED" link="GstPad.html#GST-FLOW-NOT-SUPPORTED:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_CUSTOM_ERROR" link="GstPad.html#GST-FLOW-CUSTOM-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_CUSTOM_ERROR_1" link="GstPad.html#GST-FLOW-CUSTOM-ERROR-1:CAPS"/>
+    <keyword type="constant" name="GST_FLOW_CUSTOM_ERROR_2" link="GstPad.html#GST-FLOW-CUSTOM-ERROR-2:CAPS"/>
+    <keyword type="constant" name="GST_PAD_MODE_NONE" link="GstPad.html#GST-PAD-MODE-NONE:CAPS"/>
+    <keyword type="constant" name="GST_PAD_MODE_PUSH" link="GstPad.html#GST-PAD-MODE-PUSH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_MODE_PULL" link="GstPad.html#GST-PAD-MODE-PULL:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_DROP" link="GstPad.html#GST-PAD-PROBE-DROP:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_OK" link="GstPad.html#GST-PAD-PROBE-OK:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_REMOVE" link="GstPad.html#GST-PAD-PROBE-REMOVE:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_PASS" link="GstPad.html#GST-PAD-PROBE-PASS:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_HANDLED" link="GstPad.html#GST-PAD-PROBE-HANDLED:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_INVALID" link="GstPad.html#GST-PAD-PROBE-TYPE-INVALID:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_IDLE" link="GstPad.html#GST-PAD-PROBE-TYPE-IDLE:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_BLOCK" link="GstPad.html#GST-PAD-PROBE-TYPE-BLOCK:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_BUFFER" link="GstPad.html#GST-PAD-PROBE-TYPE-BUFFER:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_BUFFER_LIST" link="GstPad.html#GST-PAD-PROBE-TYPE-BUFFER-LIST:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-EVENT-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_EVENT_UPSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-EVENT-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_EVENT_FLUSH" link="GstPad.html#GST-PAD-PROBE-TYPE-EVENT-FLUSH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-QUERY-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_QUERY_UPSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-QUERY-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_PUSH" link="GstPad.html#GST-PAD-PROBE-TYPE-PUSH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_PULL" link="GstPad.html#GST-PAD-PROBE-TYPE-PULL:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_BLOCKING" link="GstPad.html#GST-PAD-PROBE-TYPE-BLOCKING:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-DATA-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_DATA_UPSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-DATA-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_DATA_BOTH" link="GstPad.html#GST-PAD-PROBE-TYPE-DATA-BOTH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-BLOCK-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM" link="GstPad.html#GST-PAD-PROBE-TYPE-BLOCK-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_EVENT_BOTH" link="GstPad.html#GST-PAD-PROBE-TYPE-EVENT-BOTH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_QUERY_BOTH" link="GstPad.html#GST-PAD-PROBE-TYPE-QUERY-BOTH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_ALL_BOTH" link="GstPad.html#GST-PAD-PROBE-TYPE-ALL-BOTH:CAPS"/>
+    <keyword type="constant" name="GST_PAD_PROBE_TYPE_SCHEDULING" link="GstPad.html#GST-PAD-PROBE-TYPE-SCHEDULING:CAPS"/>
+    <keyword type="constant" name="GST_PAD_TEMPLATE_FLAG_LAST" link="GstPadTemplate.html#GST-PAD-TEMPLATE-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_PAD_ALWAYS" link="GstPadTemplate.html#GST-PAD-ALWAYS:CAPS"/>
+    <keyword type="constant" name="GST_PAD_SOMETIMES" link="GstPadTemplate.html#GST-PAD-SOMETIMES:CAPS"/>
+    <keyword type="constant" name="GST_PAD_REQUEST" link="GstPadTemplate.html#GST-PAD-REQUEST:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_SYNTAX" link="gstreamer-GstParse.html#GST-PARSE-ERROR-SYNTAX:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_NO_SUCH_ELEMENT" link="gstreamer-GstParse.html#GST-PARSE-ERROR-NO-SUCH-ELEMENT:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_NO_SUCH_PROPERTY" link="gstreamer-GstParse.html#GST-PARSE-ERROR-NO-SUCH-PROPERTY:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_LINK" link="gstreamer-GstParse.html#GST-PARSE-ERROR-LINK:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY" link="gstreamer-GstParse.html#GST-PARSE-ERROR-COULD-NOT-SET-PROPERTY:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_EMPTY_BIN" link="gstreamer-GstParse.html#GST-PARSE-ERROR-EMPTY-BIN:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_ERROR_EMPTY" link="gstreamer-GstParse.html#GST-PARSE-ERROR-EMPTY:CAPS"/>
+    <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_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"/>
+    <keyword type="constant" name="GST_PLUGIN_ERROR_DEPENDENCIES" link="GstPlugin.html#GST-PLUGIN-ERROR-DEPENDENCIES:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_ERROR_NAME_MISMATCH" link="GstPlugin.html#GST-PLUGIN-ERROR-NAME-MISMATCH:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_FLAG_CACHED" link="GstPlugin.html#GST-PLUGIN-FLAG-CACHED:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_FLAG_BLACKLISTED" link="GstPlugin.html#GST-PLUGIN-FLAG-BLACKLISTED:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_DEPENDENCY_FLAG_NONE" link="GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-NONE:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE" link="GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-RECURSE:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY" link="GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-PATHS-ARE-DEFAULT-ONLY:CAPS"/>
+    <keyword type="constant" name="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX" link="GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-FILE-NAME-IS-SUFFIX:CAPS"/>
+    <keyword type="constant" name="GST_RANK_NONE" link="GstPluginFeature.html#GST-RANK-NONE:CAPS"/>
+    <keyword type="constant" name="GST_RANK_MARGINAL" link="GstPluginFeature.html#GST-RANK-MARGINAL:CAPS"/>
+    <keyword type="constant" name="GST_RANK_SECONDARY" link="GstPluginFeature.html#GST-RANK-SECONDARY:CAPS"/>
+    <keyword type="constant" name="GST_RANK_PRIMARY" link="GstPluginFeature.html#GST-RANK-PRIMARY:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_TYPE_UPSTREAM" link="GstQuery.html#GST-QUERY-TYPE-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_TYPE_DOWNSTREAM" link="GstQuery.html#GST-QUERY-TYPE-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_TYPE_SERIALIZED" link="GstQuery.html#GST-QUERY-TYPE-SERIALIZED:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_UNKNOWN" link="GstQuery.html#GST-QUERY-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_POSITION" link="GstQuery.html#GST-QUERY-POSITION:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_DURATION" link="GstQuery.html#GST-QUERY-DURATION:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_LATENCY" link="GstQuery.html#GST-QUERY-LATENCY:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_JITTER" link="GstQuery.html#GST-QUERY-JITTER:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_RATE" link="GstQuery.html#GST-QUERY-RATE:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_SEEKING" link="GstQuery.html#GST-QUERY-SEEKING:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_SEGMENT" link="GstQuery.html#GST-QUERY-SEGMENT:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_CONVERT" link="GstQuery.html#GST-QUERY-CONVERT:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_FORMATS" link="GstQuery.html#GST-QUERY-FORMATS:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_BUFFERING" link="GstQuery.html#GST-QUERY-BUFFERING:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_CUSTOM" link="GstQuery.html#GST-QUERY-CUSTOM:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_URI" link="GstQuery.html#GST-QUERY-URI:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_ALLOCATION" link="GstQuery.html#GST-QUERY-ALLOCATION:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_SCHEDULING" link="GstQuery.html#GST-QUERY-SCHEDULING:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_ACCEPT_CAPS" link="GstQuery.html#GST-QUERY-ACCEPT-CAPS"/>
+    <keyword type="constant" name="GST_QUERY_CAPS" link="GstQuery.html#GST-QUERY-CAPS"/>
+    <keyword type="constant" name="GST_QUERY_DRAIN" link="GstQuery.html#GST-QUERY-DRAIN:CAPS"/>
+    <keyword type="constant" name="GST_QUERY_CONTEXT" link="GstQuery.html#GST-QUERY-CONTEXT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFERING_STREAM" link="GstQuery.html#GST-BUFFERING-STREAM:CAPS"/>
+    <keyword type="constant" name="GST_BUFFERING_DOWNLOAD" link="GstQuery.html#GST-BUFFERING-DOWNLOAD:CAPS"/>
+    <keyword type="constant" name="GST_BUFFERING_TIMESHIFT" link="GstQuery.html#GST-BUFFERING-TIMESHIFT:CAPS"/>
+    <keyword type="constant" name="GST_BUFFERING_LIVE" link="GstQuery.html#GST-BUFFERING-LIVE:CAPS"/>
+    <keyword type="constant" name="GST_SCHEDULING_FLAG_SEEKABLE" link="GstQuery.html#GST-SCHEDULING-FLAG-SEEKABLE:CAPS"/>
+    <keyword type="constant" name="GST_SCHEDULING_FLAG_SEQUENTIAL" link="GstQuery.html#GST-SCHEDULING-FLAG-SEQUENTIAL:CAPS"/>
+    <keyword type="constant" name="GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED" link="GstQuery.html#GST-SCHEDULING-FLAG-BANDWIDTH-LIMITED:CAPS"/>
+    <keyword type="constant" name="GST_SEGMENT_FLAG_NONE" link="GstSegment.html#GST-SEGMENT-FLAG-NONE:CAPS"/>
+    <keyword type="constant" name="GST_SEGMENT_FLAG_RESET" link="GstSegment.html#GST-SEGMENT-FLAG-RESET:CAPS"/>
+    <keyword type="constant" name="GST_SEGMENT_FLAG_TRICKMODE" link="GstSegment.html#GST-SEGMENT-FLAG-TRICKMODE:CAPS"/>
+    <keyword type="constant" name="GST_SEGMENT_FLAG_SKIP" link="GstSegment.html#GST-SEGMENT-FLAG-SKIP:CAPS"/>
+    <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_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"/>
+    <keyword type="constant" name="GST_TAG_MERGE_UNDEFINED" link="GstTagList.html#GST-TAG-MERGE-UNDEFINED:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_REPLACE_ALL" link="GstTagList.html#GST-TAG-MERGE-REPLACE-ALL:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_REPLACE" link="GstTagList.html#GST-TAG-MERGE-REPLACE:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_APPEND" link="GstTagList.html#GST-TAG-MERGE-APPEND:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_PREPEND" link="GstTagList.html#GST-TAG-MERGE-PREPEND:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_KEEP" link="GstTagList.html#GST-TAG-MERGE-KEEP:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_KEEP_ALL" link="GstTagList.html#GST-TAG-MERGE-KEEP-ALL:CAPS"/>
+    <keyword type="constant" name="GST_TAG_MERGE_COUNT" link="GstTagList.html#GST-TAG-MERGE-COUNT:CAPS"/>
+    <keyword type="constant" name="GST_TAG_FLAG_UNDEFINED" link="GstTagList.html#GST-TAG-FLAG-UNDEFINED:CAPS"/>
+    <keyword type="constant" name="GST_TAG_FLAG_META" link="GstTagList.html#GST-TAG-FLAG-META:CAPS"/>
+    <keyword type="constant" name="GST_TAG_FLAG_ENCODED" link="GstTagList.html#GST-TAG-FLAG-ENCODED:CAPS"/>
+    <keyword type="constant" name="GST_TAG_FLAG_DECODED" link="GstTagList.html#GST-TAG-FLAG-DECODED:CAPS"/>
+    <keyword type="constant" name="GST_TAG_FLAG_COUNT" link="GstTagList.html#GST-TAG-FLAG-COUNT:CAPS"/>
+    <keyword type="constant" name="GST_TAG_SCOPE_STREAM" link="GstTagList.html#GST-TAG-SCOPE-STREAM:CAPS"/>
+    <keyword type="constant" name="GST_TAG_SCOPE_GLOBAL" link="GstTagList.html#GST-TAG-SCOPE-GLOBAL:CAPS"/>
+    <keyword type="constant" name="GST_TASK_STARTED" link="GstTask.html#GST-TASK-STARTED:CAPS"/>
+    <keyword type="constant" name="GST_TASK_STOPPED" link="GstTask.html#GST-TASK-STOPPED:CAPS"/>
+    <keyword type="constant" name="GST_TASK_PAUSED" link="GstTask.html#GST-TASK-PAUSED:CAPS"/>
+    <keyword type="constant" name="GST_TOC_SCOPE_GLOBAL" link="GstToc.html#GST-TOC-SCOPE-GLOBAL:CAPS"/>
+    <keyword type="constant" name="GST_TOC_SCOPE_CURRENT" link="GstToc.html#GST-TOC-SCOPE-CURRENT:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_ANGLE" link="GstToc.html#GST-TOC-ENTRY-TYPE-ANGLE:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_VERSION" link="GstToc.html#GST-TOC-ENTRY-TYPE-VERSION:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_EDITION" link="GstToc.html#GST-TOC-ENTRY-TYPE-EDITION:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_INVALID" link="GstToc.html#GST-TOC-ENTRY-TYPE-INVALID:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_TITLE" link="GstToc.html#GST-TOC-ENTRY-TYPE-TITLE:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_TRACK" link="GstToc.html#GST-TOC-ENTRY-TYPE-TRACK:CAPS"/>
+    <keyword type="constant" name="GST_TOC_ENTRY_TYPE_CHAPTER" link="GstToc.html#GST-TOC-ENTRY-TYPE-CHAPTER:CAPS"/>
+    <keyword type="constant" name="GST_TOC_LOOP_NONE" link="GstToc.html#GST-TOC-LOOP-NONE:CAPS"/>
+    <keyword type="constant" name="GST_TOC_LOOP_FORWARD" link="GstToc.html#GST-TOC-LOOP-FORWARD:CAPS"/>
+    <keyword type="constant" name="GST_TOC_LOOP_REVERSE" link="GstToc.html#GST-TOC-LOOP-REVERSE:CAPS"/>
+    <keyword type="constant" name="GST_TOC_LOOP_PING_PONG" link="GstToc.html#GST-TOC-LOOP-PING-PONG:CAPS"/>
+    <keyword type="constant" name="GST_TYPE_FIND_NONE" link="gstreamer-GstTypeFind.html#GST-TYPE-FIND-NONE:CAPS"/>
+    <keyword type="constant" name="GST_TYPE_FIND_MINIMUM" link="gstreamer-GstTypeFind.html#GST-TYPE-FIND-MINIMUM:CAPS"/>
+    <keyword type="constant" name="GST_TYPE_FIND_POSSIBLE" link="gstreamer-GstTypeFind.html#GST-TYPE-FIND-POSSIBLE:CAPS"/>
+    <keyword type="constant" name="GST_TYPE_FIND_LIKELY" link="gstreamer-GstTypeFind.html#GST-TYPE-FIND-LIKELY:CAPS"/>
+    <keyword type="constant" name="GST_TYPE_FIND_NEARLY_CERTAIN" link="gstreamer-GstTypeFind.html#GST-TYPE-FIND-NEARLY-CERTAIN:CAPS"/>
+    <keyword type="constant" name="GST_TYPE_FIND_MAXIMUM" link="gstreamer-GstTypeFind.html#GST-TYPE-FIND-MAXIMUM:CAPS"/>
+    <keyword type="constant" name="GST_URI_UNKNOWN" link="gstreamer-GstUriHandler.html#GST-URI-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="GST_URI_SINK" link="gstreamer-GstUriHandler.html#GST-URI-SINK:CAPS"/>
+    <keyword type="constant" name="GST_URI_SRC" link="gstreamer-GstUriHandler.html#GST-URI-SRC:CAPS"/>
+    <keyword type="constant" name="GST_URI_ERROR_UNSUPPORTED_PROTOCOL" link="gstreamer-GstUriHandler.html#GST-URI-ERROR-UNSUPPORTED-PROTOCOL:CAPS"/>
+    <keyword type="constant" name="GST_URI_ERROR_BAD_URI" link="gstreamer-GstUriHandler.html#GST-URI-ERROR-BAD-URI:CAPS"/>
+    <keyword type="constant" name="GST_URI_ERROR_BAD_STATE" link="gstreamer-GstUriHandler.html#GST-URI-ERROR-BAD-STATE:CAPS"/>
+    <keyword type="constant" name="GST_URI_ERROR_BAD_REFERENCE" link="gstreamer-GstUriHandler.html#GST-URI-ERROR-BAD-REFERENCE:CAPS"/>
+    <keyword type="constant" name="GST_SEARCH_MODE_EXACT" link="gstreamer-GstUtils.html#GST-SEARCH-MODE-EXACT:CAPS"/>
+    <keyword type="constant" name="GST_SEARCH_MODE_BEFORE" link="gstreamer-GstUtils.html#GST-SEARCH-MODE-BEFORE:CAPS"/>
+    <keyword type="constant" name="GST_SEARCH_MODE_AFTER" link="gstreamer-GstUtils.html#GST-SEARCH-MODE-AFTER:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_NONE" link="gstreamer-GstInfo.html#GST-LEVEL-NONE:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_ERROR" link="gstreamer-GstInfo.html#GST-LEVEL-ERROR:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_WARNING" link="gstreamer-GstInfo.html#GST-LEVEL-WARNING:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_FIXME" link="gstreamer-GstInfo.html#GST-LEVEL-FIXME:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_INFO" link="gstreamer-GstInfo.html#GST-LEVEL-INFO:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_DEBUG" link="gstreamer-GstInfo.html#GST-LEVEL-DEBUG:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_LOG" link="gstreamer-GstInfo.html#GST-LEVEL-LOG:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_TRACE" link="gstreamer-GstInfo.html#GST-LEVEL-TRACE:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_MEMDUMP" link="gstreamer-GstInfo.html#GST-LEVEL-MEMDUMP:CAPS"/>
+    <keyword type="constant" name="GST_LEVEL_COUNT" link="gstreamer-GstInfo.html#GST-LEVEL-COUNT:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_BLACK" link="gstreamer-GstInfo.html#GST-DEBUG-FG-BLACK:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_RED" link="gstreamer-GstInfo.html#GST-DEBUG-FG-RED:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_GREEN" link="gstreamer-GstInfo.html#GST-DEBUG-FG-GREEN:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_YELLOW" link="gstreamer-GstInfo.html#GST-DEBUG-FG-YELLOW:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_BLUE" link="gstreamer-GstInfo.html#GST-DEBUG-FG-BLUE:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_MAGENTA" link="gstreamer-GstInfo.html#GST-DEBUG-FG-MAGENTA:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_CYAN" link="gstreamer-GstInfo.html#GST-DEBUG-FG-CYAN:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_FG_WHITE" link="gstreamer-GstInfo.html#GST-DEBUG-FG-WHITE:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_BLACK" link="gstreamer-GstInfo.html#GST-DEBUG-BG-BLACK:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_RED" link="gstreamer-GstInfo.html#GST-DEBUG-BG-RED:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_GREEN" link="gstreamer-GstInfo.html#GST-DEBUG-BG-GREEN:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_YELLOW" link="gstreamer-GstInfo.html#GST-DEBUG-BG-YELLOW:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_BLUE" link="gstreamer-GstInfo.html#GST-DEBUG-BG-BLUE:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_MAGENTA" link="gstreamer-GstInfo.html#GST-DEBUG-BG-MAGENTA:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_CYAN" link="gstreamer-GstInfo.html#GST-DEBUG-BG-CYAN:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BG_WHITE" link="gstreamer-GstInfo.html#GST-DEBUG-BG-WHITE:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_BOLD" link="gstreamer-GstInfo.html#GST-DEBUG-BOLD:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_UNDERLINE" link="gstreamer-GstInfo.html#GST-DEBUG-UNDERLINE:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_COLOR_MODE_OFF" link="gstreamer-GstInfo.html#GST-DEBUG-COLOR-MODE-OFF:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_COLOR_MODE_ON" link="gstreamer-GstInfo.html#GST-DEBUG-COLOR-MODE-ON:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_COLOR_MODE_UNIX" link="gstreamer-GstInfo.html#GST-DEBUG-COLOR-MODE-UNIX:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-MEDIA-TYPE:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-CAPS-DETAILS:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-NON-DEFAULT-PARAMS:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_STATES" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-STATES:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_FULL_PARAMS" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-FULL-PARAMS:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_ALL" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-ALL:CAPS"/>
+    <keyword type="constant" name="GST_DEBUG_GRAPH_SHOW_VERBOSE" link="gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-VERBOSE:CAPS"/>
   </functions>
 </book>
diff --git a/docs/gst/html/gstreamer-Gst.html b/docs/gst/html/gstreamer-Gst.html
index 5a78e54..130817d 100644
--- a/docs/gst/html/gstreamer-Gst.html
+++ b/docs/gst/html/gstreamer-Gst.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: Gst</title>
+<title>Gst: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="libgstreamer.html" title="GStreamer Core Library">
 <link rel="next" href="GstAllocator.html" title="GstAllocator">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -147,7 +147,7 @@
 <div class="refsect1">
 <a name="gstreamer-Gst.description"></a><h2>Description</h2>
 <p>GStreamer is a framework for constructing graphs of various filters
-(termed elements here) that will handle streaming media.  Any discreet
+(termed elements here) that will handle streaming media.  Any discrete
 (packetizable) media type is supported, with provisions for automatically
 determining source type.  Formatting/framing information is provided with
 a powerful negotiation framework.  Plugins are heavily used to provide for
@@ -336,7 +336,6 @@
 <div class="refsect3">
 <a name="id-1.3.3.6.3.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if GStreamer could be initialized.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -353,8 +352,9 @@
 <p>If you use this function, you should make sure you initialise the GLib
 threading system as one of the very first things in your program
 (see the example at the beginning of this section).</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.3.6.4.7"></a><h4>Returns</h4>
+<a name="id-1.3.3.6.4.8"></a><h4>Returns</h4>
 <p> a pointer to GStreamer's option group. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -369,7 +369,6 @@
 <div class="refsect3">
 <a name="id-1.3.3.6.5.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if initialization has been done, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -454,7 +453,6 @@
 <div class="refsect3">
 <a name="id-1.3.3.6.9.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if GStreamer is allowed to install a custom SIGSEGV handler.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -494,7 +492,6 @@
 <a name="id-1.3.3.6.11.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if GStreamer will use the child helper process when
 rebuilding the registry.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -543,7 +540,6 @@
 <a name="id-1.3.3.6.13.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the registry has been updated successfully (does not
 imply that there were changes), otherwise <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -552,7 +548,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstAtomicQueue.html b/docs/gst/html/gstreamer-GstAtomicQueue.html
index d8c8eba..66133f3 100644
--- a/docs/gst/html/gstreamer-GstAtomicQueue.html
+++ b/docs/gst/html/gstreamer-GstAtomicQueue.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstAtomicQueue</title>
+<title>GstAtomicQueue: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstAllocator.html" title="GstAllocator">
 <link rel="next" href="GstBin.html" title="GstBin">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -148,7 +148,6 @@
 <div class="refsect3">
 <a name="id-1.3.5.7.2.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-GstAtomicQueue.html#GstAtomicQueue" title="GstAtomicQueue"><span class="type">GstAtomicQueue</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -310,7 +309,6 @@
 <div class="refsect3">
 <a name="id-1.3.5.7.8.6"></a><h4>Returns</h4>
 <p> the number of elements in the queue.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -325,7 +323,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-gstconfig.html b/docs/gst/html/gstreamer-GstConfig.html
similarity index 83%
rename from docs/gst/html/gstreamer-gstconfig.html
rename to docs/gst/html/gstreamer-GstConfig.html
index 8642d17..58deb54 100644
--- a/docs/gst/html/gstreamer-gstconfig.html
+++ b/docs/gst/html/gstreamer-GstConfig.html
@@ -2,20 +2,20 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: gstconfig</title>
+<title>GstConfig: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstClock.html" title="GstClock">
 <link rel="next" href="GstContext.html" title="GstContext">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gstreamer-gstconfig.description" class="shortcut">Description</a></span>
+                  <a href="#gstreamer-GstConfig.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>
@@ -23,16 +23,16 @@
 <td><a accesskey="n" href="GstContext.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
-<a name="gstreamer-gstconfig"></a><div class="titlepage"></div>
+<a name="gstreamer-GstConfig"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
-<h2><span class="refentrytitle"><a name="gstreamer-gstconfig.top_of_page"></a>gstconfig</span></h2>
-<p>gstconfig — Build configuration options</p>
+<h2><span class="refentrytitle"><a name="gstreamer-GstConfig.top_of_page"></a>GstConfig</span></h2>
+<p>GstConfig — Build configuration options</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="gstreamer-gstconfig.other"></a><h2>Types and Values</h2>
+<a name="gstreamer-GstConfig.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
@@ -41,38 +41,38 @@
 <tbody>
 <tr>
 <td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-gstconfig.html#GST-DISABLE-GST-DEBUG:CAPS" title="GST_DISABLE_GST_DEBUG">GST_DISABLE_GST_DEBUG</a></td>
+<td class="function_name"><a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-GST-DEBUG:CAPS" title="GST_DISABLE_GST_DEBUG">GST_DISABLE_GST_DEBUG</a></td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-gstconfig.html#GST-DISABLE-PARSE:CAPS" title="GST_DISABLE_PARSE">GST_DISABLE_PARSE</a></td>
+<td class="function_name"><a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-PARSE:CAPS" title="GST_DISABLE_PARSE">GST_DISABLE_PARSE</a></td>
 </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>
+<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>
+<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>
+<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>
 <td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-gstconfig.html#GST-DISABLE-PLUGIN:CAPS" title="GST_DISABLE_PLUGIN">GST_DISABLE_PLUGIN</a></td>
+<td class="function_name"><a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-PLUGIN:CAPS" title="GST_DISABLE_PLUGIN">GST_DISABLE_PLUGIN</a></td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-gstconfig.includes"></a><h2>Includes</h2>
+<a name="gstreamer-GstConfig.includes"></a><h2>Includes</h2>
 <pre class="synopsis">#include &lt;gst/gst.h&gt;
 </pre>
 </div>
 <div class="refsect1">
-<a name="gstreamer-gstconfig.description"></a><h2>Description</h2>
+<a name="gstreamer-GstConfig.description"></a><h2>Description</h2>
 <p>This describes the configuration options for GStreamer. When building
 GStreamer there are a lot of parts (known internally as "subsystems" ) that
 can be disabled for various reasons. The most common reasons are speed and
@@ -105,10 +105,11 @@
 <br class="example-break">
 </div>
 <div class="refsect1">
-<a name="gstreamer-gstconfig.functions_details"></a><h2>Functions</h2>
+<a name="gstreamer-GstConfig.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
-<a name="gstreamer-gstconfig.other_details"></a><h2>Types and Values</h2>
+<a name="gstreamer-GstConfig.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
 <a name="GST-DISABLE-GST-DEBUG:CAPS"></a><h3>GST_DISABLE_GST_DEBUG</h3>
 <pre class="programlisting">#define GST_DISABLE_GST_DEBUG 1
@@ -156,7 +157,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstDevice.html b/docs/gst/html/gstreamer-GstDevice.html
index 1014ec9..30fc90d 100644
--- a/docs/gst/html/gstreamer-GstDevice.html
+++ b/docs/gst/html/gstreamer-GstDevice.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstDevice</title>
+<title>GstDevice: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer-device-probing.html" title="GStreamer Device Discovery and Device Probing">
 <link rel="prev" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">
 <link rel="next" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -95,6 +95,14 @@
 <a class="link" href="gstreamer-GstDevice.html#gst-device-reconfigure-element" title="gst_device_reconfigure_element ()">gst_device_reconfigure_element</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="gstreamer-GstDevice.html#gst-device-get-properties" title="gst_device_get_properties ()">gst_device_get_properties</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -167,7 +175,7 @@
 <p> a new <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> configured to use this device. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -194,9 +202,8 @@
 <a name="id-1.4.3.7.3.6"></a><h4>Returns</h4>
 <p> The <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> supported by this device. Unref with
 <a class="link" href="GstCaps.html#gst-caps-unref" title="gst_caps_unref ()"><code class="function">gst_caps_unref()</code></a> when done.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -224,9 +231,8 @@
 <div class="refsect3">
 <a name="id-1.4.3.7.4.6"></a><h4>Returns</h4>
 <p> The device class. Free with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after use.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -252,9 +258,8 @@
 <div class="refsect3">
 <a name="id-1.4.3.7.5.6"></a><h4>Returns</h4>
 <p> The device name. Free with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after use.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -291,9 +296,8 @@
 <a name="id-1.4.3.7.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>device</code></em>
 matches.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -330,9 +334,8 @@
 <a name="id-1.4.3.7.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>device</code></em>
 matches.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -371,9 +374,36 @@
 <a name="id-1.4.3.7.8.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the element could be reconfigured to use this device,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<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-device-get-properties"></a><h3>gst_device_get_properties ()</h3>
+<pre class="programlisting"><a class="link" href="GstStructure.html" title="GstStructure"><span class="returnvalue">GstStructure</span></a> *
+gst_device_get_properties (<em class="parameter"><code><a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a> *device</code></em>);</pre>
+<p>Gets the extra properties of a device.</p>
+<div class="refsect3">
+<a name="id-1.4.3.7.9.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>device</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.4.3.7.9.6"></a><h4>Returns</h4>
+<p> The extra properties or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when there are none.
+Free with <a class="link" href="GstStructure.html#gst-structure-free" title="gst_structure_free ()"><code class="function">gst_structure_free()</code></a> after use.</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -400,7 +430,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -408,8 +438,8 @@
 <pre class="programlisting">struct GstDeviceClass {
   GstObjectClass    parent_class;
 
-  GstElement * (*create_element) (GstDevice * device, const gchar * name);
-  gboolean (*reconfigure_element) (GstDevice * device, GstElement * element);
+  GstElement * (*create_element)      (GstDevice * device, const gchar * name);
+  gboolean     (*reconfigure_element) (GstDevice * device, GstElement * element);
 };
 </pre>
 <p>The class structure for a <a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a> object.</p>
@@ -443,7 +473,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -452,7 +482,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstDeviceMonitor.html b/docs/gst/html/gstreamer-GstDeviceMonitor.html
index 948cf09..78bd698 100644
--- a/docs/gst/html/gstreamer-GstDeviceMonitor.html
+++ b/docs/gst/html/gstreamer-GstDeviceMonitor.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstDeviceMonitor</title>
+<title>GstDeviceMonitor: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer-device-probing.html" title="GStreamer Device Discovery and Device Probing">
 <link rel="prev" href="gstreamer-device-probing.html" title="GStreamer Device Discovery and Device Probing">
 <link rel="next" href="gstreamer-GstDevice.html" title="GstDevice">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -248,7 +248,7 @@
 <p> a new device monitor. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -276,7 +276,7 @@
 <p> a <a class="link" href="GstBus.html" title="GstBus"><span class="type">GstBus</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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -317,11 +317,10 @@
 </div>
 <div class="refsect3">
 <a name="id-1.4.2.7.4.7"></a><h4>Returns</h4>
-<p> The id of the new filter or <code class="literal">0</code> if no provider matched the filter's
+<p> The id of the new filter or 0 if no provider matched the filter's
 classes.</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -356,9 +355,8 @@
 <div class="refsect3">
 <a name="id-1.4.2.7.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> of the filter id was valid, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -386,9 +384,8 @@
 <div class="refsect3">
 <a name="id-1.4.2.7.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the device monitoring could be started</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -411,7 +408,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -441,7 +438,7 @@
 <a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstDevice]</span></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -468,7 +465,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -493,7 +490,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -502,7 +499,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstDeviceProvider.html b/docs/gst/html/gstreamer-GstDeviceProvider.html
index 037e927..0cb2eaf 100644
--- a/docs/gst/html/gstreamer-GstDeviceProvider.html
+++ b/docs/gst/html/gstreamer-GstDeviceProvider.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstDeviceProvider</title>
+<title>GstDeviceProvider: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer-device-probing.html" title="GStreamer Device Discovery and Device Probing">
 <link rel="prev" href="gstreamer-GstDevice.html" title="GstDevice">
 <link rel="next" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -233,7 +233,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -279,7 +279,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -317,9 +317,8 @@
 <a name="id-1.4.4.7.5.6"></a><h4>Returns</h4>
 <p> the metadata for <em class="parameter"><code>key</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -375,7 +374,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -439,7 +438,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -472,7 +471,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -505,7 +504,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -533,7 +532,7 @@
 <p> a <a class="link" href="GstBus.html" title="GstBus"><span class="type">GstBus</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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -563,7 +562,7 @@
 <a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstDevice]</span></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -592,7 +591,7 @@
 creating this device provider. no refcounting is needed. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -642,9 +641,8 @@
 <div class="refsect3">
 <a name="id-1.4.4.7.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the registering succeeded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on error</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -676,9 +674,8 @@
 <div class="refsect3">
 <a name="id-1.4.4.7.14.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the device providering could be started</p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -703,7 +700,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -740,7 +737,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -798,7 +795,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -807,7 +804,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstFormat.html b/docs/gst/html/gstreamer-GstFormat.html
index 9dc401a..2b7993e 100644
--- a/docs/gst/html/gstreamer-GstFormat.html
+++ b/docs/gst/html/gstreamer-GstFormat.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstFormat</title>
+<title>GstFormat: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstEvent.html" title="GstEvent">
 <link rel="next" href="GstGhostPad.html" title="GstGhostPad">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -188,7 +188,6 @@
 <a name="id-1.3.25.7.3.6"></a><h4>Returns</h4>
 <p> the quark associated with the format or 0 if the format
 is unknown.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -226,7 +225,6 @@
 <p> A new GstFormat or an already registered format
 with the same nick.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -255,7 +253,6 @@
 <p> The format with <em class="parameter"><code>nick</code></em>
 or GST_FORMAT_UNDEFINED
 if the format was not registered.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -290,7 +287,6 @@
 <div class="refsect3">
 <a name="id-1.3.25.7.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the format is found inside the array</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -469,7 +465,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstGError.html b/docs/gst/html/gstreamer-GstGError.html
index 0de5808..bb66b98 100644
--- a/docs/gst/html/gstreamer-GstGError.html
+++ b/docs/gst/html/gstreamer-GstGError.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstGError</title>
+<title>GstGError: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstElementFactory.html" title="GstElementFactory">
 <link rel="next" href="GstEvent.html" title="GstEvent">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -541,7 +541,7 @@
 <td class="enum_member_description">
 <p>used when the resource can't be opened
                                     due to missing authorization.
-                                    Since: 1.2.4</p>
+                                    (Since 1.2.4)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -725,7 +725,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstInfo.html b/docs/gst/html/gstreamer-GstInfo.html
index 09f4ffb..6431d74 100644
--- a/docs/gst/html/gstreamer-GstInfo.html
+++ b/docs/gst/html/gstreamer-GstInfo.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstInfo</title>
+<title>GstInfo: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="gstreamer-support.html" title="GStreamer Core Support">
 <link rel="prev" href="gstreamer-support.html" title="GStreamer Core Support">
 <link rel="next" href="gstreamer-hierarchy.html" title="Object Hierarchy">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -572,6 +572,20 @@
 </td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstInfo.html#GST-STIME-ARGS:CAPS" title="GST_STIME_ARGS()">GST_STIME_ARGS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-data" title="gst_debug_bin_to_dot_data ()">gst_debug_bin_to_dot_data</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="function_type">
 <span class="returnvalue">void</span>
 </td>
@@ -607,6 +621,10 @@
 <td class="function_name"><a class="link" href="gstreamer-GstInfo.html#GST-LEVEL-DEFAULT:CAPS" title="GST_LEVEL_DEFAULT">GST_LEVEL_DEFAULT</a></td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-GstInfo.html#GST-LEVEL-MAX:CAPS" title="GST_LEVEL_MAX">GST_LEVEL_MAX</a></td>
+</tr>
+<tr>
 <td class="datatype_keyword">enum</td>
 <td class="function_name"><a class="link" href="gstreamer-GstInfo.html#GstDebugColorFlags" title="enum GstDebugColorFlags">GstDebugColorFlags</a></td>
 </tr>
@@ -630,6 +648,10 @@
 <td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="gstreamer-GstInfo.html#GST-TIME-FORMAT:CAPS" title="GST_TIME_FORMAT">GST_TIME_FORMAT</a></td>
 </tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-GstInfo.html#GST-STIME-FORMAT:CAPS" title="GST_STIME_FORMAT">GST_STIME_FORMAT</a></td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -699,7 +721,7 @@
 So don't take addresses of these functions or use other tricks.
 If you must do that for some reason, there is still an option.
 If the debugging
-subsystem was compiled out, <a class="link" href="gstreamer-gstconfig.html#GST-DISABLE-GST-DEBUG:CAPS" title="GST_DISABLE_GST_DEBUG"><span class="type">GST_DISABLE_GST_DEBUG</span></a> is defined in
+subsystem was compiled out, <a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-GST-DEBUG:CAPS" title="GST_DISABLE_GST_DEBUG"><span class="type">GST_DISABLE_GST_DEBUG</span></a> is defined in
 &lt;gst/gst.h&gt;,
 so you can check that before doing your trick.
 Disabling the debugging subsystem will give you a slight (read: unnoticeable)
@@ -996,7 +1018,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.8.6"></a><h4>Returns</h4>
 <p> the string representation of a <span class="type">GstDebugMessage</span>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1010,11 +1031,13 @@
                        <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> line</code></em>,
                        <em class="parameter"><code><a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> *object</code></em>,
                        <em class="parameter"><code><span class="type">GstDebugMessage</span> *message</code></em>,
-                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> unused</code></em>);</pre>
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>The default logging handler used by GStreamer. Logging functions get called
-whenever a macro like GST_DEBUG or similar is used. This function outputs the
-message and additional info to stderr (or the log file specified via the
-GST_DEBUG_FILE environment variable).</p>
+whenever a macro like GST_DEBUG or similar is used. By default this function
+is setup to output the message and additional info to stderr (or the log file
+specified via the GST_DEBUG_FILE environment variable) as received via
+<em class="parameter"><code>user_data</code></em>
+.</p>
 <p>You can add other handlers by using <a class="link" href="gstreamer-GstInfo.html#gst-debug-add-log-function" title="gst_debug_add_log_function ()"><code class="function">gst_debug_add_log_function()</code></a>.
 And you can remove this handler by calling
 gst_debug_remove_log_function(gst_debug_log_default);</p>
@@ -1064,8 +1087,8 @@
 <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>unused</p></td>
-<td class="parameter_description"><p>an unused variable, reserved for some user_data.</p></td>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>the FILE* to log to</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -1096,7 +1119,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.10.6"></a><h4>Returns</h4>
 <p> the name</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1161,7 +1183,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.12.6"></a><h4>Returns</h4>
 <p> How many instances of the function were removed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1188,7 +1209,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.13.6"></a><h4>Returns</h4>
 <p> How many instances of the function were removed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1226,7 +1246,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.15.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if debugging is activated</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1277,7 +1296,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1302,7 +1321,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1313,7 +1332,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.19.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the debug output should be colored.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1326,9 +1344,8 @@
 <a name="id-1.5.3.7.20.5"></a><h4>Returns</h4>
 <p> see <em class="parameter"><code>GstDebugColorMode</code></em>
 for possible values.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1390,7 +1407,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1401,7 +1418,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.23.5"></a><h4>Returns</h4>
 <p> the default threshold level</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1754,7 +1770,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.34.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gstreamer-GstInfo.html#GstDebugLevel" title="enum GstDebugLevel"><span class="type">GstDebugLevel</span></a> that is used as threshold.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1781,7 +1796,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.35.6"></a><h4>Returns</h4>
 <p> the name of the category.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1809,7 +1823,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.36.6"></a><h4>Returns</h4>
 <p> the color of the category.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1836,7 +1849,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.37.6"></a><h4>Returns</h4>
 <p> the description of the category.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1911,7 +1923,6 @@
 <div class="refsect3">
 <a name="id-1.5.3.7.40.7"></a><h4>Returns</h4>
 <p> an integer containing the color definition</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2961,7 +2972,6 @@
 <a name="id-1.5.3.7.75.6"></a><h4>Returns</h4>
 <p> the value passed to <em class="parameter"><code>ptr</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3109,6 +3119,38 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-STIME-ARGS:CAPS"></a><h3>GST_STIME_ARGS()</h3>
+<pre class="programlisting">#define             GST_STIME_ARGS(t)</pre>
+<p>Format <em class="parameter"><code>t</code></em>
+ for the <a class="link" href="gstreamer-GstInfo.html#GST-STIME-FORMAT:CAPS" title="GST_STIME_FORMAT"><span class="type">GST_STIME_FORMAT</span></a> format string. Note: <em class="parameter"><code>t</code></em>
+ will be
+evaluated more than once.</p>
+<div class="refsect3">
+<a name="id-1.5.3.7.81.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>t</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstClock.html#GstClockTimeDiff" title="GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> or <span class="type">gint64</span></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-debug-bin-to-dot-data"></a><h3>gst_debug_bin_to_dot_data ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_debug_bin_to_dot_data (<em class="parameter"><code><a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> *bin</code></em>,
+                           <em class="parameter"><code><a class="link" href="gstreamer-GstInfo.html#GstDebugGraphDetails" title="enum GstDebugGraphDetails"><span class="type">GstDebugGraphDetails</span></a> details</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-debug-bin-to-dot-file"></a><h3>gst_debug_bin_to_dot_file ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_debug_bin_to_dot_file (<em class="parameter"><code><a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> *bin</code></em>,
@@ -3205,10 +3247,10 @@
 <td class="enum_member_name"><p><a name="GST-LEVEL-LOG:CAPS"></a>GST_LEVEL_LOG</p></td>
 <td class="enum_member_description">
 <p>Log messages are messages that are very common but might be
- useful to know. As a rule of thumb a pipeline that is iterating as expected
- should never output anything else but LOG messages. Use this log level to
- log recurring information in chain functions and loop functions, for
- example.</p>
+ useful to know. As a rule of thumb a pipeline that is running as expected
+ should never output anything else but LOG messages whilst processing data.
+ Use this log level to log recurring information in chain functions and
+ loop functions, for example.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3254,11 +3296,23 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-LEVEL-MAX:CAPS"></a><h3>GST_LEVEL_MAX</h3>
+<pre class="programlisting">#define GST_LEVEL_MAX GST_LEVEL_COUNT
+</pre>
+<p>Defines the maximum debugging level to be enabled at compilation time. By default
+it is set such that all debugging statements will be enabled.</p>
+<p>If you wish to compile GStreamer and plugins with only some debugging statements
+(Such as just warnings and errors), you can define it at compile time to the
+maximum debug level. Any debug statements above that level will be compiled out.</p>
+<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="GstDebugColorFlags"></a><h3>enum GstDebugColorFlags</h3>
 <p>These are some terminal style flags you can use when creating your
 debugging categories to make them stand out in debugging output.</p>
 <div class="refsect3">
-<a name="id-1.5.3.8.4.4"></a><h4>Members</h4>
+<a name="id-1.5.3.8.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3400,7 +3454,7 @@
 <div class="refsect2">
 <a name="GstDebugColorMode"></a><h3>enum GstDebugColorMode</h3>
 <div class="refsect3">
-<a name="id-1.5.3.8.5.3"></a><h4>Members</h4>
+<a name="id-1.5.3.8.6.3"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3449,7 +3503,7 @@
 <p>Available details for pipeline graphs produced by <a class="link" href="gstreamer-GstInfo.html#GST-DEBUG-BIN-TO-DOT-FILE:CAPS" title="GST_DEBUG_BIN_TO_DOT_FILE()"><code class="function">GST_DEBUG_BIN_TO_DOT_FILE()</code></a>
 and <a class="link" href="gstreamer-GstInfo.html#GST-DEBUG-BIN-TO-DOT-FILE-WITH-TS:CAPS" title="GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()"><code class="function">GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.5.3.8.7.4"></a><h4>Members</h4>
+<a name="id-1.5.3.8.8.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3474,7 +3528,8 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-DEBUG-GRAPH-SHOW-NON-DEFAULT-PARAMS:CAPS"></a>GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS</p></td>
 <td class="enum_member_description">
-<p>show modified parameters on elements</p>
+<p>show modified parameters on
+                                          elements</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3486,9 +3541,25 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-DEBUG-GRAPH-SHOW-FULL-PARAMS:CAPS"></a>GST_DEBUG_GRAPH_SHOW_FULL_PARAMS</p></td>
+<td class="enum_member_description">
+<p>show full element parameter values even
+                                   if they are very long</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-DEBUG-GRAPH-SHOW-ALL:CAPS"></a>GST_DEBUG_GRAPH_SHOW_ALL</p></td>
 <td class="enum_member_description">
-<p>show all details</p>
+<p>show all the typical details that one might want</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DEBUG-GRAPH-SHOW-VERBOSE:CAPS"></a>GST_DEBUG_GRAPH_SHOW_VERBOSE</p></td>
+<td class="enum_member_description">
+<p>show all details regardless of how large or
+                               verbose they make the resulting output</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3525,15 +3596,37 @@
 
 <p></p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GST-STIME-FORMAT:CAPS"></a><h3>GST_STIME_FORMAT</h3>
+<pre class="programlisting">#define GST_STIME_FORMAT "c%" GST_TIME_FORMAT
+</pre>
+<p>A string that can be used in printf-like format strings to display a signed
+<a class="link" href="GstClock.html#GstClockTimeDiff" title="GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> or <span class="type">gint64</span> value in h:m:s format.  Use <a class="link" href="gstreamer-GstInfo.html#GST-TIME-ARGS:CAPS" title="GST_TIME_ARGS()"><code class="function">GST_TIME_ARGS()</code></a> to
+construct the matching arguments.</p>
+<p>Example:</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting"><span class="function">printf</span><span class="gtkdoc opt">(</span><span class="string">&quot;%&quot;</span> GST_STIME_FORMAT <span class="string">&quot;</span><span class="gtkdoc esc">\n</span><span class="string">&quot;</span><span class="gtkdoc opt">,</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#GST-STIME-ARGS:CAPS">GST_STIME_ARGS</a></span><span class="gtkdoc opt">(</span>ts<span class="gtkdoc opt">));</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<p></p>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-GstInfo.see-also"></a><h2>See Also</h2>
-<p><a class="link" href="gstreamer-gstconfig.html" title="gstconfig"><span class="type">gstreamer-gstconfig</span></a>, <a class="link" href="gstreamer-Gst.html" title="Gst"><span class="type">gstreamer-Gst</span></a> for command line parameters
+<p><a class="link" href="gst-running.html" title="Running GStreamer Applications"><span class="type">gst-running</span></a> for command line parameters
 and environment variables that affect the debugging output.</p>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstIterator.html b/docs/gst/html/gstreamer-GstIterator.html
index 22db4bb..73ed47c 100644
--- a/docs/gst/html/gstreamer-GstIterator.html
+++ b/docs/gst/html/gstreamer-GstIterator.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstIterator</title>
+<title>GstIterator: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstGhostPad.html" title="GstGhostPad">
 <link rel="next" href="GstMemory.html" title="GstMemory">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -253,9 +253,10 @@
 a threadsafe way.</p>
 <p>Various GStreamer objects provide access to their internal structures using
 an iterator.</p>
-<p>In general, whenever calling a GstIterator function results in your code
-receiving a refcounted object, the refcount for that object will have been
-increased.  Your code is responsible for unreffing that object after use.</p>
+<p>Note that if calling a GstIterator function results in your code receiving
+a refcounted object (with, say, <a href="https://developer.gnome.org/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-object"><code class="function">g_value_get_object()</code></a>), the refcount for that
+object will not be increased. Your code is responsible for taking a reference
+if it wants to continue using it later.</p>
 <p>The basic use pattern of an iterator is as follows:</p>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
@@ -283,13 +284,15 @@
 20
 21
 22
-23</pre></td>
+23
+24</pre></td>
         <td class="listing_code"><pre class="programlisting">GstIterator <span class="gtkdoc opt">*</span>it <span class="gtkdoc opt">=</span> <span class="function">_get_iterator</span><span class="gtkdoc opt">(</span>object<span class="gtkdoc opt">);</span>
+GValue item <span class="gtkdoc opt">=</span> G_VALUE_INIT<span class="gtkdoc opt">;</span>
 done <span class="gtkdoc opt">=</span> FALSE<span class="gtkdoc opt">;</span>
 <span class="keyword">while</span> <span class="gtkdoc opt">(!</span>done<span class="gtkdoc opt">) {</span>
   <span class="keyword">switch</span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstIterator.html#gst-iterator-next">gst_iterator_next</a></span> <span class="gtkdoc opt">(</span>it<span class="gtkdoc opt">, &amp;</span>item<span class="gtkdoc opt">)) {</span>
     <span class="keyword">case</span> GST_ITERATOR_OK<span class="gtkdoc opt">:</span>
-      <span class="gtkdoc opt">...</span> use<span class="gtkdoc opt">/</span>change item here<span class="gtkdoc opt">...</span>
+      <span class="gtkdoc opt">...</span>get<span class="gtkdoc opt">/</span>use<span class="gtkdoc opt">/</span>change item here<span class="gtkdoc opt">...</span>
       <span class="function"><a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#g-value-reset">g_value_reset</a></span> <span class="gtkdoc opt">(&amp;</span>item<span class="gtkdoc opt">);</span>
       <span class="keyword">break</span><span class="gtkdoc opt">;</span>
     <span class="keyword">case</span> GST_ITERATOR_RESYNC<span class="gtkdoc opt">:</span>
@@ -384,7 +387,6 @@
 <div class="refsect3">
 <a name="id-1.3.27.7.3.7"></a><h4>Returns</h4>
 <p> the result of the operation.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -422,7 +424,6 @@
 <div class="refsect3">
 <a name="id-1.3.27.7.4.7"></a><h4>Returns</h4>
 <p> the result of the operation.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -546,7 +547,6 @@
 <div class="refsect3">
 <a name="id-1.3.27.7.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the fold should continue, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it should stop.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -663,8 +663,9 @@
  function is called with the lock
 held. The <em class="parameter"><code>free</code></em>
  function is called when the iterator is freed.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.27.7.13.6"></a><h4>Parameters</h4>
+<a name="id-1.3.27.7.13.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -722,10 +723,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.27.7.13.7"></a><h4>Returns</h4>
+<a name="id-1.3.27.7.13.8"></a><h4>Returns</h4>
 <p> the new <a class="link" href="gstreamer-GstIterator.html#GstIterator" title="struct GstIterator"><span class="type">GstIterator</span></a>.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -756,8 +756,9 @@
  will be updated. The iterator implementation
 will notice the update of the cookie and will return <a class="link" href="gstreamer-GstIterator.html#GST-ITERATOR-RESYNC:CAPS"><code class="literal">GST_ITERATOR_RESYNC</code></a> to
 the user of the iterator in the next call to <a class="link" href="gstreamer-GstIterator.html#gst-iterator-next" title="gst_iterator_next ()"><code class="function">gst_iterator_next()</code></a>.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.27.7.14.8"></a><h4>Parameters</h4>
+<a name="id-1.3.27.7.14.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -800,11 +801,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.27.7.14.9"></a><h4>Returns</h4>
+<a name="id-1.3.27.7.14.10"></a><h4>Returns</h4>
 <p> the new <a class="link" href="gstreamer-GstIterator.html#GstIterator" title="struct GstIterator"><span class="type">GstIterator</span></a> for <em class="parameter"><code>list</code></em>
 .</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -843,7 +843,6 @@
 <a name="id-1.3.27.7.15.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="gstreamer-GstIterator.html#GstIterator" title="struct GstIterator"><span class="type">GstIterator</span></a> for <em class="parameter"><code>object</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -871,7 +870,6 @@
 <a name="id-1.3.27.7.16.6"></a><h4>Returns</h4>
 <p> a new copy of <em class="parameter"><code>it</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -948,7 +946,6 @@
 <p> The result of the iteration. Unset <em class="parameter"><code>elem</code></em>
 after usage.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1141,7 +1138,6 @@
 <a name="id-1.3.27.7.22.9"></a><h4>Returns</h4>
 <p> A <a class="link" href="gstreamer-GstIterator.html#GstIteratorResult" title="enum GstIteratorResult"><span class="type">GstIteratorResult</span></a>, as described above.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1187,7 +1183,6 @@
 <p> the result call to <a class="link" href="gstreamer-GstIterator.html#gst-iterator-fold" title="gst_iterator_fold ()"><code class="function">gst_iterator_fold()</code></a>. The iterator will not be
 freed.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1248,7 +1243,6 @@
 <a name="id-1.3.27.7.24.8"></a><h4>Returns</h4>
 <p> Returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the element was found, else <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1363,7 +1357,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstMeta.html b/docs/gst/html/gstreamer-GstMeta.html
index 0b62c58..afb8451 100644
--- a/docs/gst/html/gstreamer-GstMeta.html
+++ b/docs/gst/html/gstreamer-GstMeta.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstMeta</title>
+<title>GstMeta: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstMessage.html" title="GstMessage">
 <link rel="next" href="gstreamer-GstMiniObject.html" title="GstMiniObject">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -435,7 +435,6 @@
 <div class="refsect3">
 <a name="id-1.3.30.7.8.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the transform could be performed</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -497,7 +496,6 @@
 <a name="id-1.3.30.7.10.6"></a><h4>Returns</h4>
 <p> a unique GType for <em class="parameter"><code>api</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -536,7 +534,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>api</code></em>
 was registered with <em class="parameter"><code>tag</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -564,7 +561,7 @@
 <p> an array of tags as strings. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8]</span></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -864,12 +861,11 @@
 <pre class="programlisting">#define GST_META_TAG_MEMORY_STR "memory"
 </pre>
 <p>This metadata stays relevant as long as memory layout is unchanged.</p>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstMiniObject.html b/docs/gst/html/gstreamer-GstMiniObject.html
index bdd6b4e..92c617c 100644
--- a/docs/gst/html/gstreamer-GstMiniObject.html
+++ b/docs/gst/html/gstreamer-GstMiniObject.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstMiniObject</title>
+<title>GstMiniObject: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstMeta.html" title="GstMeta">
 <link rel="next" href="GstObject.html" title="GstObject">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -335,7 +335,6 @@
 <div class="refsect3">
 <a name="id-1.3.31.7.2.6"></a><h4>Returns</h4>
 <p> reference to cloned instance.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -366,7 +365,6 @@
 <div class="refsect3">
 <a name="id-1.3.31.7.3.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the object should be cleaned up.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -671,8 +669,9 @@
                       <em class="parameter"><code><a class="link" href="gstreamer-GstMiniObject.html#GstMiniObjectFreeFunction" title="GstMiniObjectFreeFunction ()"><span class="type">GstMiniObjectFreeFunction</span></a> free_func</code></em>);</pre>
 <p>Initializes a mini-object with the desired type and copy/dispose/free
 functions.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.16.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -727,8 +726,9 @@
 GstMiniObject instances can potentially increase the number
 of memcpy operations in a pipeline, especially if the miniobject
 is a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a>.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.17.6"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.17.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -743,7 +743,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.31.7.17.7"></a><h4>Returns</h4>
+<a name="id-1.3.31.7.17.8"></a><h4>Returns</h4>
 <p> the mini-object. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -755,8 +755,9 @@
 gst_mini_object_unref (<em class="parameter"><code><a class="link" href="gstreamer-GstMiniObject.html#GstMiniObject" title="struct GstMiniObject"><span class="type">GstMiniObject</span></a> *mini_object</code></em>);</pre>
 <p>Decreases the reference count of the mini-object, possibly freeing
 the mini-object.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.18.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -784,8 +785,9 @@
 to the mini object without calling <a class="link" href="gstreamer-GstMiniObject.html#gst-mini-object-ref" title="gst_mini_object_ref ()"><code class="function">gst_mini_object_ref()</code></a>
 (<a class="link" href="gstreamer-GstMiniObject.html#gst-mini-object-ref" title="gst_mini_object_ref ()"><code class="function">gst_mini_object_ref()</code></a> adds a strong reference, that is, forces the object
 to stay alive).</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.19.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -820,8 +822,9 @@
                             <em class="parameter"><code><a class="link" href="gstreamer-GstMiniObject.html#GstMiniObjectNotify" title="GstMiniObjectNotify ()"><span class="type">GstMiniObjectNotify</span></a> notify</code></em>,
                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
 <p>Removes a weak reference callback from a mini object.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.20.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -882,7 +885,6 @@
 <a name="id-1.3.31.7.21.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>object</code></em>
 could be locked.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -950,7 +952,6 @@
 <div class="refsect3">
 <a name="id-1.3.31.7.23.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the object is writable.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -962,8 +963,9 @@
 returned.  This gives away the reference to the original mini object,
 and returns a reference to the new object.</p>
 <p>MT safe</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.24.6"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.24.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -978,7 +980,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.31.7.24.7"></a><h4>Returns</h4>
+<a name="id-1.3.31.7.24.8"></a><h4>Returns</h4>
 <p> a mini-object (possibly the same pointer) that
 is writable. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -991,8 +993,9 @@
 gst_mini_object_copy (<em class="parameter"><code>const <a class="link" href="gstreamer-GstMiniObject.html#GstMiniObject" title="struct GstMiniObject"><span class="type">GstMiniObject</span></a> *mini_object</code></em>);</pre>
 <p>Creates a copy of the mini-object.</p>
 <p>MT safe</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.25.6"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.25.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1007,7 +1010,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.31.7.25.7"></a><h4>Returns</h4>
+<a name="id-1.3.31.7.25.8"></a><h4>Returns</h4>
 <p> the new mini-object. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1190,7 +1193,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>newdata</code></em>
 was different from <em class="parameter"><code>olddata</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1236,7 +1238,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>newdata</code></em>
 was different from <em class="parameter"><code>olddata</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1247,8 +1248,9 @@
 <p>Replace the current <a class="link" href="gstreamer-GstMiniObject.html#GstMiniObject" title="struct GstMiniObject"><span class="type">GstMiniObject</span></a> pointer to by <em class="parameter"><code>olddata</code></em>
  with <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> and
 return the old value.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.31.7.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.31.7.31.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1264,10 +1266,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.31.7.31.6"></a><h4>Returns</h4>
+<a name="id-1.3.31.7.31.7"></a><h4>Returns</h4>
 <p> the <a class="link" href="gstreamer-GstMiniObject.html#GstMiniObject" title="struct GstMiniObject"><span class="type">GstMiniObject</span></a> at <em class="parameter"><code>oldata</code></em>
 </p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1287,11 +1288,7 @@
   GstMiniObjectFreeFunction free;
 };
 </pre>
-<p>Base class for refcounted lightweight objects.
-Ref Func: gst_mini_object_ref
-Unref Func: gst_mini_object_unref
-Set Value Func: g_value_set_boxed
-Get Value Func: g_value_get_boxed</p>
+<p>Base class for refcounted lightweight objects.</p>
 <div class="refsect3">
 <a name="id-1.3.31.8.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1428,7 +1425,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstParamSpec.html b/docs/gst/html/gstreamer-GstParamSpec.html
index acb5827..d2e8b65 100644
--- a/docs/gst/html/gstreamer-GstParamSpec.html
+++ b/docs/gst/html/gstreamer-GstParamSpec.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstParamSpec</title>
+<title>GstParamSpec: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPadTemplate.html" title="GstPadTemplate">
 <link rel="next" href="gstreamer-GstParse.html" title="GstParse">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -289,7 +289,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstParse.html b/docs/gst/html/gstreamer-GstParse.html
index c2f9f92..ccccc5d 100644
--- a/docs/gst/html/gstreamer-GstParse.html
+++ b/docs/gst/html/gstreamer-GstParse.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstParse</title>
+<title>GstParse: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstParamSpec.html" title="GstParamSpec">
 <link rel="next" href="GstPipeline.html" title="GstPipeline">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -164,7 +164,7 @@
 <div class="refsect1">
 <a name="gstreamer-GstParse.description"></a><h2>Description</h2>
 <p>These function allow to create a pipeline based on the syntax used in the
-gst-launch utility (see man-page for syntax documentation).</p>
+gst-launch-1.0 utility (see man-page for syntax documentation).</p>
 <p>Please note that these functions take several measures to create
 somewhat dynamic pipelines. Due to that such pipelines are not always
 reusable (set the state to NULL and back to PLAYING).</p>
@@ -179,7 +179,6 @@
 <div class="refsect3">
 <a name="id-1.3.36.9.2.5"></a><h4>Returns</h4>
 <p> the quark of the parse errors.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -684,7 +683,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstPoll.html b/docs/gst/html/gstreamer-GstPoll.html
index ce16a52..89012df 100644
--- a/docs/gst/html/gstreamer-GstPoll.html
+++ b/docs/gst/html/gstreamer-GstPoll.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstPoll</title>
+<title>GstPoll: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPluginFeature.html" title="GstPluginFeature">
 <link rel="next" href="GstPreset.html" title="GstPreset">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -288,7 +288,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.2.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the file descriptor was successfully added to the set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -325,7 +324,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.3.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the descriptor has data to be read.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -362,7 +360,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.4.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the descriptor can be used for writing.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -406,7 +403,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the descriptor was successfully updated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -450,7 +446,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the descriptor was successfully updated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -487,7 +482,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the connection was closed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -524,7 +518,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the descriptor has an error.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -622,8 +615,9 @@
 is possible to restart or flush a call to <a class="link" href="gstreamer-GstPoll.html#gst-poll-wait" title="gst_poll_wait ()"><code class="function">gst_poll_wait()</code></a> with
 <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> respectively.</p>
 <p>Free-function: gst_poll_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.40.7.12.6"></a><h4>Parameters</h4>
+<a name="id-1.3.40.7.12.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -638,7 +632,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.40.7.12.7"></a><h4>Returns</h4>
+<a name="id-1.3.40.7.12.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> in
 case of an error.  Free with <a class="link" href="gstreamer-GstPoll.html#gst-poll-free" title="gst_poll_free ()"><code class="function">gst_poll_free()</code></a>. </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>
@@ -654,8 +648,9 @@
 <p>A timeout is performed with <a class="link" href="gstreamer-GstPoll.html#gst-poll-wait" title="gst_poll_wait ()"><code class="function">gst_poll_wait()</code></a>. Multiple timeouts can be
 performed from different threads. </p>
 <p>Free-function: gst_poll_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.3.40.7.13.7"></a><h4>Returns</h4>
+<a name="id-1.3.40.7.13.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> in
 case of an error.  Free with <a class="link" href="gstreamer-GstPoll.html#gst-poll-free" title="gst_poll_free ()"><code class="function">gst_poll_free()</code></a>. </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>
@@ -724,7 +719,6 @@
 <div class="refsect3">
 <a name="id-1.3.40.7.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the file descriptor was successfully removed from the set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -789,7 +783,6 @@
 <a name="id-1.3.40.7.17.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the controllability of <em class="parameter"><code>set</code></em>
 could be updated.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -871,7 +864,6 @@
 activity was detected after <em class="parameter"><code>timeout</code></em>
 . If an error occurs, -1 is returned
 and errno is set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -903,7 +895,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success. <a href="https://developer.gnome.org/glib/unstable/glib-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></p>
 </div>
 </div>
 <hr>
@@ -939,7 +930,6 @@
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success. <a href="https://developer.gnome.org/glib/unstable/glib-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></p>
 </div>
 </div>
 </div>
@@ -987,7 +977,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstProtectionMeta.html b/docs/gst/html/gstreamer-GstProtectionMeta.html
new file mode 100644
index 0000000..35f4834
--- /dev/null
+++ b/docs/gst/html/gstreamer-GstProtectionMeta.html
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstProtectionMeta: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstPreset.html" title="GstPreset">
+<link rel="next" href="GstQuery.html" title="GstQuery">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-GstProtectionMeta.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="GstPreset.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="GstQuery.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-GstProtectionMeta"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-GstProtectionMeta.top_of_page"></a>GstProtectionMeta</span></h2>
+<p>GstProtectionMeta — Functions and classes to support encrypted streams.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-GstProtectionMeta.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table 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-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta"><span class="returnvalue">GstProtectionMeta</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-buffer-add-protection-meta" title="gst_buffer_add_protection_meta ()">gst_buffer_add_protection_meta</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-buffer-get-protection-meta" title="gst_buffer_get_protection_meta()">gst_buffer_get_protection_meta</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-protection-select-system" title="gst_protection_select_system ()">gst_protection_select_system</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstProtectionMeta.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta">GstProtectionMeta</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-GstProtectionMeta.html#GST-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS" title="GST_PROTECTION_SYSTEM_ID_CAPS_FIELD">GST_PROTECTION_SYSTEM_ID_CAPS_FIELD</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstProtectionMeta.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/gstprotection.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstProtectionMeta.description"></a><h2>Description</h2>
+<p>The GstProtectionMeta class enables the information needed to decrypt a
+<a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> to be attached to that buffer.</p>
+<p>Typically, a demuxer element would attach GstProtectionMeta objects
+to the buffers that it pushes downstream. The demuxer would parse the
+protection information for a video/audio frame from its input data and use
+this information to populate the <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> <em class="parameter"><code>info</code></em>
+ field,
+which is then encapsulated in a GstProtectionMeta object and attached to
+the corresponding output buffer using the <a class="link" href="gstreamer-GstProtectionMeta.html#gst-buffer-add-protection-meta" title="gst_buffer_add_protection_meta ()"><code class="function">gst_buffer_add_protection_meta()</code></a>
+function. The information in this attached GstProtectionMeta would be
+used by a downstream decrypter element to recover the original unencrypted
+frame.</p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstProtectionMeta.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-buffer-add-protection-meta"></a><h3>gst_buffer_add_protection_meta ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta"><span class="returnvalue">GstProtectionMeta</span></a> *
+gst_buffer_add_protection_meta (<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="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *info</code></em>);</pre>
+<p>Attaches protection metadata to a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.42.7.2.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> holding an encrypted sample, to which protection
+metadata should be added.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> holding cryptographic
+information relating to the sample contained in <em class="parameter"><code>buffer</code></em>
+. This
+function takes ownership of <em class="parameter"><code>info</code></em>
+. </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="id-1.3.42.7.2.6"></a><h4>Returns</h4>
+<p> a pointer to the added <a class="link" href="gstreamer-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta"><span class="type">GstProtectionMeta</span></a> if successful; <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
+unsuccessful. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-get-protection-meta"></a><h3>gst_buffer_get_protection_meta()</h3>
+<pre class="programlisting">#define             gst_buffer_get_protection_meta(b)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-protection-select-system"></a><h3>gst_protection_select_system ()</h3>
+<pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_protection_select_system (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **system_identifiers</code></em>);</pre>
+<p>Iterates the supplied list of UUIDs and checks the GstRegistry for
+an element that supports one of the supplied UUIDs. If more than one
+element matches, the system ID of the highest ranked element is selected.</p>
+<div class="refsect3">
+<a name="id-1.3.42.7.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>system_identifiers</p></td>
+<td class="parameter_description"><p> A null terminated array of strings
+that contains the UUID values of each protection system that is to be
+checked. </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="id-1.3.42.7.4.6"></a><h4>Returns</h4>
+<p> One of the strings from <em class="parameter"><code>system_identifiers</code></em>
+that
+indicates the highest ranked element that implements the protection system
+indicated by that system ID, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no element has been found. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstProtectionMeta.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstProtectionMeta"></a><h3>struct GstProtectionMeta</h3>
+<pre class="programlisting">struct GstProtectionMeta {
+  GstMeta meta;
+
+  GstStructure *info;
+};
+</pre>
+<p>Metadata type that holds information about a sample from a protection-protected
+track, including the information needed to decrypt it (if it is encrypted).</p>
+<div class="refsect3">
+<a name="id-1.3.42.8.2.5"></a><h4>Members</h4>
+<div class="informaltable"><table 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="gstreamer-GstMeta.html#GstMeta" title="struct GstMeta"><span class="type">GstMeta</span></a> <em class="structfield"><code><a name="GstProtectionMeta.meta"></a>meta</code></em>;</p></td>
+<td class="struct_member_description"><p>the parent <a class="link" href="gstreamer-GstMeta.html#GstMeta" title="struct GstMeta"><span class="type">GstMeta</span></a>.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *<em class="structfield"><code><a name="GstProtectionMeta.info"></a>info</code></em>;</p></td>
+<td class="struct_member_description"><p>the cryptographic information needed to decrypt the sample.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS"></a><h3>GST_PROTECTION_SYSTEM_ID_CAPS_FIELD</h3>
+<pre class="programlisting">#define GST_PROTECTION_SYSTEM_ID_CAPS_FIELD "protection-system"
+</pre>
+<p>The field name in a GstCaps that is used to signal the UUID of the protection
+system.</p>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstTocSetter.html b/docs/gst/html/gstreamer-GstTocSetter.html
index f8eff75..7d0b925 100644
--- a/docs/gst/html/gstreamer-GstTocSetter.html
+++ b/docs/gst/html/gstreamer-GstTocSetter.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTocSetter</title>
+<title>GstTocSetter: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstToc.html" title="GstToc">
 <link rel="next" href="gstreamer-GstTypeFind.html" title="GstTypeFind">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -115,7 +115,7 @@
 <p>Set the given TOC on the setter. Previously set TOC will be
 unreffed before setting a new one.</p>
 <div class="refsect3">
-<a name="id-1.3.52.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.53.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -145,7 +145,7 @@
 <p>Return current TOC the setter uses. The TOC should not be
 modified without making it writable first.</p>
 <div class="refsect3">
-<a name="id-1.3.52.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.53.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -160,7 +160,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.52.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.3.53.7.3.6"></a><h4>Returns</h4>
 <p> TOC set, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. Unref with
 <a class="link" href="GstToc.html#gst-toc-unref" title="gst_toc_unref()"><code class="function">gst_toc_unref()</code></a> when no longer needed. </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>
@@ -174,7 +174,7 @@
 <p>Reset the internal TOC. Elements should call this from within the
 state-change handler.</p>
 <div class="refsect3">
-<a name="id-1.3.52.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.53.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -210,7 +210,7 @@
 </pre>
 <p><a class="link" href="gstreamer-GstTocSetter.html#GstTocSetterInterface" title="struct GstTocSetterInterface"><span class="type">GstTocSetterInterface</span></a> interface.</p>
 <div class="refsect3">
-<a name="id-1.3.52.8.3.5"></a><h4>Members</h4>
+<a name="id-1.3.53.8.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -228,7 +228,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstTypeFind.html b/docs/gst/html/gstreamer-GstTypeFind.html
index 30f1ed3..20fdebe 100644
--- a/docs/gst/html/gstreamer-GstTypeFind.html
+++ b/docs/gst/html/gstreamer-GstTypeFind.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstTypeFind</title>
+<title>GstTypeFind: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstTocSetter.html" title="GstTocSetter">
 <link rel="next" href="GstTypeFindFactory.html" title="GstTypeFindFactory">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -127,7 +127,7 @@
                         <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>A function that will be called by typefinding.</p>
 <div class="refsect3">
-<a name="id-1.3.53.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.54.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -163,7 +163,7 @@
 the stream. The returned memory is valid until the typefinding function
 returns and must not be freed.</p>
 <div class="refsect3">
-<a name="id-1.3.53.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.54.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -190,7 +190,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.53.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.3.54.7.3.6"></a><h4>Returns</h4>
 <p> the
 requested data, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if that data is not available. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size][<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>
@@ -208,7 +208,7 @@
 in one call.
 It is up to the caller of the <a class="link" href="gstreamer-GstTypeFind.html#GstTypeFindFunction" title="GstTypeFindFunction ()"><span class="type">GstTypeFindFunction</span></a> to interpret these values.</p>
 <div class="refsect3">
-<a name="id-1.3.53.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.54.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -256,7 +256,7 @@
 passed to the vararg function - this applies particularly to gdouble and
 guint64 arguments).</p>
 <div class="refsect3">
-<a name="id-1.3.53.7.5.7"></a><h4>Parameters</h4>
+<a name="id-1.3.54.7.5.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -302,7 +302,7 @@
 gst_type_find_get_length (<em class="parameter"><code><a class="link" href="gstreamer-GstTypeFind.html#GstTypeFind" title="struct GstTypeFind"><span class="type">GstTypeFind</span></a> *find</code></em>);</pre>
 <p>Get the length of the data stream.</p>
 <div class="refsect3">
-<a name="id-1.3.53.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.54.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -317,9 +317,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.53.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.3.54.7.6.6"></a><h4>Returns</h4>
 <p> The length of the data stream, or 0 if it is not available.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -338,7 +337,7 @@
 registering this function will be available for typefinding.
 This function is typically called during an element's plugin initialization.</p>
 <div class="refsect3">
-<a name="id-1.3.53.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.54.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -395,9 +394,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.53.7.7.6"></a><h4>Returns</h4>
+<a name="id-1.3.54.7.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -423,7 +421,7 @@
 </pre>
 <p>Object that stores typefind callbacks. To use with <a class="link" href="GstTypeFindFactory.html" title="GstTypeFindFactory"><span class="type">GstTypeFindFactory</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.53.8.2.5"></a><h4>Members</h4>
+<a name="id-1.3.54.8.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -461,7 +459,7 @@
 <p>The probability of the typefind function. Higher values have more certainty
 in doing a reliable typefind.</p>
 <div class="refsect3">
-<a name="id-1.3.53.8.3.4"></a><h4>Members</h4>
+<a name="id-1.3.54.8.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -518,7 +516,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstUri.html b/docs/gst/html/gstreamer-GstUri.html
new file mode 100644
index 0000000..8fc9e28
--- /dev/null
+++ b/docs/gst/html/gstreamer-GstUri.html
@@ -0,0 +1,1918 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstUri: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstTypeFindFactory.html" title="GstTypeFindFactory">
+<link rel="next" href="gstreamer-GstUriHandler.html" title="GstUriHandler">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-GstUri.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="GstTypeFindFactory.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-GstUriHandler.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-GstUri"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-GstUri.top_of_page"></a>GstUri</span></h2>
+<p>GstUri — URI parsing and manipulation.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-GstUri.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#GST-URI-CAST:CAPS" title="GST_URI_CAST()">GST_URI_CAST</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#GST-URI-CONST-CAST:CAPS" title="GST_URI_CONST_CAST()">GST_URI_CONST_CAST</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-new" title="gst_uri_new ()">gst_uri_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-new-with-base" title="gst_uri_new_with_base ()">gst_uri_new_with_base</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-from-string" title="gst_uri_from_string ()">gst_uri_from_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-from-string-with-base" title="gst_uri_from_string_with_base ()">gst_uri_from_string_with_base</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-copy" title="gst_uri_copy ()">gst_uri_copy</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-equal" title="gst_uri_equal ()">gst_uri_equal</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-join" title="gst_uri_join ()">gst_uri_join</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-join-strings" title="gst_uri_join_strings ()">gst_uri_join_strings</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-is-writable" title="gst_uri_is_writable ()">gst_uri_is_writable</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-make-writable" title="gst_uri_make_writable ()">gst_uri_make_writable</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-to-string" title="gst_uri_to_string ()">gst_uri_to_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-ref" title="gst_uri_ref ()">gst_uri_ref</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-GstUri.html#gst-uri-unref" title="gst_uri_unref ()">gst_uri_unref</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-is-normalized" title="gst_uri_is_normalized ()">gst_uri_is_normalized</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-normalize" title="gst_uri_normalize ()">gst_uri_normalize</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-scheme" title="gst_uri_get_scheme ()">gst_uri_get_scheme</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-scheme" title="gst_uri_set_scheme ()">gst_uri_set_scheme</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-userinfo" title="gst_uri_get_userinfo ()">gst_uri_get_userinfo</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-userinfo" title="gst_uri_set_userinfo ()">gst_uri_set_userinfo</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-host" title="gst_uri_get_host ()">gst_uri_get_host</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-host" title="gst_uri_set_host ()">gst_uri_set_host</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-port" title="gst_uri_get_port ()">gst_uri_get_port</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-port" title="gst_uri_set_port ()">gst_uri_set_port</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path" title="gst_uri_get_path ()">gst_uri_get_path</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path" title="gst_uri_set_path ()">gst_uri_set_path</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path-string" title="gst_uri_get_path_string ()">gst_uri_get_path_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path-string" title="gst_uri_set_path_string ()">gst_uri_set_path_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path-segments" title="gst_uri_get_path_segments ()">gst_uri_get_path_segments</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path-segments" title="gst_uri_set_path_segments ()">gst_uri_set_path_segments</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-append-path" title="gst_uri_append_path ()">gst_uri_append_path</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-append-path-segment" title="gst_uri_append_path_segment ()">gst_uri_append_path_segment</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-string" title="gst_uri_get_query_string ()">gst_uri_get_query_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-string" title="gst_uri_set_query_string ()">gst_uri_set_query_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="returnvalue">GHashTable</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-table" title="gst_uri_get_query_table ()">gst_uri_get_query_table</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-table" title="gst_uri_set_query_table ()">gst_uri_set_query_table</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-value" title="gst_uri_get_query_value ()">gst_uri_get_query_value</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-value" title="gst_uri_set_query_value ()">gst_uri_set_query_value</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-remove-query-key" title="gst_uri_remove_query_key ()">gst_uri_remove_query_key</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-query-has-key" title="gst_uri_query_has_key ()">gst_uri_query_has_key</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-keys" title="gst_uri_get_query_keys ()">gst_uri_get_query_keys</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-fragment" title="gst_uri_get_fragment ()">gst_uri_get_fragment</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-fragment" title="gst_uri_set_fragment ()">gst_uri_set_fragment</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstUri.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri">GstUri</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstUri.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/gst.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstUri.description"></a><h2>Description</h2>
+<p>A <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object can be used to parse and split a URI string into its
+constituant parts. Two <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> objects can be joined to make a new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a>
+using the algorithm described in RFC3986.</p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstUri.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="GST-URI-CAST:CAPS"></a><h3>GST_URI_CAST()</h3>
+<pre class="programlisting">#define GST_URI_CAST(obj)   ((GstUri *)(obj))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-URI-CONST-CAST:CAPS"></a><h3>GST_URI_CONST_CAST()</h3>
+<pre class="programlisting">#define GST_URI_CONST_CAST(obj) ((const GstUri *)(obj))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-new"></a><h3>gst_uri_new ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_new (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *scheme</code></em>,
+             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *userinfo</code></em>,
+             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *host</code></em>,
+             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> port</code></em>,
+             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *path</code></em>,
+             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query</code></em>,
+             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *fragment</code></em>);</pre>
+<p>Creates a new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object with the given URI parts. The path and query
+strings will be broken down into their elements. All strings should not be
+escaped except where indicated.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>scheme</p></td>
+<td class="parameter_description"><p> The scheme for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>userinfo</p></td>
+<td class="parameter_description"><p> The user-info for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>host</p></td>
+<td class="parameter_description"><p> The host name for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>port</p></td>
+<td class="parameter_description"><p>The port number for the new URI or <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT"><code class="literal">GST_URI_NO_PORT</code></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p> The path for the new URI with '/' separating path
+elements. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query</p></td>
+<td class="parameter_description"><p> The query string for the new URI with '&amp;' separating
+query elements. Elements containing '&amp;' characters
+should encode them as "%26". </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fragment</p></td>
+<td class="parameter_description"><p> The fragment name for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.4.6"></a><h4>Returns</h4>
+<p> A new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-new-with-base"></a><h3>gst_uri_new_with_base ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_new_with_base (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *base</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *scheme</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *userinfo</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *host</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> port</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *path</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *fragment</code></em>);</pre>
+<p>Like <a class="link" href="gstreamer-GstUri.html#gst-uri-new" title="gst_uri_new ()"><code class="function">gst_uri_new()</code></a>, but joins the new URI onto a base URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.5.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>base</p></td>
+<td class="parameter_description"><p> The base URI to join the new URI to. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>scheme</p></td>
+<td class="parameter_description"><p> The scheme for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>userinfo</p></td>
+<td class="parameter_description"><p> The user-info for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>host</p></td>
+<td class="parameter_description"><p> The host name for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>port</p></td>
+<td class="parameter_description"><p>The port number for the new URI or <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT"><code class="literal">GST_URI_NO_PORT</code></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p> The path for the new URI with '/' separating path
+elements. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query</p></td>
+<td class="parameter_description"><p> The query string for the new URI with '&amp;' separating
+query elements. Elements containing '&amp;' characters
+should encode them as "%26". </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fragment</p></td>
+<td class="parameter_description"><p> The fragment name for the new URI. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.5.6"></a><h4>Returns</h4>
+<p> The new URI joined onto <em class="parameter"><code>base</code></em>
+. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-from-string"></a><h3>gst_uri_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_from_string (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
+<p>Parses a URI string into a new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. Will return NULL if the URI
+cannot be parsed.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.6.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>The URI string to parse.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.6.6"></a><h4>Returns</h4>
+<p> A new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object, or NULL. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-from-string-with-base"></a><h3>gst_uri_from_string_with_base ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_from_string_with_base (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *base</code></em>,
+                               <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
+<p>Like <a class="link" href="gstreamer-GstUri.html#gst-uri-from-string" title="gst_uri_from_string ()"><code class="function">gst_uri_from_string()</code></a> but also joins with a base URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>base</p></td>
+<td class="parameter_description"><p> The base URI to join the new URI with. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>The URI string to parse.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.7.6"></a><h4>Returns</h4>
+<p> A new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-copy"></a><h3>gst_uri_copy ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_copy (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Create a new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object with the same data as this <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object.
+If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.8.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.8.6"></a><h4>Returns</h4>
+<p> A new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object which is a copy of this
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-equal"></a><h3>gst_uri_equal ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_equal (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *first</code></em>,
+               <em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *second</code></em>);</pre>
+<p>Compares two <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> objects to see if they represent the same normalized
+URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.9.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>first</p></td>
+<td class="parameter_description"><p>First <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to compare.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>second</p></td>
+<td class="parameter_description"><p>Second <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to compare.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.9.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the normalized versions of the two URI's would be equal.</p>
+</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-uri-join"></a><h3>gst_uri_join ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_join (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *base_uri</code></em>,
+              <em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *ref_uri</code></em>);</pre>
+<p>Join a reference URI onto a base URI using the method from RFC 3986.
+If either URI is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then the other URI will be returned with the ref count
+increased.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.10.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>base_uri</p></td>
+<td class="parameter_description"><p> The base URI to join another to. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ref_uri</p></td>
+<td class="parameter_description"><p> The reference URI to join onto the
+base URI. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.10.6"></a><h4>Returns</h4>
+<p> A <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> which represents the base with the
+reference URI joined on. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-join-strings"></a><h3>gst_uri_join_strings ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_join_strings (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *base_uri</code></em>,
+                      <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *ref_uri</code></em>);</pre>
+<p>This is a convenience function to join two URI strings and return the result.
+The returned string should be <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>'d after use.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.11.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>base_uri</p></td>
+<td class="parameter_description"><p>The percent-encoded base URI.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ref_uri</p></td>
+<td class="parameter_description"><p>The percent-encoded reference URI to join to the <em class="parameter"><code>base_uri</code></em>
+.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.11.6"></a><h4>Returns</h4>
+<p> A string representing the percent-encoded join of
+the two URIs. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-is-writable"></a><h3>gst_uri_is_writable ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_is_writable (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Check if it is safe to write to this <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a>.</p>
+<p>Check if the refcount of <em class="parameter"><code>uri</code></em>
+ is exactly 1, meaning that no other
+reference exists to the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> and that the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> is therefore writable.</p>
+<p>Modification of a <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> should only be done after verifying that it is
+writable.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.12.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object to test.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.12.8"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if it is safe to write to the object.</p>
+</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-uri-make-writable"></a><h3>gst_uri_make_writable ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_make_writable (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Make the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> writable.</p>
+<p>Checks if <em class="parameter"><code>uri</code></em>
+ is writable, and if so the original object is returned. If
+not, then a writable copy is made and returned. This gives away the
+reference to <em class="parameter"><code>uri</code></em>
+ and returns a reference to the new <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a>.
+If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is returned.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.13.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object to make writable. </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="id-1.3.56.7.13.7"></a><h4>Returns</h4>
+<p> A writable version of <em class="parameter"><code>uri</code></em>
+. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-to-string"></a><h3>gst_uri_to_string ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_to_string (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Convert the URI to a string.</p>
+<p>Returns the URI as held in this object as a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* nul-terminated string.
+The caller should <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> the string once they are finished with it.
+The string is put together as described in RFC 3986.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.14.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to convert to a string.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.14.7"></a><h4>Returns</h4>
+<p> The string version of the URI. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-ref"></a><h3>gst_uri_ref ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="returnvalue">GstUri</span></a> *
+gst_uri_ref (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Add a reference to this <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. See <a class="link" href="gstreamer-GstMiniObject.html#gst-mini-object-ref" title="gst_mini_object_ref ()"><code class="function">gst_mini_object_ref()</code></a> for further
+info.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.15.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </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="id-1.3.56.7.15.6"></a><h4>Returns</h4>
+<p> This object with the reference count incremented.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-unref"></a><h3>gst_uri_unref ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_uri_unref (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Decrement the reference count to this <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object.</p>
+<p>If the reference count drops to 0 then finalize this object.</p>
+<p>See <a class="link" href="gstreamer-GstMiniObject.html#gst-mini-object-unref" title="gst_mini_object_unref ()"><code class="function">gst_mini_object_unref()</code></a> for further info.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.16.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </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>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-is-normalized"></a><h3>gst_uri_is_normalized ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_is_normalized (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Tests the <em class="parameter"><code>uri</code></em>
+ to see if it is normalized. A <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <em class="parameter"><code>uri</code></em>
+ is considered to be
+normalized.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.17.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to test to see if it is normalized.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.17.6"></a><h4>Returns</h4>
+<p> TRUE if the URI is normalized or is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+</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-uri-normalize"></a><h3>gst_uri_normalize ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_normalize (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Normalization will remove extra path segments ("." and "..") from the URI. It
+will also convert the scheme and host name to lower case and any
+percent-encoded values to uppercase.</p>
+<p>The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object must be writable. Check with <a class="link" href="gstreamer-GstUri.html#gst-uri-is-writable" title="gst_uri_is_writable ()"><code class="function">gst_uri_is_writable()</code></a> or use
+<a class="link" href="gstreamer-GstUri.html#gst-uri-make-writable" title="gst_uri_make_writable ()"><code class="function">gst_uri_make_writable()</code></a> first.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.18.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to normalize. </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="id-1.3.56.7.18.7"></a><h4>Returns</h4>
+<p> TRUE if the URI was modified.</p>
+</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-uri-get-scheme"></a><h3>gst_uri_get_scheme ()</h3>
+<pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_scheme (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get the scheme name from the URI or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if it doesn't exist.
+If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.19.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.19.6"></a><h4>Returns</h4>
+<p> The scheme from the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-set-scheme"></a><h3>gst_uri_set_scheme ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_scheme (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                    <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *scheme</code></em>);</pre>
+<p>Set or unset the scheme for the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.20.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>scheme</p></td>
+<td class="parameter_description"><p>The new scheme to set or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to unset the scheme.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.20.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the scheme was set/unset successfully.</p>
+</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-uri-get-userinfo"></a><h3>gst_uri_get_userinfo ()</h3>
+<pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_userinfo (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get the userinfo (usually in the form "username:password") from the URI
+or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if it doesn't exist. If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.21.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.21.6"></a><h4>Returns</h4>
+<p> The userinfo from the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+</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-uri-set-userinfo"></a><h3>gst_uri_set_userinfo ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_userinfo (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                      <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *userinfo</code></em>);</pre>
+<p>Set or unset the user information for the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.22.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>userinfo</p></td>
+<td class="parameter_description"><p>The new user-information string to set or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to unset.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.22.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the user information was set/unset successfully.</p>
+</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-uri-get-host"></a><h3>gst_uri_get_host ()</h3>
+<pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_host (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get the host name from the URI or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if it doesn't exist.
+If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.23.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.23.6"></a><h4>Returns</h4>
+<p> The host name from the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+</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-uri-set-host"></a><h3>gst_uri_set_host ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_host (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                  <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *host</code></em>);</pre>
+<p>Set or unset the host for the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.24.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>host</p></td>
+<td class="parameter_description"><p>The new host string to set or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to unset.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.24.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the host was set/unset successfully.</p>
+</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-uri-get-port"></a><h3>gst_uri_get_port ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_uri_get_port (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get the port number from the URI or <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT"><code class="literal">GST_URI_NO_PORT</code></a> if it doesn't exist.
+If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then returns <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT"><code class="literal">GST_URI_NO_PORT</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.25.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.25.6"></a><h4>Returns</h4>
+<p> The port number from the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object or <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT"><code class="literal">GST_URI_NO_PORT</code></a>.</p>
+</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-uri-set-port"></a><h3>gst_uri_set_port ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_port (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                  <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> port</code></em>);</pre>
+<p>Set or unset the port number for the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.26.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>port</p></td>
+<td class="parameter_description"><p>The new port number to set or <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT"><code class="literal">GST_URI_NO_PORT</code></a> to unset.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.26.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the port number was set/unset successfully.</p>
+</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-uri-get-path"></a><h3>gst_uri_get_path ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_path (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Extract the path string from the URI object.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.27.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to get the path from.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.27.6"></a><h4>Returns</h4>
+<p> The path from the URI. Once finished with the
+string should be <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>'d. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-set-path"></a><h3>gst_uri_set_path ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_path (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                  <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *path</code></em>);</pre>
+<p>Sets or unsets the path in the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.28.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p>The new path to set with path segments separated by '/', or use <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
+to unset the path.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.28.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the path was set successfully.</p>
+</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-uri-get-path-string"></a><h3>gst_uri_get_path_string ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_path_string (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Extract the path string from the URI object as a percent encoded URI path.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.29.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to get the path from.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.29.6"></a><h4>Returns</h4>
+<p> The path from the URI. Once finished with the
+string should be <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>'d. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-set-path-string"></a><h3>gst_uri_set_path_string ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_path_string (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                         <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *path</code></em>);</pre>
+<p>Sets or unsets the path in the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.30.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p>The new percent encoded path to set with path segments separated by
+'/', or use <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to unset the path.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.30.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the path was set successfully.</p>
+</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-uri-get-path-segments"></a><h3>gst_uri_get_path_segments ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+gst_uri_get_path_segments (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get a list of path segments from the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.31.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to get the path from. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.31.6"></a><h4>Returns</h4>
+<p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of path segment
+strings or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no path segments are available. Free the list
+when no longer needed with g_list_free_full(list, g_free). </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar*]</span></p>
+</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-uri-set-path-segments"></a><h3>gst_uri_set_path_segments ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_path_segments (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> *path_segments</code></em>);</pre>
+<p>Replace the path segments list in the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.32.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>path_segments</p></td>
+<td class="parameter_description"><p> The new
+path list to set. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar*]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.32.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the path segments were set successfully.</p>
+</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-uri-append-path"></a><h3>gst_uri_append_path ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_append_path (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                     <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *relative_path</code></em>);</pre>
+<p>Append a path onto the end of the path in the URI. The path is not
+normalized, call <a class="link" href="gstreamer-GstUri.html#gst-uri-normalize" title="gst_uri_normalize ()"><code class="function">gst_uri_normalize()</code></a> to normalize the path.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.33.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>relative_path</p></td>
+<td class="parameter_description"><p>Relative path to append to the end of the current path.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.33.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the path was appended successfully.</p>
+</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-uri-append-path-segment"></a><h3>gst_uri_append_path_segment ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_append_path_segment (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *path_segment</code></em>);</pre>
+<p>Append a single path segment onto the end of the URI path.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.34.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>path_segment</p></td>
+<td class="parameter_description"><p>The path segment string to append to the URI path.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.34.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the path was appended successfully.</p>
+</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-uri-get-query-string"></a><h3>gst_uri_get_query_string ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_query_string (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get a percent encoded URI query string from the <em class="parameter"><code>uri</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.35.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to get the query string from. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.35.6"></a><h4>Returns</h4>
+<p> A percent encoded query string. Use <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when
+no longer needed. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-uri-set-query-string"></a><h3>gst_uri_set_query_string ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_query_string (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                          <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query</code></em>);</pre>
+<p>Sets or unsets the query table in the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.36.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query</p></td>
+<td class="parameter_description"><p>The new percent encoded query string to use to populate the query
+table, or use <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to unset the query table.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.36.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query table was set successfully.</p>
+</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-uri-get-query-table"></a><h3>gst_uri_get_query_table ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="returnvalue">GHashTable</span></a> *
+gst_uri_get_query_table (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get the query table from the URI. Keys and values in the table are freed
+with g_free when they are deleted. A value may be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to indicate that
+the key should appear in the query string in the URI, but does not have a
+value. Free the returned <a href="https://developer.gnome.org/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> with <a href="https://developer.gnome.org/glib/unstable/glib-Hash-Tables.html#g-hash-table-unref"><code class="function"><GTKDOCLINK HREF="g-hash-table-unref"><code class="function">g_hash_table_unref()</code></a></code></GTKDOCLINK> when it is
+no longer required. Modifying this hash table will modify the query in the
+URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.37.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to get the query table from. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.37.6"></a><h4>Returns</h4>
+<p> The query hash table
+from the URI. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar* gchar*]</span></p>
+</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-uri-set-query-table"></a><h3>gst_uri_set_query_table ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_query_table (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                         <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *query_table</code></em>);</pre>
+<p>Set the query table to use in the URI. The old table is unreferenced and a
+reference to the new one is used instead. A value if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> for <em class="parameter"><code>query_table</code></em>
+
+will remove the query string from the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.38.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query_table</p></td>
+<td class="parameter_description"><p> The new
+query table to use. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar* gchar*]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.38.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the new table was sucessfully used for the query table.</p>
+</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-uri-get-query-value"></a><h3>gst_uri_get_query_value ()</h3>
+<pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_query_value (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                         <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query_key</code></em>);</pre>
+<p>Get the value associated with the <em class="parameter"><code>query_key</code></em>
+ key. Will return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
+key has no value or if the key does not exist in the URI query table. Because
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is returned for both missing keys and keys with no value, you should
+use <a class="link" href="gstreamer-GstUri.html#gst-uri-query-has-key" title="gst_uri_query_has_key ()"><code class="function">gst_uri_query_has_key()</code></a> to determine if a key is present in the URI
+query.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.39.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to examine. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query_key</p></td>
+<td class="parameter_description"><p>The key to lookup.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.39.6"></a><h4>Returns</h4>
+<p> The value for the given key, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not found.</p>
+</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-uri-set-query-value"></a><h3>gst_uri_set_query_value ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_query_value (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                         <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query_key</code></em>,
+                         <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query_value</code></em>);</pre>
+<p>This inserts or replaces a key in the query table. A <em class="parameter"><code>query_value</code></em>
+ of <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
+indicates that the key has no associated value, but will still be present in
+the query string.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.40.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query_key</p></td>
+<td class="parameter_description"><p> The key for the query 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>query_value</p></td>
+<td class="parameter_description"><p> The value for the key. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.40.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query table was sucessfully updated.</p>
+</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-uri-remove-query-key"></a><h3>gst_uri_remove_query_key ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_remove_query_key (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                          <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query_key</code></em>);</pre>
+<p>Remove an entry from the query table by key.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.41.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query_key</p></td>
+<td class="parameter_description"><p>The key to remove.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.41.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the key existed in the table and was removed.</p>
+</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-uri-query-has-key"></a><h3>gst_uri_query_has_key ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_query_has_key (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *query_key</code></em>);</pre>
+<p>Check if there is a query table entry for the <em class="parameter"><code>query_key</code></em>
+ key.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.42.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to examine. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>query_key</p></td>
+<td class="parameter_description"><p>The key to lookup.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.42.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>query_key</code></em>
+exists in the URI query table.</p>
+</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-uri-get-query-keys"></a><h3>gst_uri_get_query_keys ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+gst_uri_get_query_keys (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get a list of the query keys from the URI.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.43.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to examine. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.43.6"></a><h4>Returns</h4>
+<p> A list of keys from
+the URI query. Free the list with <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#g-list-free"><code class="function">g_list_free()</code></a>. </p>
+<p><span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar*]</span></p>
+</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-uri-get-fragment"></a><h3>gst_uri_get_fragment ()</h3>
+<pre class="programlisting">const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_uri_get_fragment (<em class="parameter"><code>const <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>);</pre>
+<p>Get the fragment name from the URI or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if it doesn't exist.
+If <em class="parameter"><code>uri</code></em>
+ is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.44.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> This <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.44.6"></a><h4>Returns</h4>
+<p> The host name from the <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> object or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+</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-uri-set-fragment"></a><h3>gst_uri_set_fragment ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_uri_set_fragment (<em class="parameter"><code><a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> *uri</code></em>,
+                      <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *fragment</code></em>);</pre>
+<p>Sets the fragment string in the URI. Use a value of <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> in <em class="parameter"><code>fragment</code></em>
+ to
+unset the fragment string.</p>
+<div class="refsect3">
+<a name="id-1.3.56.7.45.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a> to modify. </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 may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fragment</p></td>
+<td class="parameter_description"><p> The fragment string to set. </p></td>
+<td class="parameter_annotations"><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>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.56.7.45.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the fragment was set/unset successfully.</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstUri.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstUri"></a><h3>GstUri</h3>
+<pre class="programlisting">typedef struct _GstUri GstUri;</pre>
+<p>This is a private structure that holds the various parts of a parsed URI.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstUriHandler.html b/docs/gst/html/gstreamer-GstUriHandler.html
index 3db0572..681aeb7 100644
--- a/docs/gst/html/gstreamer-GstUriHandler.html
+++ b/docs/gst/html/gstreamer-GstUriHandler.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstUriHandler</title>
+<title>GstUriHandler: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="GstTypeFindFactory.html" title="GstTypeFindFactory">
+<link rel="prev" href="gstreamer-GstUri.html" title="GstUri">
 <link rel="next" href="gstreamer-GstUtils.html" title="GstUtils">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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="GstTypeFindFactory.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-GstUri.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-GstUtils.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -184,6 +184,10 @@
 <td class="datatype_keyword">enum</td>
 <td class="function_name"><a class="link" href="gstreamer-GstUriHandler.html#GstURIError" title="enum GstURIError">GstURIError</a></td>
 </tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT">GST_URI_NO_PORT</a></td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -200,8 +204,8 @@
 </div>
 <div class="refsect1">
 <a name="gstreamer-GstUriHandler.description"></a><h2>Description</h2>
-<p>The URIHandler is an interface that is implemented by Source and Sink
-<a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> to simplify then handling of URI.</p>
+<p>The <a class="link" href="gstreamer-GstUriHandler.html#GstURIHandler"><span class="type">GstURIHandler</span></a> is an interface that is implemented by Source and Sink
+<a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> to unify handling of URI.</p>
 <p>An application can use the following functions to quickly get an element
 that handles the given URI for reading or writing
 (<a class="link" href="gstreamer-GstUriHandler.html#gst-element-make-from-uri" title="gst_element_make_from_uri ()"><code class="function">gst_element_make_from_uri()</code></a>).</p>
@@ -221,7 +225,7 @@
 </pre>
 <p>Tests if the type direction is valid.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -245,7 +249,7 @@
 must consist of alphanumeric characters, '+', '-' and '.' and must
 start with a alphabetic character. See RFC 3986 Section 3.1.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -260,9 +264,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.4.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.4.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the string is a valid protocol identifier, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -275,7 +278,7 @@
 that a positive return value does not imply that a subsequent call to
 <a class="link" href="gstreamer-GstUriHandler.html#gst-element-make-from-uri" title="gst_element_make_from_uri ()"><code class="function">gst_element_make_from_uri()</code></a> is guaranteed to work.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -297,9 +300,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.5.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -310,7 +312,7 @@
 <p>Tests if the given string is a valid URI identifier. URIs start with a valid
 scheme followed by ":" and maybe a string identifying the location.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -325,9 +327,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.6.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the string is a valid URI</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -339,7 +340,7 @@
 <p>Checks if the protocol of a given valid URI matches <em class="parameter"><code>protocol</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -361,9 +362,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.7.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the protocol matches.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -374,7 +374,7 @@
 <p>Extracts the protocol out of a given valid URI. The returned string must be
 freed using <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -389,9 +389,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.8.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.8.6"></a><h4>Returns</h4>
 <p> The protocol for this URI.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -405,7 +404,7 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.9.6"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -420,7 +419,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.9.7"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.9.7"></a><h4>Returns</h4>
 <p> the location for this URI. Returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
 URI isn't valid. If the URI does not contain a location, an empty
 string is returned. </p>
@@ -436,7 +435,7 @@
 <p>Constructs a URI for a given valid protocol and location.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.10.6"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -458,7 +457,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.10.7"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.10.7"></a><h4>Returns</h4>
 <p> a new string for this URI. Returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
 given URI protocol is not valid, or the given location is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -477,7 +476,7 @@
 will be canonicalised so that it doesn't contain any './' or '../' segments.</p>
 <p>On Windows <span class="type">filename</span> should be in UTF-8 encoding.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.11.6"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -498,6 +497,11 @@
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="id-1.3.57.9.11.7"></a><h4>Returns</h4>
+<p> newly-allocated URI string, or NULL on error. The caller must
+free the URI string with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -509,7 +513,7 @@
                            <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
 <p>Creates an element for handling the given URI.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -541,7 +545,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.12.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.12.6"></a><h4>Returns</h4>
 <p> a new element or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if none could be created. </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>
@@ -553,7 +557,7 @@
 gst_uri_handler_get_uri_type (<em class="parameter"><code><a class="link" href="gstreamer-GstUriHandler.html#GstURIHandler"><span class="type">GstURIHandler</span></a> *handler</code></em>);</pre>
 <p>Gets the type of the given URI handler</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -568,11 +572,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.13.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gstreamer-GstUriHandler.html#GstURIType" title="enum GstURIType"><span class="type">GstURIType</span></a> of the URI handler.
 Returns <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-UNKNOWN:CAPS"><span class="type">GST_URI_UNKNOWN</span></a> if the <em class="parameter"><code>handler</code></em>
 isn't implemented correctly.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -584,7 +587,7 @@
 . This list may not be
 modified.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -599,7 +602,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.14.6"></a><h4>Returns</h4>
 <p> the
 supported protocols.  Returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the <em class="parameter"><code>handler</code></em>
 isn't
@@ -616,7 +619,7 @@
 gst_uri_handler_get_uri (<em class="parameter"><code><a class="link" href="gstreamer-GstUriHandler.html#GstURIHandler"><span class="type">GstURIHandler</span></a> *handler</code></em>);</pre>
 <p>Gets the currently handled URI.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -631,7 +634,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.15.6"></a><h4>Returns</h4>
 <p> the URI currently handled by
 the <em class="parameter"><code>handler</code></em>
 .  Returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there are no URI currently
@@ -649,7 +652,7 @@
                          <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
 <p>Tries to set the URI of the given handler.</p>
 <div class="refsect3">
-<a name="id-1.3.55.9.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.57.9.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -677,9 +680,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.55.9.16.6"></a><h4>Returns</h4>
+<a name="id-1.3.57.9.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the URI was set successfully, else <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -710,7 +712,7 @@
 </pre>
 <p>Any <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> using this interface should implement these methods.</p>
 <div class="refsect3">
-<a name="id-1.3.55.10.3.5"></a><h4>Members</h4>
+<a name="id-1.3.57.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -752,7 +754,7 @@
 <a name="GstURIType"></a><h3>enum GstURIType</h3>
 <p>The different types of URI direction.</p>
 <div class="refsect3">
-<a name="id-1.3.55.10.4.4"></a><h4>Members</h4>
+<a name="id-1.3.57.10.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -790,7 +792,7 @@
 <a name="GstURIError"></a><h3>enum GstURIError</h3>
 <p>Different URI-related errors that can occur.</p>
 <div class="refsect3">
-<a name="id-1.3.55.10.5.4"></a><h4>Members</h4>
+<a name="id-1.3.57.10.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -832,10 +834,16 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GST-URI-NO-PORT:CAPS"></a><h3>GST_URI_NO_PORT</h3>
+<pre class="programlisting">#define GST_URI_NO_PORT 0
+</pre>
+<p>Value for <a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri"><span class="type">GstUri</span></a>.port to indicate no port number.</p>
+</div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstUtils.html b/docs/gst/html/gstreamer-GstUtils.html
index a0bb9d2..1505c9f 100644
--- a/docs/gst/html/gstreamer-GstUtils.html
+++ b/docs/gst/html/gstreamer-GstUtils.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstUtils</title>
+<title>GstUtils: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstUriHandler.html" title="GstUriHandler">
 <link rel="next" href="gstreamer-GstValue.html" title="GstValue">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -597,7 +597,7 @@
 this macro is not to be used with things that return something, use
 the _WITH_DEFAULT version for that</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -632,7 +632,7 @@
 evaluates to <em class="parameter"><code>def_return</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -671,7 +671,7 @@
 </pre>
 <p>Read an 8 bit unsigned integer value from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -693,7 +693,7 @@
 </pre>
 <p>Read a 16 bit unsigned integer value in little endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -715,7 +715,7 @@
 </pre>
 <p>Read a 16 bit unsigned integer value in big endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -737,7 +737,7 @@
 </pre>
 <p>Read a 24 bit unsigned integer value in little endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -759,7 +759,7 @@
 </pre>
 <p>Read a 24 bit unsigned integer value in big endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -781,7 +781,7 @@
 </pre>
 <p>Read a 32 bit unsigned integer value in little endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -803,7 +803,7 @@
 </pre>
 <p>Read a 32 bit unsigned integer value in big endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -825,7 +825,7 @@
 </pre>
 <p>Read a 64 bit unsigned integer value in little endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -847,7 +847,7 @@
 </pre>
 <p>Read a 64 bit unsigned integer value in big endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -869,7 +869,7 @@
 GST_READ_FLOAT_LE (<em class="parameter"><code>const <span class="type">guint8</span> *data</code></em>);</pre>
 <p>Read a 32 bit float value in little endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -884,10 +884,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.13.6"></a><h4>Returns</h4>
 <p> The floating point value read from <em class="parameter"><code>data</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -897,7 +896,7 @@
 GST_READ_FLOAT_BE (<em class="parameter"><code>const <span class="type">guint8</span> *data</code></em>);</pre>
 <p>Read a 32 bit float value in big endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -912,10 +911,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.14.6"></a><h4>Returns</h4>
 <p> The floating point value read from <em class="parameter"><code>data</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -925,7 +923,7 @@
 GST_READ_DOUBLE_LE (<em class="parameter"><code>const <span class="type">guint8</span> *data</code></em>);</pre>
 <p>Read a 64 bit double value in little endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -940,10 +938,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.15.6"></a><h4>Returns</h4>
 <p> The double-precision floating point value read from <em class="parameter"><code>data</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -953,7 +950,7 @@
 GST_READ_DOUBLE_BE (<em class="parameter"><code>const <span class="type">guint8</span> *data</code></em>);</pre>
 <p>Read a 64 bit double value in big endian format from the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -968,10 +965,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.16.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.16.6"></a><h4>Returns</h4>
 <p> The double-precision floating point value read from <em class="parameter"><code>data</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -980,7 +976,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT8(data, num)</pre>
 <p>Store an 8 bit unsigned integer value into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1008,7 +1004,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT16_LE(data, num)</pre>
 <p>Store a 16 bit unsigned integer value in little endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1036,7 +1032,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT16_BE(data, num)</pre>
 <p>Store a 16 bit unsigned integer value in big endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1064,7 +1060,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT24_LE(data, num)</pre>
 <p>Store a 24 bit unsigned integer value in little endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1092,7 +1088,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT24_BE(data, num)</pre>
 <p>Store a 24 bit unsigned integer value in big endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1120,7 +1116,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT32_LE(data, num)</pre>
 <p>Store a 32 bit unsigned integer value in little endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1148,7 +1144,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT32_BE(data, num)</pre>
 <p>Store a 32 bit unsigned integer value in big endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1176,7 +1172,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT64_LE(data, num)</pre>
 <p>Store a 64 bit unsigned integer value in little endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.24.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1204,7 +1200,7 @@
 <pre class="programlisting">#define             GST_WRITE_UINT64_BE(data, num)</pre>
 <p>Store a 64 bit unsigned integer value in big endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.25.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1234,7 +1230,7 @@
                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> num</code></em>);</pre>
 <p>Store a 32 bit float value in little endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.26.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1264,7 +1260,7 @@
                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> num</code></em>);</pre>
 <p>Store a 32 bit float value in big endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1294,7 +1290,7 @@
                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> num</code></em>);</pre>
 <p>Store a 64 bit double value in little endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1324,7 +1320,7 @@
                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> num</code></em>);</pre>
 <p>Store a 64 bit double value in big endian format into the memory buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.29.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1353,7 +1349,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 2.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1375,7 +1371,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 4.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.31.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1397,7 +1393,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 8.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1419,7 +1415,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 16.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1441,7 +1437,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 32.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1463,7 +1459,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 64.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.35.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1485,7 +1481,7 @@
 </pre>
 <p>Rounds an integer value up to the next multiple of 128.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.36.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1499,7 +1495,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1511,7 +1507,7 @@
  MUST be a
 power of two.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1540,7 +1536,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 2.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.38.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1562,7 +1558,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 4.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.39.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.39.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1584,7 +1580,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 8.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.40.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.40.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1606,7 +1602,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 16.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.41.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1628,7 +1624,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 32.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.42.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.42.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1650,7 +1646,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 64.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.43.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1672,7 +1668,7 @@
 </pre>
 <p>Rounds an integer value down to the next multiple of 128.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.44.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1686,7 +1682,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1698,7 +1694,7 @@
  MUST be a
 power of two.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.45.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.45.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1728,7 +1724,7 @@
 <p>Convert 64-bit floating point value (double) from big endian byte order
 into native byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1751,7 +1747,7 @@
 <p>Convert 64-bit floating point value (double) from little endian byte order
 into native byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.47.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1773,7 +1769,7 @@
 GDOUBLE_SWAP_LE_BE (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> in</code></em>);</pre>
 <p>Swap byte order of a 64-bit floating point value (double).</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.48.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1788,10 +1784,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.48.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.48.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>in</code></em>
 byte-swapped.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1802,7 +1797,7 @@
 <p>Convert 64-bit floating point value (double) from native byte order into
 big endian byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.49.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.49.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1825,7 +1820,7 @@
 <p>Convert 64-bit floating point value (double) from native byte order into
 little endian byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.50.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1848,7 +1843,7 @@
 <p>Convert 32-bit floating point value (float) from big endian byte order
 into native byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.51.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.51.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1871,7 +1866,7 @@
 <p>Convert 32-bit floating point value (float) from little endian byte order
 into native byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.52.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1893,7 +1888,7 @@
 GFLOAT_SWAP_LE_BE (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> in</code></em>);</pre>
 <p>Swap byte order of a 32-bit floating point value (float).</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.53.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1908,10 +1903,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.53.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.53.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>in</code></em>
 byte-swapped.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1922,7 +1916,7 @@
 <p>Convert 32-bit floating point value (float) from native byte order into
 big endian byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.54.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.54.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1945,7 +1939,7 @@
 <p>Convert 32-bit floating point value (float) from native byte order into
 little endian byte order.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.55.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1968,7 +1962,7 @@
 <p>Convert <em class="parameter"><code>value</code></em>
  to a gdouble.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.56.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1983,10 +1977,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.56.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.56.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>value</code></em>
 converted to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1997,7 +1990,7 @@
 <p>Convert <em class="parameter"><code>value</code></em>
  to a guint64.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.57.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.57.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2012,10 +2005,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.57.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.57.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>value</code></em>
 converted to a <span class="type">guint64</span>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2026,7 +2018,7 @@
                    <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>);</pre>
 <p>Dumps the memory block into a hex representation. Useful for debugging.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.58.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.58.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2063,7 +2055,7 @@
 <p>This function can potentially be very slow if val and num are both
 greater than G_MAXUINT32.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.59.6"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.59.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2090,7 +2082,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.59.7"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.59.7"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>val</code></em>
 * <em class="parameter"><code>num</code></em>
 / <em class="parameter"><code>denom</code></em>
@@ -2100,7 +2092,6 @@
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-round" title="gst_util_uint64_scale_round ()"><code class="function">gst_util_uint64_scale_round()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-ceil" title="gst_util_uint64_scale_ceil ()"><code class="function">gst_util_uint64_scale_ceil()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int" title="gst_util_uint64_scale_int ()"><code class="function">gst_util_uint64_scale_int()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-round" title="gst_util_uint64_scale_int_round ()"><code class="function">gst_util_uint64_scale_int_round()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-ceil" title="gst_util_uint64_scale_int_ceil ()"><code class="function">gst_util_uint64_scale_int_ceil()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2118,7 +2109,7 @@
 <p>This function can potentially be very slow if val and num are both
 greater than G_MAXUINT32.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.60.6"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.60.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2145,7 +2136,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.60.7"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.60.7"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>val</code></em>
 * <em class="parameter"><code>num</code></em>
 / <em class="parameter"><code>denom</code></em>
@@ -2155,7 +2146,6 @@
 (half-way cases are rounded up).  See also <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale" title="gst_util_uint64_scale ()"><code class="function">gst_util_uint64_scale()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-ceil" title="gst_util_uint64_scale_ceil ()"><code class="function">gst_util_uint64_scale_ceil()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int" title="gst_util_uint64_scale_int ()"><code class="function">gst_util_uint64_scale_int()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-round" title="gst_util_uint64_scale_int_round ()"><code class="function">gst_util_uint64_scale_int_round()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-ceil" title="gst_util_uint64_scale_int_ceil ()"><code class="function">gst_util_uint64_scale_int_ceil()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2173,7 +2163,7 @@
 <p>This function can potentially be very slow if val and num are both
 greater than G_MAXUINT32.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.61.6"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.61.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2200,7 +2190,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.61.7"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.61.7"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>val</code></em>
 * <em class="parameter"><code>num</code></em>
 / <em class="parameter"><code>denom</code></em>
@@ -2210,7 +2200,6 @@
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale" title="gst_util_uint64_scale ()"><code class="function">gst_util_uint64_scale()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-round" title="gst_util_uint64_scale_round ()"><code class="function">gst_util_uint64_scale_round()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int" title="gst_util_uint64_scale_int ()"><code class="function">gst_util_uint64_scale_int()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-round" title="gst_util_uint64_scale_int_round ()"><code class="function">gst_util_uint64_scale_int_round()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-ceil" title="gst_util_uint64_scale_int_ceil ()"><code class="function">gst_util_uint64_scale_int_ceil()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2229,7 +2218,7 @@
 <em class="parameter"><code>denom</code></em>
  must be positive.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.62.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.62.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2256,7 +2245,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.62.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.62.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>val</code></em>
 * <em class="parameter"><code>num</code></em>
 / <em class="parameter"><code>denom</code></em>
@@ -2266,7 +2255,6 @@
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-round" title="gst_util_uint64_scale_int_round ()"><code class="function">gst_util_uint64_scale_int_round()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-ceil" title="gst_util_uint64_scale_int_ceil ()"><code class="function">gst_util_uint64_scale_int_ceil()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale" title="gst_util_uint64_scale ()"><code class="function">gst_util_uint64_scale()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-round" title="gst_util_uint64_scale_round ()"><code class="function">gst_util_uint64_scale_round()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-ceil" title="gst_util_uint64_scale_ceil ()"><code class="function">gst_util_uint64_scale_ceil()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2285,7 +2273,7 @@
 <em class="parameter"><code>denom</code></em>
  must be positive.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.63.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.63.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2312,7 +2300,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.63.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.63.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>val</code></em>
 * <em class="parameter"><code>num</code></em>
 / <em class="parameter"><code>denom</code></em>
@@ -2322,7 +2310,6 @@
 (half-way cases are rounded up).  See also <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int" title="gst_util_uint64_scale_int ()"><code class="function">gst_util_uint64_scale_int()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-ceil" title="gst_util_uint64_scale_int_ceil ()"><code class="function">gst_util_uint64_scale_int_ceil()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale" title="gst_util_uint64_scale ()"><code class="function">gst_util_uint64_scale()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-round" title="gst_util_uint64_scale_round ()"><code class="function">gst_util_uint64_scale_round()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-ceil" title="gst_util_uint64_scale_ceil ()"><code class="function">gst_util_uint64_scale_ceil()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2341,7 +2328,7 @@
 <em class="parameter"><code>denom</code></em>
  must be positive.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.64.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.64.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2368,7 +2355,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.64.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.64.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>val</code></em>
 * <em class="parameter"><code>num</code></em>
 / <em class="parameter"><code>denom</code></em>
@@ -2378,7 +2365,6 @@
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int" title="gst_util_uint64_scale_int ()"><code class="function">gst_util_uint64_scale_int()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-int-round" title="gst_util_uint64_scale_int_round ()"><code class="function">gst_util_uint64_scale_int_round()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale" title="gst_util_uint64_scale ()"><code class="function">gst_util_uint64_scale()</code></a>, <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-round" title="gst_util_uint64_scale_round ()"><code class="function">gst_util_uint64_scale_round()</code></a>,
 <a class="link" href="gstreamer-GstUtils.html#gst-util-uint64-scale-ceil" title="gst_util_uint64_scale_ceil ()"><code class="function">gst_util_uint64_scale_ceil()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2392,7 +2378,7 @@
 and <em class="parameter"><code>b</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.65.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.65.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2414,11 +2400,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.65.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.65.6"></a><h4>Returns</h4>
 <p> Greatest common divisor of <em class="parameter"><code>a</code></em>
 and <em class="parameter"><code>b</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2433,7 +2418,7 @@
 and <em class="parameter"><code>b</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.66.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.66.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2455,11 +2440,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.66.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.66.6"></a><h4>Returns</h4>
 <p> Greatest common divisor of <em class="parameter"><code>a</code></em>
 and <em class="parameter"><code>b</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2471,7 +2455,7 @@
                              <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *dest</code></em>);</pre>
 <p>Transforms a fraction to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.67.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.67.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2508,7 +2492,7 @@
 <p>Transforms a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to a fraction and simplifies
 the result.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.68.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.68.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2554,7 +2538,7 @@
  and <em class="parameter"><code>res_d</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.69.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.69.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2596,9 +2580,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.69.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.69.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on overflow, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2620,7 +2603,7 @@
  and <em class="parameter"><code>res_d</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.70.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.70.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2662,9 +2645,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.70.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.70.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on overflow, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2682,7 +2664,7 @@
  and returns
 -1 if a &lt; b, 0 if a = b and 1 if a &gt; b.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.71.5"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.71.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2714,9 +2696,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.71.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.71.6"></a><h4>Returns</h4>
 <p> -1 if a &lt; b; 0 if a = b; 1 if a &gt; b.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2730,11 +2711,10 @@
 on a segment-done message to be the same as that of the last seek event, to
 indicate that event and the message correspond to the same segment.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.72.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.72.6"></a><h4>Returns</h4>
 <p> A constantly incrementing 32-bit unsigned integer, which might
 overflow back to 0 at some point. Use <a class="link" href="gstreamer-GstUtils.html#gst-util-seqnum-compare" title="gst_util_seqnum_compare ()"><code class="function">gst_util_seqnum_compare()</code></a> to make sure
 you handle wraparound correctly.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2748,7 +2728,7 @@
  - <em class="parameter"><code>s2</code></em>
 ).</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.73.6"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.73.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2770,14 +2750,13 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.73.7"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.73.7"></a><h4>Returns</h4>
 <p> A negative number if <em class="parameter"><code>s1</code></em>
 is before <em class="parameter"><code>s2</code></em>
 , 0 if they are equal, or a
 positive number if <em class="parameter"><code>s1</code></em>
 is after <em class="parameter"><code>s2</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2789,10 +2768,9 @@
 <p>This function is used to generate a new group-id for the
 stream-start event.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.74.6"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.74.6"></a><h4>Returns</h4>
 <p> A constantly incrementing unsigned integer, which might
 overflow back to 0 at some point.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2810,7 +2788,7 @@
  or when <em class="parameter"><code>value</code></em>
  cannot be converted to the type of the property.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.75.6"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.75.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2848,7 +2826,7 @@
 <p>Note that this function is dangerous as it does not return any indication
 if the conversion worked or not.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.76.6"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.76.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2878,9 +2856,8 @@
 <p>Get a timestamp as GstClockTime to be used for interval measurements.
 The timestamp should not be interpreted in any other way.</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.77.5"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.77.5"></a><h4>Returns</h4>
 <p> the timestamp</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2907,7 +2884,7 @@
  has the same type as the array elements.</p>
 <p>The complexity of this search function is O(log (num_elements)).</p>
 <div class="refsect3">
-<a name="id-1.3.56.7.78.7"></a><h4>Parameters</h4>
+<a name="id-1.3.58.7.78.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2956,7 +2933,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.56.7.78.8"></a><h4>Returns</h4>
+<a name="id-1.3.58.7.78.8"></a><h4>Returns</h4>
 <p> The address of the found
 element or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if nothing was found. </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>
@@ -2969,7 +2946,7 @@
 <a name="GstSearchMode"></a><h3>enum GstSearchMode</h3>
 <p>The different search modes.</p>
 <div class="refsect3">
-<a name="id-1.3.56.8.2.4"></a><h4>Members</h4>
+<a name="id-1.3.58.8.2.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3005,7 +2982,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstValue.html b/docs/gst/html/gstreamer-GstValue.html
index a9df496..9be4f9c 100644
--- a/docs/gst/html/gstreamer-GstValue.html
+++ b/docs/gst/html/gstreamer-GstValue.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstValue</title>
+<title>GstValue: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstUtils.html" title="GstUtils">
 <link rel="next" href="gstreamer-GstVersion.html" title="GstVersion">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -137,6 +137,52 @@
 <tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
+<a class="link" href="gstreamer-GstValue.html#GST-VALUE-HOLDS-FLAG-SET:CAPS" title="GST_VALUE_HOLDS_FLAG_SET()">GST_VALUE_HOLDS_FLAG_SET</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET">GST_TYPE_FLAG_SET</a></td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstValue.html#gst-structure-get-flagset" title="gst_structure_get_flagset ()">gst_structure_get_flagset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstValue.html#gst-value-get-flagset-flags" title="gst_value_get_flagset_flags ()">gst_value_get_flagset_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstValue.html#gst-value-get-flagset-mask" title="gst_value_get_flagset_mask ()">gst_value_get_flagset_mask</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-GstValue.html#gst-value-set-flagset" title="gst_value_set_flagset ()">gst_value_set_flagset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-GstValue.html#GST-FLAG-SET-MASK-EXACT:CAPS" title="GST_FLAG_SET_MASK_EXACT">GST_FLAG_SET_MASK_EXACT</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
 <a class="link" href="gstreamer-GstValue.html#GST-VALUE-HOLDS-INT64-RANGE:CAPS" title="GST_VALUE_HOLDS_INT64_RANGE()">GST_VALUE_HOLDS_INT64_RANGE</a><span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -687,6 +733,14 @@
 <a class="link" href="gstreamer-GstValue.html#gst-value-fixate" title="gst_value_fixate ()">gst_value_fixate</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstValue.html#gst-flagset-register" title="gst_flagset_register ()">gst_flagset_register</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -752,7 +806,7 @@
 </div>
 
 <div class="refsect3">
-<a name="id-1.3.57.7.2.6"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -805,7 +859,7 @@
 </div>
 
 <div class="refsect3">
-<a name="id-1.3.57.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -827,7 +881,7 @@
 <p>Can be used together with <a class="link" href="gstreamer-GstValue.html#GST-FOURCC-FORMAT:CAPS" title="GST_FOURCC_FORMAT"><span class="type">GST_FOURCC_FORMAT</span></a> to properly output a
 <span class="type">guint32</span> fourcc value in a <code class="function">printf()</code>-style text message.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -849,7 +903,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-INT-RANGE:CAPS" title="GST_TYPE_INT_RANGE"><span class="type">GST_TYPE_INT_RANGE</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -871,9 +925,8 @@
 </pre>
 <p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents an integer range</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.6.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.6.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstIntRange</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -888,7 +941,7 @@
  and <em class="parameter"><code>end</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -923,7 +976,7 @@
 <p>Gets the minimum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -938,9 +991,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.8.6"></a><h4>Returns</h4>
 <p> the minimum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -951,7 +1003,7 @@
 <p>Gets the maximum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -966,9 +1018,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.9.6"></a><h4>Returns</h4>
 <p> the maximum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -985,7 +1036,7 @@
  and <em class="parameter"><code>step</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1025,7 +1076,7 @@
 <p>Gets the step of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1040,9 +1091,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.11.6"></a><h4>Returns</h4>
 <p> the step of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1052,7 +1102,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-BITMASK:CAPS" title="GST_TYPE_BITMASK"><span class="type">GST_TYPE_BITMASK</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1074,9 +1124,8 @@
 </pre>
 <p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents a 64-bit bitmask.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.13.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.13.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstBitmask (which is not explicitly typed)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1089,7 +1138,7 @@
  to the bitmask specified by <em class="parameter"><code>bitmask</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1119,7 +1168,7 @@
 <p>Gets the bitmask specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.15.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1134,19 +1183,212 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.15.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.15.6"></a><h4>Returns</h4>
 <p> the bitmask.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-VALUE-HOLDS-FLAG-SET:CAPS"></a><h3>GST_VALUE_HOLDS_FLAG_SET()</h3>
+<pre class="programlisting">#define GST_VALUE_HOLDS_FLAG_SET(x)     (G_TYPE_CHECK_VALUE_TYPE ((x), GST_TYPE_FLAG_SET))
+</pre>
+<p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET"><span class="type">GST_TYPE_FLAG_SET</span></a> value.</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.16.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>x</p></td>
+<td class="parameter_description"><p>the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> to check</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-TYPE-FLAG-SET:CAPS"></a><h3>GST_TYPE_FLAG_SET</h3>
+<pre class="programlisting">#define GST_TYPE_FLAG_SET                   (_gst_flagset_type)
+</pre>
+<p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents a 32-bit flag bitfield, with 32-bit
+mask indicating which of the bits in the field are explicitly set.
+Useful for negotiation.</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.17.5"></a><h4>Returns</h4>
+<p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstFlags (which is not explicitly typed)</p>
+</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-structure-get-flagset"></a><h3>gst_structure_get_flagset ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_structure_get_flagset (<em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>,
+                           <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *fieldname</code></em>,
+                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *value_flags</code></em>,
+                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *value_mask</code></em>);</pre>
+<p>Read the GstFlagSet flags and mask out of the structure into the
+provided pointers.</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fieldname</p></td>
+<td class="parameter_description"><p>the name of a field</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>value_flags</p></td>
+<td class="parameter_description"><p> a pointer to a guint for the flags field. </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>value_mask</p></td>
+<td class="parameter_description"><p> a pointer to a guint for the mask field. </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="id-1.3.59.7.18.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the values could be set correctly. If there was no field
+with <em class="parameter"><code>fieldname</code></em>
+or the existing field did not contain a GstFlagSet, this
+function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
+</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-value-get-flagset-flags"></a><h3>gst_value_get_flagset_flags ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_value_get_flagset_flags (<em class="parameter"><code>const <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
+<p>Retrieve the flags field of a GstFlagSet <em class="parameter"><code>value</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.19.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>a GValue initialized to <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET"><span class="type">GST_TYPE_FLAG_SET</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.59.7.19.6"></a><h4>Returns</h4>
+<p> the flags field of the flagset instance.</p>
+</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-value-get-flagset-mask"></a><h3>gst_value_get_flagset_mask ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_value_get_flagset_mask (<em class="parameter"><code>const <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
+<p>Retrieve the mask field of a GstFlagSet <em class="parameter"><code>value</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.20.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>a GValue initialized to <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET"><span class="type">GST_TYPE_FLAG_SET</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.59.7.20.6"></a><h4>Returns</h4>
+<p> the mask field of the flagset instance.</p>
+</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-value-set-flagset"></a><h3>gst_value_set_flagset ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_value_set_flagset (<em class="parameter"><code><a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> flags</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> mask</code></em>);</pre>
+<p>Sets <em class="parameter"><code>value</code></em>
+ to the flags and mask values provided in <em class="parameter"><code>flags</code></em>
+ and <em class="parameter"><code>mask</code></em>
+.
+The <em class="parameter"><code>flags</code></em>
+ value indicates the values of flags, the <em class="parameter"><code>mask</code></em>
+ represents
+which bits in the flag value have been set, and which are "don't care"</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.21.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>a GValue initialized to <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET"><code class="literal">GST_TYPE_FLAG_SET</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>The value of the flags set or unset</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>The mask indicate which flags bits must match for comparisons</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-FLAG-SET-MASK-EXACT:CAPS"></a><h3>GST_FLAG_SET_MASK_EXACT</h3>
+<pre class="programlisting">#define GST_FLAG_SET_MASK_EXACT ((guint)(-1))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-VALUE-HOLDS-INT64-RANGE:CAPS"></a><h3>GST_VALUE_HOLDS_INT64_RANGE()</h3>
 <pre class="programlisting">#define GST_VALUE_HOLDS_INT64_RANGE(x)    ((x) != NULL &amp;&amp; G_VALUE_TYPE(x) == _gst_int64_range_type)
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-INT64-RANGE:CAPS" title="GST_TYPE_INT64_RANGE"><span class="type">GST_TYPE_INT64_RANGE</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.16.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1168,9 +1410,8 @@
 </pre>
 <p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents an <span class="type">gint64</span> range</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.17.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.24.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstInt64Range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1185,7 +1426,7 @@
  and <em class="parameter"><code>end</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1220,7 +1461,7 @@
 <p>Gets the minimum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.19.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1235,9 +1476,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.19.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.26.6"></a><h4>Returns</h4>
 <p> the minimum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1248,7 +1488,7 @@
 <p>Gets the maximum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1263,9 +1503,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.20.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.27.6"></a><h4>Returns</h4>
 <p> the maximum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1282,7 +1521,7 @@
  and <em class="parameter"><code>step</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.21.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1322,7 +1561,7 @@
 <p>Gets the step of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.22.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1337,9 +1576,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.22.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.29.6"></a><h4>Returns</h4>
 <p> the step of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1349,7 +1587,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-DOUBLE-RANGE:CAPS" title="GST_TYPE_DOUBLE_RANGE"><span class="type">GST_TYPE_DOUBLE_RANGE</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.23.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1371,9 +1609,8 @@
 </pre>
 <p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents a floating point range with double precision</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.24.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.31.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstIntRange</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1388,7 +1625,7 @@
  and <em class="parameter"><code>end</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.25.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1423,7 +1660,7 @@
 <p>Gets the minimum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.26.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1438,9 +1675,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.26.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.33.6"></a><h4>Returns</h4>
 <p> the minimum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1451,7 +1687,7 @@
 <p>Gets the maximum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.27.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1466,9 +1702,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.27.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.34.6"></a><h4>Returns</h4>
 <p> the maximum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1478,7 +1713,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-LIST:CAPS" title="GST_TYPE_LIST"><span class="type">GST_TYPE_LIST</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.28.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1504,9 +1739,8 @@
 will be chosen in the end. This means that all values in the list are
 meaningful on their own.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.29.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.36.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstValueList (which is not explicitly typed)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1516,7 +1750,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-ARRAY:CAPS" title="GST_TYPE_ARRAY"><span class="type">GST_TYPE_ARRAY</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.30.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1543,9 +1777,8 @@
 used for example to express channel layouts for multichannel audio where
 each channel needs to be mapped to a position in the room.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.31.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.38.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstArrayList (which is not explicitly typed)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1558,7 +1791,7 @@
  to the GstValueList in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.32.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.39.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1590,7 +1823,7 @@
  to the GstValueList in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.33.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.40.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1611,7 +1844,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1623,7 +1856,7 @@
  to the GstValueList in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.34.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.41.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1659,7 +1892,7 @@
 <em class="parameter"><code>dest</code></em>
  will be initialized to the type <a class="link" href="gstreamer-GstValue.html#GST-TYPE-LIST:CAPS" title="GST_TYPE_LIST"><span class="type">GST_TYPE_LIST</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.35.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.42.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1704,7 +1937,7 @@
 
 were equal).</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.36.6"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.43.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1739,7 +1972,7 @@
 <p>Gets the number of values contained in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.37.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1754,9 +1987,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.37.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.44.6"></a><h4>Returns</h4>
 <p> the number of values</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1770,7 +2002,7 @@
 has the index <em class="parameter"><code>index</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.38.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.45.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1792,7 +2024,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.38.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.45.6"></a><h4>Returns</h4>
 <p> the value at the given index. </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>
@@ -1804,7 +2036,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FRACTION:CAPS" title="GST_TYPE_FRACTION"><span class="type">GST_TYPE_FRACTION</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.39.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1827,9 +2059,8 @@
 <p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents a fraction of an integer numerator over
 an integer denominator</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.40.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.47.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstFraction (which is not explicitly typed)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1846,7 +2077,7 @@
 The fraction gets reduced to the smallest numerator and denominator,
 and if necessary the sign is moved to the numerator.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.41.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1881,7 +2112,7 @@
 <p>Gets the numerator of the fraction specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.42.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.49.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1896,9 +2127,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.42.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.49.6"></a><h4>Returns</h4>
 <p> the numerator of the fraction.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1909,7 +2139,7 @@
 <p>Gets the denominator of the fraction specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.43.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1924,9 +2154,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.43.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.50.6"></a><h4>Returns</h4>
 <p> the denominator of the fraction.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1940,7 +2169,7 @@
 <em class="parameter"><code>product</code></em>
  to the product of the two fractions.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.44.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.51.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1967,9 +2196,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.44.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.51.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> in case of an error (like integer overflow), <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1984,7 +2212,7 @@
  and sets <em class="parameter"><code>dest</code></em>
  to the result.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.45.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2011,9 +2239,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.45.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.52.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> in case of an error (like integer overflow), <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2023,7 +2250,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FRACTION-RANGE:CAPS" title="GST_TYPE_FRACTION_RANGE"><span class="type">GST_TYPE_FRACTION_RANGE</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.46.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2045,9 +2272,8 @@
 </pre>
 <p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> type that represents a GstFraction range</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.47.5"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.54.5"></a><h4>Returns</h4>
 <p> the <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of GstFractionRange</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2062,7 +2288,7 @@
  and <em class="parameter"><code>end</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.48.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2097,7 +2323,7 @@
 <p>Gets the minimum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.49.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2112,9 +2338,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.49.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.56.6"></a><h4>Returns</h4>
 <p> the minimum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2125,7 +2350,7 @@
 <p>Gets the maximum of the range specified by <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.50.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.57.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2140,9 +2365,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.50.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.57.6"></a><h4>Returns</h4>
 <p> the maximum of the range</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2162,7 +2386,7 @@
 /<em class="parameter"><code>denominator_end</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.51.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.58.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2206,7 +2430,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <a class="link" href="GstDateTime.html#GST-TYPE-DATE-TIME:CAPS" title="GST_TYPE_DATE_TIME"><span class="type">GST_TYPE_DATE_TIME</span></a> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.52.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.59.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2228,7 +2452,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <span class="type">GST_TYPE_CAPS</span> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.53.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.60.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2256,7 +2480,7 @@
  will be taken by the <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.54.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.61.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2289,7 +2513,7 @@
 before getting rid of the <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.55.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.62.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2304,7 +2528,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.55.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.62.6"></a><h4>Returns</h4>
 <p> the contents of <em class="parameter"><code>value</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>]</span></p>
@@ -2317,7 +2541,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <span class="type">GST_TYPE_CAPS_FEATURES</span> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.56.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.63.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2342,7 +2566,7 @@
  to <em class="parameter"><code>features</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.57.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.64.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2372,7 +2596,7 @@
 <p>Gets the contents of <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.58.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.65.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2387,7 +2611,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.58.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.65.6"></a><h4>Returns</h4>
 <p> the contents of <em class="parameter"><code>value</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>]</span></p>
@@ -2400,7 +2624,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <span class="type">GST_TYPE_STRUCTURE</span> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.59.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.66.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2425,7 +2649,7 @@
  to <em class="parameter"><code>structure</code></em>
 .  The actual</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.60.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.67.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2455,7 +2679,7 @@
 <p>Gets the contents of <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.61.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.68.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2470,7 +2694,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.61.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.68.6"></a><h4>Returns</h4>
 <p> the contents of <em class="parameter"><code>value</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>]</span></p>
@@ -2483,7 +2707,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <span class="type">GST_TYPE_BUFFER</span> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.62.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.69.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2509,7 +2733,7 @@
 a reference to <em class="parameter"><code>v</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.63.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.70.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2524,7 +2748,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.63.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.70.6"></a><h4>Returns</h4>
 <p> buffer. </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>
@@ -2538,7 +2762,7 @@
  as the value of <em class="parameter"><code>v</code></em>
 .  Caller retains reference to buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.64.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.71.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2569,7 +2793,7 @@
  as the value of <em class="parameter"><code>v</code></em>
 .  Caller gives away reference to buffer.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.65.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.72.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2598,7 +2822,7 @@
 </pre>
 <p>Checks if the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> contains a <span class="type">GST_TYPE_SAMPLE</span> value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.66.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.73.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2624,7 +2848,7 @@
 a reference to <em class="parameter"><code>v</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.67.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.74.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2639,7 +2863,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.67.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.74.6"></a><h4>Returns</h4>
 <p> sample. </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>
@@ -2653,7 +2877,7 @@
  as the value of <em class="parameter"><code>v</code></em>
 .  Caller retains reference to sample.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.68.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.75.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2684,7 +2908,7 @@
  as the value of <em class="parameter"><code>v</code></em>
 .  Caller gives away reference to sample.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.69.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.76.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2722,7 +2946,7 @@
                         <em class="parameter"><code>const <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value2</code></em>);</pre>
 <p>Used together with <a class="link" href="gstreamer-GstValue.html#gst-value-compare" title="gst_value_compare ()"><code class="function">gst_value_compare()</code></a> to compare <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> items.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.71.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.78.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2744,10 +2968,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.71.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.78.6"></a><h4>Returns</h4>
 <p> one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN
 or GST_VALUE_UNORDERED</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2758,7 +2981,7 @@
 <p>Used by <a class="link" href="gstreamer-GstValue.html#gst-value-serialize" title="gst_value_serialize ()"><code class="function">gst_value_serialize()</code></a> to obtain a non-binary form of the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.72.6"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.79.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2773,7 +2996,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.72.7"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.79.7"></a><h4>Returns</h4>
 <p> the string representation of the value. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -2786,7 +3009,7 @@
                             <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *s</code></em>);</pre>
 <p>Used by <a class="link" href="gstreamer-GstValue.html#gst-value-deserialize" title="gst_value_deserialize ()"><code class="function">gst_value_deserialize()</code></a> to parse a non-binary form into the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.73.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.80.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2808,9 +3031,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.73.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.80.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for success</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2823,7 +3045,7 @@
 (which means: multiple possible values, such as data lists or data
 ranges) value.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.74.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.81.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2838,9 +3060,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.74.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.81.6"></a><h4>Returns</h4>
 <p> true if the value is "fixed".</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2851,7 +3072,7 @@
 <p>Registers functions to perform calculations on <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> items of a given
 type. Each type can only be added once.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.75.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.82.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2875,7 +3096,7 @@
 <p>Initialises the target value to be of the same type as source and then copies
 the contents from source to target.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.76.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.83.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2907,7 +3128,7 @@
 getting back this string later on using <a class="link" href="gstreamer-GstValue.html#gst-value-deserialize" title="gst_value_deserialize ()"><code class="function">gst_value_deserialize()</code></a>.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.77.6"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.84.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2922,7 +3143,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.77.7"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.84.7"></a><h4>Returns</h4>
 <p> the serialization for <em class="parameter"><code>value</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if none exists. </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>
@@ -2937,7 +3158,7 @@
 <p>Tries to deserialize a string into the type specified by the given GValue.
 If the operation succeeds, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is returned, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.78.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.85.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2960,9 +3181,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.78.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.85.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2985,7 +3205,7 @@
 , GST_VALUE_LESS_THAN is returned.
 If the values are equal, GST_VALUE_EQUAL is returned.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.79.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.86.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3007,9 +3227,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.79.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.86.6"></a><h4>Returns</h4>
 <p> comparison result</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3022,7 +3241,7 @@
  and <em class="parameter"><code>value2</code></em>
  can be compared.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.80.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.87.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3044,9 +3263,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.80.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.87.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the values can be compared</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3060,7 +3278,7 @@
  and <em class="parameter"><code>value2</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.81.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.88.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3087,9 +3305,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.81.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.88.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the union succeeded.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3108,7 +3325,7 @@
 integer range.  If there is the possibility that two values can
 be unioned, this function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.82.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.89.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3130,10 +3347,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.82.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.89.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if there is a function allowing the two values to
 be unioned.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3149,7 +3365,7 @@
 .
 Note that this means subtraction as in sets, not as in mathematics.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.83.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.90.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3179,9 +3395,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.83.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.90.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the subtraction is not empty</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3194,7 +3409,7 @@
  from <em class="parameter"><code>minuend</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.84.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.91.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3216,9 +3431,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.84.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.91.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a subtraction is possible</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3235,7 +3449,7 @@
 <em class="parameter"><code>dest</code></em>
  is not modified.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.85.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.92.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3264,9 +3478,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.85.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.92.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the intersection is non-empty</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3279,7 +3492,7 @@
 Two values will produce a valid intersection if they have the same
 type.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.86.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.93.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3301,9 +3514,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.86.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.93.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the values can intersect</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3319,7 +3531,7 @@
  is a subset of <em class="parameter"><code>value2</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.3.57.7.87.6"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.94.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3351,7 +3563,7 @@
  to the GstValueArray in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.88.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.95.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3383,7 +3595,7 @@
  to the GstValueArray in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.89.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.96.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3404,7 +3616,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -3414,7 +3626,7 @@
 <p>Gets the number of values contained in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.90.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.97.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3429,9 +3641,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.90.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.97.6"></a><h4>Returns</h4>
 <p> the number of values</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3445,7 +3656,7 @@
 has the index <em class="parameter"><code>index</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.91.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.98.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3467,7 +3678,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.91.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.98.6"></a><h4>Returns</h4>
 <p> the value at the given index. </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>
@@ -3482,7 +3693,7 @@
  to the GstValueArray in <em class="parameter"><code>value</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.92.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.99.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3518,7 +3729,7 @@
 If <em class="parameter"><code>src</code></em>
  is already fixed, this function returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.57.7.93.5"></a><h4>Parameters</h4>
+<a name="id-1.3.59.7.100.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3540,13 +3751,37 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.57.7.93.6"></a><h4>Returns</h4>
+<a name="id-1.3.59.7.100.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>dest</code></em>
 contains a fixated version of <em class="parameter"><code>src</code></em>
 .</p>
-<p></p>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-flagset-register"></a><h3>gst_flagset_register ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>
+gst_flagset_register (<em class="parameter"><code><a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> flags_type</code></em>);</pre>
+<p>Create a new sub-class of <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET"><span class="type">GST_TYPE_FLAG_SET</span></a>
+which will pretty-print the human-readable flags
+when serializing, for easier debugging.</p>
+<div class="refsect3">
+<a name="id-1.3.59.7.101.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>flags_type</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of a <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#G-TYPE-FLAGS:CAPS"><span class="type">G_TYPE_FLAGS</span></a> type.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-GstValue.other_details"></a><h2>Types and Values</h2>
@@ -3605,7 +3840,7 @@
 <p>VTable for the <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> <em class="parameter"><code>type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.57.8.6.5"></a><h4>Members</h4>
+<a name="id-1.3.59.8.6.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -3640,7 +3875,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</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 499a31d..a3099c9 100644
--- a/docs/gst/html/gstreamer-GstVersion.html
+++ b/docs/gst/html/gstreamer-GstVersion.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GstVersion</title>
+<title>GstVersion: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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-GstValue.html" title="GstValue">
 <link rel="next" href="gstreamer-device-probing.html" title="GStreamer Device Discovery and Device Probing">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -91,14 +91,14 @@
 <hr>
 <div class="refsect2">
 <a name="GST-VERSION-MINOR:CAPS"></a><h3>GST_VERSION_MINOR</h3>
-<pre class="programlisting">#define GST_VERSION_MINOR (4)
+<pre class="programlisting">#define GST_VERSION_MINOR (5)
 </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 (5)
+<pre class="programlisting">#define GST_VERSION_MICRO (91)
 </pre>
 <p>The micro version of GStreamer at compile time:</p>
 </div>
@@ -117,7 +117,7 @@
 <p>Check whether a GStreamer version equal to or greater than
 major.minor.micro is present.</p>
 <div class="refsect3">
-<a name="id-1.3.58.6.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.60.6.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -150,7 +150,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-device-probing.html b/docs/gst/html/gstreamer-device-probing.html
index f4021c2..66ce1e0 100644
--- a/docs/gst/html/gstreamer-device-probing.html
+++ b/docs/gst/html/gstreamer-device-probing.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GStreamer Device Discovery and Device Probing</title>
+<title>GStreamer Device Discovery and Device Probing: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="prev" href="gstreamer-GstVersion.html" title="GstVersion">
 <link rel="next" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -38,7 +38,6 @@
 </dl></div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-hierarchy.html b/docs/gst/html/gstreamer-hierarchy.html
index d9b7031..e0adebc 100644
--- a/docs/gst/html/gstreamer-hierarchy.html
+++ b/docs/gst/html/gstreamer-hierarchy.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: Object Hierarchy</title>
+<title>Object Hierarchy: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="prev" href="gstreamer-GstInfo.html" title="GstInfo">
-<link rel="next" href="api-index-full.html" title="API Index">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="ix01.html" title="API Index">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
 <td><a accesskey="p" href="gstreamer-GstInfo.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h1 class="title">
@@ -75,7 +75,6 @@
 </pre>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-support.html b/docs/gst/html/gstreamer-support.html
index 9386278..f72815a 100644
--- a/docs/gst/html/gstreamer-support.html
+++ b/docs/gst/html/gstreamer-support.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GStreamer Core Support</title>
+<title>GStreamer Core Support: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="prev" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">
 <link rel="next" href="gstreamer-GstInfo.html" title="GstInfo">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -31,7 +31,6 @@
     </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer.html b/docs/gst/html/gstreamer.html
index 37bd61d..b0c05fb 100644
--- a/docs/gst/html/gstreamer.html
+++ b/docs/gst/html/gstreamer.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GStreamer Overview</title>
+<title>GStreamer Overview: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="prev" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="next" href="gst-building.html" title="Building GStreamer and GStreamer Applications">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -51,7 +51,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/index.html b/docs/gst/html/index.html
index bdf8b18..9b2b506 100644
--- a/docs/gst/html/index.html
+++ b/docs/gst/html/index.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="next" href="gstreamer.html" title="GStreamer Overview">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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.4.5)
+      for GStreamer Core 1.0 (1.5.91)
       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>
@@ -79,7 +79,7 @@
 <span class="refentrytitle"><a href="GstClock.html">GstClock</a></span><span class="refpurpose"> — Abstract class for global clocks</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-gstconfig.html">gstconfig</a></span><span class="refpurpose"> — Build configuration options</span>
+<span class="refentrytitle"><a href="gstreamer-GstConfig.html">GstConfig</a></span><span class="refpurpose"> — Build configuration options</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstContext.html">GstContext</a></span><span class="refpurpose"> — Lightweight objects to represent element contexts</span>
@@ -164,11 +164,14 @@
 <span class="refentrytitle"><a href="GstPreset.html">GstPreset</a></span><span class="refpurpose"> — helper interface for element presets</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-GstProtectionMeta.html">GstProtectionMeta</a></span><span class="refpurpose"> — Functions and classes to support encrypted streams.</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstQuery.html">GstQuery</a></span><span class="refpurpose"> — Provide functions to create queries, and to set and parse
                     values in them.</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="GstRegistry.html">GstRegistry</a></span><span class="refpurpose">Abstract base class for management of <span class="type">GstPlugin</span> objects</span>
+<span class="refentrytitle"><a href="GstRegistry.html">GstRegistry</a></span><span class="refpurpose"> — Abstract base class for management of <span class="type">GstPlugin</span> objects</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstSegment.html">GstSegment</a></span><span class="refpurpose"> — Structure describing the configured region of interest
@@ -207,6 +210,9 @@
 <span class="refentrytitle"><a href="GstTypeFindFactory.html">GstTypeFindFactory</a></span><span class="refpurpose"> — Information about registered typefind functions</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-GstUri.html">GstUri</a></span><span class="refpurpose"> — URI parsing and manipulation.</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-GstUriHandler.html">GstUriHandler</a></span><span class="refpurpose"> — Interface to ease URI handling in plugins.</span>
 </dt>
 <dt>
@@ -240,13 +246,18 @@
 <span class="refentrytitle"><a href="gstreamer-GstInfo.html">GstInfo</a></span><span class="refpurpose"> — Debugging and logging facilities</span>
 </dt></dl></dd>
 <dt><span class="chapter"><a href="gstreamer-hierarchy.html">Object Hierarchy</a></span></dt>
-<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
-<dt><span class="index"><a href="api-index-deprecated.html">Index of deprecated API</a></span></dt>
+<dt><span class="index"><a href="ix01.html">API Index</a></span></dt>
+<dt><span class="index"><a href="ix02.html">Index of deprecated API</a></span></dt>
+<dt><span class="index"><a href="ix03.html">Index of new API in 1.6</a></span></dt>
+<dt><span class="index"><a href="ix04.html">Index of new API in 1.4</a></span></dt>
+<dt><span class="index"><a href="ix05.html">Index of new API in 1.2.3</a></span></dt>
+<dt><span class="index"><a href="ix06.html">Index of new API in 1.2</a></span></dt>
+<dt><span class="index"><a href="ix07.html">Index of new API in 1.0.10</a></span></dt>
+<dt><span class="index"><a href="ix08.html">Index of new API in 1.0.5</a></span></dt>
 <dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
 </dl></div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/index.sgml b/docs/gst/html/index.sgml
index 2b1b474..ef4e957 100644
--- a/docs/gst/html/index.sgml
+++ b/docs/gst/html/index.sgml
@@ -41,6 +41,8 @@
 <ANCHOR id="GstAllocator-struct" href="gstreamer-1.0/GstAllocator.html#GstAllocator-struct">
 <ANCHOR id="GstAllocatorClass" href="gstreamer-1.0/GstAllocator.html#GstAllocatorClass">
 <ANCHOR id="GstAllocatorFlags" href="gstreamer-1.0/GstAllocator.html#GstAllocatorFlags">
+<ANCHOR id="GST-ALLOCATOR-FLAG-CUSTOM-ALLOC:CAPS" href="gstreamer-1.0/GstAllocator.html#GST-ALLOCATOR-FLAG-CUSTOM-ALLOC:CAPS">
+<ANCHOR id="GST-ALLOCATOR-FLAG-LAST:CAPS" href="gstreamer-1.0/GstAllocator.html#GST-ALLOCATOR-FLAG-LAST:CAPS">
 <ANCHOR id="GstAllocationParams-struct" href="gstreamer-1.0/GstAllocator.html#GstAllocationParams-struct">
 <ANCHOR id="GST-ALLOCATOR-SYSMEM:CAPS" href="gstreamer-1.0/GstAllocator.html#GST-ALLOCATOR-SYSMEM:CAPS">
 <ANCHOR id="GstAllocator.see-also" href="gstreamer-1.0/GstAllocator.html#GstAllocator.see-also">
@@ -85,6 +87,7 @@
 <ANCHOR id="gst-bin-add-many" href="gstreamer-1.0/GstBin.html#gst-bin-add-many">
 <ANCHOR id="gst-bin-remove-many" href="gstreamer-1.0/GstBin.html#gst-bin-remove-many">
 <ANCHOR id="gst-bin-find-unlinked-pad" href="gstreamer-1.0/GstBin.html#gst-bin-find-unlinked-pad">
+<ANCHOR id="gst-bin-sync-children-states" href="gstreamer-1.0/GstBin.html#gst-bin-sync-children-states">
 <ANCHOR id="GST-BIN-IS-NO-RESYNC:CAPS" href="gstreamer-1.0/GstBin.html#GST-BIN-IS-NO-RESYNC:CAPS">
 <ANCHOR id="GST-BIN-CHILDREN:CAPS" href="gstreamer-1.0/GstBin.html#GST-BIN-CHILDREN:CAPS">
 <ANCHOR id="GST-BIN-CHILDREN-COOKIE:CAPS" href="gstreamer-1.0/GstBin.html#GST-BIN-CHILDREN-COOKIE:CAPS">
@@ -93,6 +96,8 @@
 <ANCHOR id="GstBin-struct" href="gstreamer-1.0/GstBin.html#GstBin-struct">
 <ANCHOR id="GstBinClass" href="gstreamer-1.0/GstBin.html#GstBinClass">
 <ANCHOR id="GstBinFlags" href="gstreamer-1.0/GstBin.html#GstBinFlags">
+<ANCHOR id="GST-BIN-FLAG-NO-RESYNC:CAPS" href="gstreamer-1.0/GstBin.html#GST-BIN-FLAG-NO-RESYNC:CAPS">
+<ANCHOR id="GST-BIN-FLAG-LAST:CAPS" href="gstreamer-1.0/GstBin.html#GST-BIN-FLAG-LAST:CAPS">
 <ANCHOR id="GstBin.property-details" href="gstreamer-1.0/GstBin.html#GstBin.property-details">
 <ANCHOR id="GstBin--async-handling" href="gstreamer-1.0/GstBin.html#GstBin--async-handling">
 <ANCHOR id="GstBin--message-forward" href="gstreamer-1.0/GstBin.html#GstBin--message-forward">
@@ -166,6 +171,7 @@
 <ANCHOR id="gst-buffer-copy" href="gstreamer-1.0/GstBuffer.html#gst-buffer-copy">
 <ANCHOR id="gst-buffer-copy-into" href="gstreamer-1.0/GstBuffer.html#gst-buffer-copy-into">
 <ANCHOR id="gst-buffer-copy-region" href="gstreamer-1.0/GstBuffer.html#gst-buffer-copy-region">
+<ANCHOR id="gst-buffer-copy-deep" href="gstreamer-1.0/GstBuffer.html#gst-buffer-copy-deep">
 <ANCHOR id="gst-buffer-is-writable" href="gstreamer-1.0/GstBuffer.html#gst-buffer-is-writable">
 <ANCHOR id="gst-buffer-make-writable" href="gstreamer-1.0/GstBuffer.html#gst-buffer-make-writable">
 <ANCHOR id="gst-buffer-replace" href="gstreamer-1.0/GstBuffer.html#gst-buffer-replace">
@@ -177,10 +183,33 @@
 <ANCHOR id="gst-buffer-iterate-meta" href="gstreamer-1.0/GstBuffer.html#gst-buffer-iterate-meta">
 <ANCHOR id="GstBufferForeachMetaFunc" href="gstreamer-1.0/GstBuffer.html#GstBufferForeachMetaFunc">
 <ANCHOR id="gst-buffer-foreach-meta" href="gstreamer-1.0/GstBuffer.html#gst-buffer-foreach-meta">
+<ANCHOR id="gst-buffer-add-parent-buffer-meta" href="gstreamer-1.0/GstBuffer.html#gst-buffer-add-parent-buffer-meta">
+<ANCHOR id="gst-buffer-get-parent-buffer-meta" href="gstreamer-1.0/GstBuffer.html#gst-buffer-get-parent-buffer-meta">
 <ANCHOR id="GstBuffer.other_details" href="gstreamer-1.0/GstBuffer.html#GstBuffer.other_details">
 <ANCHOR id="GstBuffer-struct" href="gstreamer-1.0/GstBuffer.html#GstBuffer-struct">
 <ANCHOR id="GstBufferFlags" href="gstreamer-1.0/GstBuffer.html#GstBufferFlags">
+<ANCHOR id="GST-BUFFER-FLAG-LIVE:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-LIVE:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-DECODE-ONLY:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-DECODE-ONLY:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-DISCONT:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-DISCONT:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-RESYNC:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-RESYNC:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-CORRUPTED:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-CORRUPTED:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-MARKER:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-MARKER:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-HEADER:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-HEADER:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-GAP:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-GAP:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-DROPPABLE:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-DROPPABLE:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-DELTA-UNIT:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-DELTA-UNIT:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-TAG-MEMORY:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-TAG-MEMORY:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-SYNC-AFTER:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-SYNC-AFTER:CAPS">
+<ANCHOR id="GST-BUFFER-FLAG-LAST:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-FLAG-LAST:CAPS">
 <ANCHOR id="GstBufferCopyFlags" href="gstreamer-1.0/GstBuffer.html#GstBufferCopyFlags">
+<ANCHOR id="GST-BUFFER-COPY-NONE:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-NONE:CAPS">
+<ANCHOR id="GST-BUFFER-COPY-FLAGS:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-FLAGS:CAPS">
+<ANCHOR id="GST-BUFFER-COPY-TIMESTAMPS:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-TIMESTAMPS:CAPS">
+<ANCHOR id="GST-BUFFER-COPY-META:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-META:CAPS">
+<ANCHOR id="GST-BUFFER-COPY-MEMORY:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-MEMORY:CAPS">
+<ANCHOR id="GST-BUFFER-COPY-MERGE:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-MERGE:CAPS">
+<ANCHOR id="GST-BUFFER-COPY-DEEP:CAPS" href="gstreamer-1.0/GstBuffer.html#GST-BUFFER-COPY-DEEP:CAPS">
+<ANCHOR id="GstParentBufferMeta" href="gstreamer-1.0/GstBuffer.html#GstParentBufferMeta">
 <ANCHOR id="GstBuffer.see-also" href="gstreamer-1.0/GstBuffer.html#GstBuffer.see-also">
 <ANCHOR id="GstBufferList" href="gstreamer-1.0/GstBufferList.html">
 <ANCHOR id="GstBufferList.functions" href="gstreamer-1.0/GstBufferList.html#GstBufferList.functions">
@@ -198,6 +227,7 @@
 <ANCHOR id="gst-buffer-list-ref" href="gstreamer-1.0/GstBufferList.html#gst-buffer-list-ref">
 <ANCHOR id="gst-buffer-list-unref" href="gstreamer-1.0/GstBufferList.html#gst-buffer-list-unref">
 <ANCHOR id="gst-buffer-list-copy" href="gstreamer-1.0/GstBufferList.html#gst-buffer-list-copy">
+<ANCHOR id="gst-buffer-list-copy-deep" href="gstreamer-1.0/GstBufferList.html#gst-buffer-list-copy-deep">
 <ANCHOR id="gst-buffer-list-is-writable" href="gstreamer-1.0/GstBufferList.html#gst-buffer-list-is-writable">
 <ANCHOR id="gst-buffer-list-make-writable" href="gstreamer-1.0/GstBufferList.html#gst-buffer-list-make-writable">
 <ANCHOR id="GstBufferListFunc" href="gstreamer-1.0/GstBufferList.html#GstBufferListFunc">
@@ -237,6 +267,11 @@
 <ANCHOR id="GstBufferPool-struct" href="gstreamer-1.0/GstBufferPool.html#GstBufferPool-struct">
 <ANCHOR id="GstBufferPoolClass" href="gstreamer-1.0/GstBufferPool.html#GstBufferPoolClass">
 <ANCHOR id="GstBufferPoolAcquireFlags" href="gstreamer-1.0/GstBufferPool.html#GstBufferPoolAcquireFlags">
+<ANCHOR id="GST-BUFFER-POOL-ACQUIRE-FLAG-NONE:CAPS" href="gstreamer-1.0/GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-NONE:CAPS">
+<ANCHOR id="GST-BUFFER-POOL-ACQUIRE-FLAG-KEY-UNIT:CAPS" href="gstreamer-1.0/GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-KEY-UNIT:CAPS">
+<ANCHOR id="GST-BUFFER-POOL-ACQUIRE-FLAG-DONTWAIT:CAPS" href="gstreamer-1.0/GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-DONTWAIT:CAPS">
+<ANCHOR id="GST-BUFFER-POOL-ACQUIRE-FLAG-DISCONT:CAPS" href="gstreamer-1.0/GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-DISCONT:CAPS">
+<ANCHOR id="GST-BUFFER-POOL-ACQUIRE-FLAG-LAST:CAPS" href="gstreamer-1.0/GstBufferPool.html#GST-BUFFER-POOL-ACQUIRE-FLAG-LAST:CAPS">
 <ANCHOR id="GstBufferPoolAcquireParams" href="gstreamer-1.0/GstBufferPool.html#GstBufferPoolAcquireParams">
 <ANCHOR id="GstBufferPool.see-also" href="gstreamer-1.0/GstBufferPool.html#GstBufferPool.see-also">
 <ANCHOR id="GstBus" href="gstreamer-1.0/GstBus.html">
@@ -264,6 +299,7 @@
 <ANCHOR id="gst-bus-create-watch" href="gstreamer-1.0/GstBus.html#gst-bus-create-watch">
 <ANCHOR id="gst-bus-add-watch-full" href="gstreamer-1.0/GstBus.html#gst-bus-add-watch-full">
 <ANCHOR id="gst-bus-add-watch" href="gstreamer-1.0/GstBus.html#gst-bus-add-watch">
+<ANCHOR id="gst-bus-remove-watch" href="gstreamer-1.0/GstBus.html#gst-bus-remove-watch">
 <ANCHOR id="gst-bus-disable-sync-message-emission" href="gstreamer-1.0/GstBus.html#gst-bus-disable-sync-message-emission">
 <ANCHOR id="gst-bus-enable-sync-message-emission" href="gstreamer-1.0/GstBus.html#gst-bus-enable-sync-message-emission">
 <ANCHOR id="gst-bus-async-signal-func" href="gstreamer-1.0/GstBus.html#gst-bus-async-signal-func">
@@ -274,7 +310,12 @@
 <ANCHOR id="GstBus.other_details" href="gstreamer-1.0/GstBus.html#GstBus.other_details">
 <ANCHOR id="GstBus-struct" href="gstreamer-1.0/GstBus.html#GstBus-struct">
 <ANCHOR id="GstBusFlags" href="gstreamer-1.0/GstBus.html#GstBusFlags">
+<ANCHOR id="GST-BUS-FLUSHING:CAPS" href="gstreamer-1.0/GstBus.html#GST-BUS-FLUSHING:CAPS">
+<ANCHOR id="GST-BUS-FLAG-LAST:CAPS" href="gstreamer-1.0/GstBus.html#GST-BUS-FLAG-LAST:CAPS">
 <ANCHOR id="GstBusSyncReply" href="gstreamer-1.0/GstBus.html#GstBusSyncReply">
+<ANCHOR id="GST-BUS-DROP:CAPS" href="gstreamer-1.0/GstBus.html#GST-BUS-DROP:CAPS">
+<ANCHOR id="GST-BUS-PASS:CAPS" href="gstreamer-1.0/GstBus.html#GST-BUS-PASS:CAPS">
+<ANCHOR id="GST-BUS-ASYNC:CAPS" href="gstreamer-1.0/GstBus.html#GST-BUS-ASYNC:CAPS">
 <ANCHOR id="GstBus.property-details" href="gstreamer-1.0/GstBus.html#GstBus.property-details">
 <ANCHOR id="GstBus--enable-async" href="gstreamer-1.0/GstBus.html#GstBus--enable-async">
 <ANCHOR id="GstBus.signal-details" href="gstreamer-1.0/GstBus.html#GstBus.signal-details">
@@ -296,6 +337,9 @@
 <ANCHOR id="GST-CAPS-FLAG-IS-SET:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-FLAG-IS-SET:CAPS">
 <ANCHOR id="GST-CAPS-FLAG-SET:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-FLAG-SET:CAPS">
 <ANCHOR id="GST-CAPS-FLAG-UNSET:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-FLAG-UNSET:CAPS">
+<ANCHOR id="GstCapsForeachFunc" href="gstreamer-1.0/GstCaps.html#GstCapsForeachFunc">
+<ANCHOR id="GstCapsMapFunc" href="gstreamer-1.0/GstCaps.html#GstCapsMapFunc">
+<ANCHOR id="GstCapsFilterMapFunc" href="gstreamer-1.0/GstCaps.html#GstCapsFilterMapFunc">
 <ANCHOR id="gst-caps-new-empty" href="gstreamer-1.0/GstCaps.html#gst-caps-new-empty">
 <ANCHOR id="gst-caps-new-empty-simple" href="gstreamer-1.0/GstCaps.html#gst-caps-new-empty-simple">
 <ANCHOR id="gst-caps-new-any" href="gstreamer-1.0/GstCaps.html#gst-caps-new-any">
@@ -322,6 +366,9 @@
 <ANCHOR id="gst-caps-set-value" href="gstreamer-1.0/GstCaps.html#gst-caps-set-value">
 <ANCHOR id="gst-caps-set-simple" href="gstreamer-1.0/GstCaps.html#gst-caps-set-simple">
 <ANCHOR id="gst-caps-set-simple-valist" href="gstreamer-1.0/GstCaps.html#gst-caps-set-simple-valist">
+<ANCHOR id="gst-caps-foreach" href="gstreamer-1.0/GstCaps.html#gst-caps-foreach">
+<ANCHOR id="gst-caps-map-in-place" href="gstreamer-1.0/GstCaps.html#gst-caps-map-in-place">
+<ANCHOR id="gst-caps-filter-and-map-in-place" href="gstreamer-1.0/GstCaps.html#gst-caps-filter-and-map-in-place">
 <ANCHOR id="gst-caps-is-any" href="gstreamer-1.0/GstCaps.html#gst-caps-is-any">
 <ANCHOR id="gst-caps-is-empty" href="gstreamer-1.0/GstCaps.html#gst-caps-is-empty">
 <ANCHOR id="gst-caps-is-fixed" href="gstreamer-1.0/GstCaps.html#gst-caps-is-fixed">
@@ -351,7 +398,10 @@
 <ANCHOR id="GstCaps-struct" href="gstreamer-1.0/GstCaps.html#GstCaps-struct">
 <ANCHOR id="GstStaticCaps" href="gstreamer-1.0/GstCaps.html#GstStaticCaps">
 <ANCHOR id="GstCapsIntersectMode" href="gstreamer-1.0/GstCaps.html#GstCapsIntersectMode">
+<ANCHOR id="GST-CAPS-INTERSECT-ZIG-ZAG:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-INTERSECT-ZIG-ZAG:CAPS">
+<ANCHOR id="GST-CAPS-INTERSECT-FIRST:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-INTERSECT-FIRST:CAPS">
 <ANCHOR id="GstCapsFlags" href="gstreamer-1.0/GstCaps.html#GstCapsFlags">
+<ANCHOR id="GST-CAPS-FLAG-ANY:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-FLAG-ANY:CAPS">
 <ANCHOR id="GST-CAPS-ANY:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-ANY:CAPS">
 <ANCHOR id="GST-CAPS-NONE:CAPS" href="gstreamer-1.0/GstCaps.html#GST-CAPS-NONE:CAPS">
 <ANCHOR id="GST-STATIC-CAPS-ANY:CAPS" href="gstreamer-1.0/GstCaps.html#GST-STATIC-CAPS-ANY:CAPS">
@@ -400,9 +450,11 @@
 <ANCHOR id="GstSample.description" href="gstreamer-1.0/GstSample.html#GstSample.description">
 <ANCHOR id="GstSample.functions_details" href="gstreamer-1.0/GstSample.html#GstSample.functions_details">
 <ANCHOR id="gst-sample-get-buffer" href="gstreamer-1.0/GstSample.html#gst-sample-get-buffer">
+<ANCHOR id="gst-sample-get-buffer-list" href="gstreamer-1.0/GstSample.html#gst-sample-get-buffer-list">
 <ANCHOR id="gst-sample-get-caps" href="gstreamer-1.0/GstSample.html#gst-sample-get-caps">
 <ANCHOR id="gst-sample-get-info" href="gstreamer-1.0/GstSample.html#gst-sample-get-info">
 <ANCHOR id="gst-sample-get-segment" href="gstreamer-1.0/GstSample.html#gst-sample-get-segment">
+<ANCHOR id="gst-sample-set-buffer-list" href="gstreamer-1.0/GstSample.html#gst-sample-set-buffer-list">
 <ANCHOR id="gst-sample-new" href="gstreamer-1.0/GstSample.html#gst-sample-new">
 <ANCHOR id="gst-sample-ref" href="gstreamer-1.0/GstSample.html#gst-sample-ref">
 <ANCHOR id="gst-sample-unref" href="gstreamer-1.0/GstSample.html#gst-sample-unref">
@@ -442,6 +494,7 @@
 <ANCHOR id="GstClock" href="gstreamer-1.0/GstClock.html">
 <ANCHOR id="GstClock.functions" href="gstreamer-1.0/GstClock.html#GstClock.functions">
 <ANCHOR id="GstClock.properties" href="gstreamer-1.0/GstClock.html#GstClock.properties">
+<ANCHOR id="GstClock.signals" href="gstreamer-1.0/GstClock.html#GstClock.signals">
 <ANCHOR id="GstClock.other" href="gstreamer-1.0/GstClock.html#GstClock.other">
 <ANCHOR id="GstClock.object-hierarchy" href="gstreamer-1.0/GstClock.html#GstClock.object-hierarchy">
 <ANCHOR id="GstClock.includes" href="gstreamer-1.0/GstClock.html#GstClock.includes">
@@ -449,6 +502,7 @@
 <ANCHOR id="GstClock.functions_details" href="gstreamer-1.0/GstClock.html#GstClock.functions_details">
 <ANCHOR id="GST-CLOCK-TIME-NONE:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-TIME-NONE:CAPS">
 <ANCHOR id="GST-CLOCK-TIME-IS-VALID:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-TIME-IS-VALID:CAPS">
+<ANCHOR id="GST-CLOCK-STIME-IS-VALID:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-STIME-IS-VALID:CAPS">
 <ANCHOR id="GST-SECOND:CAPS" href="gstreamer-1.0/GstClock.html#GST-SECOND:CAPS">
 <ANCHOR id="GST-MSECOND:CAPS" href="gstreamer-1.0/GstClock.html#GST-MSECOND:CAPS">
 <ANCHOR id="GST-USECOND:CAPS" href="gstreamer-1.0/GstClock.html#GST-USECOND:CAPS">
@@ -471,6 +525,7 @@
 <ANCHOR id="GST-CLOCK-ENTRY-STATUS:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-ENTRY-STATUS:CAPS">
 <ANCHOR id="GST-CLOCK-FLAGS:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAGS:CAPS">
 <ANCHOR id="gst-clock-add-observation" href="gstreamer-1.0/GstClock.html#gst-clock-add-observation">
+<ANCHOR id="gst-clock-add-observation-unapplied" href="gstreamer-1.0/GstClock.html#gst-clock-add-observation-unapplied">
 <ANCHOR id="gst-clock-set-master" href="gstreamer-1.0/GstClock.html#gst-clock-set-master">
 <ANCHOR id="gst-clock-get-master" href="gstreamer-1.0/GstClock.html#gst-clock-get-master">
 <ANCHOR id="gst-clock-set-resolution" href="gstreamer-1.0/GstClock.html#gst-clock-set-resolution">
@@ -483,10 +538,14 @@
 <ANCHOR id="gst-clock-get-internal-time" href="gstreamer-1.0/GstClock.html#gst-clock-get-internal-time">
 <ANCHOR id="gst-clock-adjust-unlocked" href="gstreamer-1.0/GstClock.html#gst-clock-adjust-unlocked">
 <ANCHOR id="gst-clock-unadjust-unlocked" href="gstreamer-1.0/GstClock.html#gst-clock-unadjust-unlocked">
+<ANCHOR id="gst-clock-adjust-with-calibration" href="gstreamer-1.0/GstClock.html#gst-clock-adjust-with-calibration">
 <ANCHOR id="gst-clock-get-calibration" href="gstreamer-1.0/GstClock.html#gst-clock-get-calibration">
 <ANCHOR id="gst-clock-set-calibration" href="gstreamer-1.0/GstClock.html#gst-clock-set-calibration">
 <ANCHOR id="gst-clock-get-timeout" href="gstreamer-1.0/GstClock.html#gst-clock-get-timeout">
 <ANCHOR id="gst-clock-set-timeout" href="gstreamer-1.0/GstClock.html#gst-clock-set-timeout">
+<ANCHOR id="gst-clock-wait-for-sync" href="gstreamer-1.0/GstClock.html#gst-clock-wait-for-sync">
+<ANCHOR id="gst-clock-is-synced" href="gstreamer-1.0/GstClock.html#gst-clock-is-synced">
+<ANCHOR id="gst-clock-set-synced" href="gstreamer-1.0/GstClock.html#gst-clock-set-synced">
 <ANCHOR id="gst-clock-id-get-time" href="gstreamer-1.0/GstClock.html#gst-clock-id-get-time">
 <ANCHOR id="gst-clock-id-wait" href="gstreamer-1.0/GstClock.html#gst-clock-id-wait">
 <ANCHOR id="gst-clock-id-wait-async" href="gstreamer-1.0/GstClock.html#gst-clock-id-wait-async">
@@ -500,27 +559,48 @@
 <ANCHOR id="GstClockTime" href="gstreamer-1.0/GstClock.html#GstClockTime">
 <ANCHOR id="GstClockTimeDiff" href="gstreamer-1.0/GstClock.html#GstClockTimeDiff">
 <ANCHOR id="GstClockID" href="gstreamer-1.0/GstClock.html#GstClockID">
+<ANCHOR id="GST-CLOCK-STIME-NONE:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-STIME-NONE:CAPS">
 <ANCHOR id="GstClockEntry" href="gstreamer-1.0/GstClock.html#GstClockEntry">
 <ANCHOR id="GstClockEntryType" href="gstreamer-1.0/GstClock.html#GstClockEntryType">
+<ANCHOR id="GST-CLOCK-ENTRY-SINGLE:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-ENTRY-SINGLE:CAPS">
+<ANCHOR id="GST-CLOCK-ENTRY-PERIODIC:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-ENTRY-PERIODIC:CAPS">
 <ANCHOR id="GstClockReturn" href="gstreamer-1.0/GstClock.html#GstClockReturn">
+<ANCHOR id="GST-CLOCK-OK:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-OK:CAPS">
+<ANCHOR id="GST-CLOCK-EARLY:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-EARLY:CAPS">
+<ANCHOR id="GST-CLOCK-UNSCHEDULED:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-UNSCHEDULED:CAPS">
+<ANCHOR id="GST-CLOCK-BUSY:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-BUSY:CAPS">
+<ANCHOR id="GST-CLOCK-BADTIME:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-BADTIME:CAPS">
+<ANCHOR id="GST-CLOCK-ERROR:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-ERROR:CAPS">
+<ANCHOR id="GST-CLOCK-UNSUPPORTED:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-UNSUPPORTED:CAPS">
+<ANCHOR id="GST-CLOCK-DONE:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-DONE:CAPS">
 <ANCHOR id="GstClockFlags" href="gstreamer-1.0/GstClock.html#GstClockFlags">
+<ANCHOR id="GST-CLOCK-FLAG-CAN-DO-SINGLE-SYNC:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-CAN-DO-SINGLE-SYNC:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-CAN-DO-SINGLE-ASYNC:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-CAN-DO-SINGLE-ASYNC:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-CAN-DO-PERIODIC-SYNC:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-CAN-DO-PERIODIC-SYNC:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-CAN-DO-PERIODIC-ASYNC:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-CAN-DO-PERIODIC-ASYNC:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-CAN-SET-RESOLUTION:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-CAN-SET-RESOLUTION:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-CAN-SET-MASTER:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-CAN-SET-MASTER:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-NEEDS-STARTUP-SYNC:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-NEEDS-STARTUP-SYNC:CAPS">
+<ANCHOR id="GST-CLOCK-FLAG-LAST:CAPS" href="gstreamer-1.0/GstClock.html#GST-CLOCK-FLAG-LAST:CAPS">
 <ANCHOR id="GstClock.property-details" href="gstreamer-1.0/GstClock.html#GstClock.property-details">
 <ANCHOR id="GstClock--timeout" href="gstreamer-1.0/GstClock.html#GstClock--timeout">
 <ANCHOR id="GstClock--window-size" href="gstreamer-1.0/GstClock.html#GstClock--window-size">
 <ANCHOR id="GstClock--window-threshold" href="gstreamer-1.0/GstClock.html#GstClock--window-threshold">
+<ANCHOR id="GstClock.signal-details" href="gstreamer-1.0/GstClock.html#GstClock.signal-details">
+<ANCHOR id="GstClock-synced" href="gstreamer-1.0/GstClock.html#GstClock-synced">
 <ANCHOR id="GstClock.see-also" href="gstreamer-1.0/GstClock.html#GstClock.see-also">
-<ANCHOR id="gstreamer-gstconfig" href="gstreamer-1.0/gstreamer-gstconfig.html">
-<ANCHOR id="gstreamer-gstconfig.other" href="gstreamer-1.0/gstreamer-gstconfig.html#gstreamer-gstconfig.other">
-<ANCHOR id="gstreamer-gstconfig.includes" href="gstreamer-1.0/gstreamer-gstconfig.html#gstreamer-gstconfig.includes">
-<ANCHOR id="gstreamer-gstconfig.description" href="gstreamer-1.0/gstreamer-gstconfig.html#gstreamer-gstconfig.description">
-<ANCHOR id="gstreamer-gstconfig.functions_details" href="gstreamer-1.0/gstreamer-gstconfig.html#gstreamer-gstconfig.functions_details">
-<ANCHOR id="gstreamer-gstconfig.other_details" href="gstreamer-1.0/gstreamer-gstconfig.html#gstreamer-gstconfig.other_details">
-<ANCHOR id="GST-DISABLE-GST-DEBUG:CAPS" href="gstreamer-1.0/gstreamer-gstconfig.html#GST-DISABLE-GST-DEBUG:CAPS">
-<ANCHOR id="GST-DISABLE-PARSE:CAPS" href="gstreamer-1.0/gstreamer-gstconfig.html#GST-DISABLE-PARSE:CAPS">
-<ANCHOR id="GST-DISABLE-TRACE:CAPS" href="gstreamer-1.0/gstreamer-gstconfig.html#GST-DISABLE-TRACE:CAPS">
-<ANCHOR id="GST-DISABLE-ALLOC-TRACE:CAPS" href="gstreamer-1.0/gstreamer-gstconfig.html#GST-DISABLE-ALLOC-TRACE:CAPS">
-<ANCHOR id="GST-DISABLE-REGISTRY:CAPS" href="gstreamer-1.0/gstreamer-gstconfig.html#GST-DISABLE-REGISTRY:CAPS">
-<ANCHOR id="GST-DISABLE-PLUGIN:CAPS" href="gstreamer-1.0/gstreamer-gstconfig.html#GST-DISABLE-PLUGIN:CAPS">
+<ANCHOR id="gstreamer-GstConfig" href="gstreamer-1.0/gstreamer-GstConfig.html">
+<ANCHOR id="gstreamer-GstConfig.other" href="gstreamer-1.0/gstreamer-GstConfig.html#gstreamer-GstConfig.other">
+<ANCHOR id="gstreamer-GstConfig.includes" href="gstreamer-1.0/gstreamer-GstConfig.html#gstreamer-GstConfig.includes">
+<ANCHOR id="gstreamer-GstConfig.description" href="gstreamer-1.0/gstreamer-GstConfig.html#gstreamer-GstConfig.description">
+<ANCHOR id="gstreamer-GstConfig.functions_details" href="gstreamer-1.0/gstreamer-GstConfig.html#gstreamer-GstConfig.functions_details">
+<ANCHOR id="gstreamer-GstConfig.other_details" href="gstreamer-1.0/gstreamer-GstConfig.html#gstreamer-GstConfig.other_details">
+<ANCHOR id="GST-DISABLE-GST-DEBUG:CAPS" href="gstreamer-1.0/gstreamer-GstConfig.html#GST-DISABLE-GST-DEBUG:CAPS">
+<ANCHOR id="GST-DISABLE-PARSE:CAPS" href="gstreamer-1.0/gstreamer-GstConfig.html#GST-DISABLE-PARSE:CAPS">
+<ANCHOR id="GST-DISABLE-TRACE:CAPS" href="gstreamer-1.0/gstreamer-GstConfig.html#GST-DISABLE-TRACE:CAPS">
+<ANCHOR id="GST-DISABLE-ALLOC-TRACE:CAPS" href="gstreamer-1.0/gstreamer-GstConfig.html#GST-DISABLE-ALLOC-TRACE:CAPS">
+<ANCHOR id="GST-DISABLE-REGISTRY:CAPS" href="gstreamer-1.0/gstreamer-GstConfig.html#GST-DISABLE-REGISTRY:CAPS">
+<ANCHOR id="GST-DISABLE-PLUGIN:CAPS" href="gstreamer-1.0/gstreamer-GstConfig.html#GST-DISABLE-PLUGIN:CAPS">
 <ANCHOR id="GstContext" href="gstreamer-1.0/GstContext.html">
 <ANCHOR id="GstContext.functions" href="gstreamer-1.0/GstContext.html#GstContext.functions">
 <ANCHOR id="GstContext.other" href="gstreamer-1.0/GstContext.html#GstContext.other">
@@ -716,9 +796,31 @@
 <ANCHOR id="GstElement-struct" href="gstreamer-1.0/GstElement.html#GstElement-struct">
 <ANCHOR id="GstElementClass" href="gstreamer-1.0/GstElement.html#GstElementClass">
 <ANCHOR id="GstElementFlags" href="gstreamer-1.0/GstElement.html#GstElementFlags">
+<ANCHOR id="GST-ELEMENT-FLAG-LOCKED-STATE:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-LOCKED-STATE:CAPS">
+<ANCHOR id="GST-ELEMENT-FLAG-SINK:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-SINK:CAPS">
+<ANCHOR id="GST-ELEMENT-FLAG-SOURCE:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-SOURCE:CAPS">
+<ANCHOR id="GST-ELEMENT-FLAG-PROVIDE-CLOCK:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-PROVIDE-CLOCK:CAPS">
+<ANCHOR id="GST-ELEMENT-FLAG-REQUIRE-CLOCK:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-REQUIRE-CLOCK:CAPS">
+<ANCHOR id="GST-ELEMENT-FLAG-INDEXABLE:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-INDEXABLE:CAPS">
+<ANCHOR id="GST-ELEMENT-FLAG-LAST:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-FLAG-LAST:CAPS">
 <ANCHOR id="GstState" href="gstreamer-1.0/GstElement.html#GstState">
+<ANCHOR id="GST-STATE-VOID-PENDING:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-VOID-PENDING:CAPS">
+<ANCHOR id="GST-STATE-NULL:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-NULL:CAPS">
+<ANCHOR id="GST-STATE-READY:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-READY:CAPS">
+<ANCHOR id="GST-STATE-PAUSED:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-PAUSED:CAPS">
+<ANCHOR id="GST-STATE-PLAYING:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-PLAYING:CAPS">
 <ANCHOR id="GstStateChange" href="gstreamer-1.0/GstElement.html#GstStateChange">
+<ANCHOR id="GST-STATE-CHANGE-NULL-TO-READY:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-NULL-TO-READY:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-READY-TO-PAUSED:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-READY-TO-PAUSED:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-PAUSED-TO-PLAYING:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-PAUSED-TO-PLAYING:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-PLAYING-TO-PAUSED:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-PLAYING-TO-PAUSED:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-PAUSED-TO-READY:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-PAUSED-TO-READY:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-READY-TO-NULL:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-READY-TO-NULL:CAPS">
 <ANCHOR id="GstStateChangeReturn" href="gstreamer-1.0/GstElement.html#GstStateChangeReturn">
+<ANCHOR id="GST-STATE-CHANGE-FAILURE:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-FAILURE:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-SUCCESS:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-SUCCESS:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-ASYNC:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-ASYNC:CAPS">
+<ANCHOR id="GST-STATE-CHANGE-NO-PREROLL:CAPS" href="gstreamer-1.0/GstElement.html#GST-STATE-CHANGE-NO-PREROLL:CAPS">
 <ANCHOR id="GST-ELEMENT-METADATA-AUTHOR:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-METADATA-AUTHOR:CAPS">
 <ANCHOR id="GST-ELEMENT-METADATA-DESCRIPTION:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-METADATA-DESCRIPTION:CAPS">
 <ANCHOR id="GST-ELEMENT-METADATA-DOC-URI:CAPS" href="gstreamer-1.0/GstElement.html#GST-ELEMENT-METADATA-DOC-URI:CAPS">
@@ -757,9 +859,11 @@
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-AUDIOVIDEO-SINKS:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-AUDIOVIDEO-SINKS:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-AUDIO-ENCODER:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-AUDIO-ENCODER:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-DECODER:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DECODER:CAPS">
+<ANCHOR id="GST-ELEMENT-FACTORY-TYPE-DECRYPTOR:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DECRYPTOR:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-DEMUXER:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DEMUXER:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-DEPAYLOADER:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DEPAYLOADER:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-ENCODER:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-ENCODER:CAPS">
+<ANCHOR id="GST-ELEMENT-FACTORY-TYPE-ENCRYPTOR:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-ENCRYPTOR:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-FORMATTER:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-FORMATTER:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-MAX-ELEMENTS:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-MAX-ELEMENTS:CAPS">
 <ANCHOR id="GST-ELEMENT-FACTORY-TYPE-MEDIA-AUDIO:CAPS" href="gstreamer-1.0/GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-MEDIA-AUDIO:CAPS">
@@ -792,9 +896,61 @@
 <ANCHOR id="gst-error-get-message" href="gstreamer-1.0/gstreamer-GstGError.html#gst-error-get-message">
 <ANCHOR id="gstreamer-GstGError.other_details" href="gstreamer-1.0/gstreamer-GstGError.html#gstreamer-GstGError.other_details">
 <ANCHOR id="GstCoreError" href="gstreamer-1.0/gstreamer-GstGError.html#GstCoreError">
+<ANCHOR id="GST-CORE-ERROR-FAILED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-FAILED:CAPS">
+<ANCHOR id="GST-CORE-ERROR-TOO-LAZY:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-TOO-LAZY:CAPS">
+<ANCHOR id="GST-CORE-ERROR-NOT-IMPLEMENTED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-NOT-IMPLEMENTED:CAPS">
+<ANCHOR id="GST-CORE-ERROR-STATE-CHANGE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-STATE-CHANGE:CAPS">
+<ANCHOR id="GST-CORE-ERROR-PAD:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-PAD:CAPS">
+<ANCHOR id="GST-CORE-ERROR-THREAD:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-THREAD:CAPS">
+<ANCHOR id="GST-CORE-ERROR-NEGOTIATION:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-NEGOTIATION:CAPS">
+<ANCHOR id="GST-CORE-ERROR-EVENT:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-EVENT:CAPS">
+<ANCHOR id="GST-CORE-ERROR-SEEK:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-SEEK:CAPS">
+<ANCHOR id="GST-CORE-ERROR-CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-CAPS">
+<ANCHOR id="GST-CORE-ERROR-TAG:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-TAG:CAPS">
+<ANCHOR id="GST-CORE-ERROR-MISSING-PLUGIN:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-MISSING-PLUGIN:CAPS">
+<ANCHOR id="GST-CORE-ERROR-CLOCK:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-CLOCK:CAPS">
+<ANCHOR id="GST-CORE-ERROR-DISABLED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-DISABLED:CAPS">
+<ANCHOR id="GST-CORE-ERROR-NUM-ERRORS:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR-NUM-ERRORS:CAPS">
 <ANCHOR id="GstLibraryError" href="gstreamer-1.0/gstreamer-GstGError.html#GstLibraryError">
+<ANCHOR id="GST-LIBRARY-ERROR-FAILED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-FAILED:CAPS">
+<ANCHOR id="GST-LIBRARY-ERROR-TOO-LAZY:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-TOO-LAZY:CAPS">
+<ANCHOR id="GST-LIBRARY-ERROR-INIT:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-INIT:CAPS">
+<ANCHOR id="GST-LIBRARY-ERROR-SHUTDOWN:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-SHUTDOWN:CAPS">
+<ANCHOR id="GST-LIBRARY-ERROR-SETTINGS:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-SETTINGS:CAPS">
+<ANCHOR id="GST-LIBRARY-ERROR-ENCODE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-ENCODE:CAPS">
+<ANCHOR id="GST-LIBRARY-ERROR-NUM-ERRORS:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR-NUM-ERRORS:CAPS">
 <ANCHOR id="GstResourceError" href="gstreamer-1.0/gstreamer-GstGError.html#GstResourceError">
+<ANCHOR id="GST-RESOURCE-ERROR-FAILED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-FAILED:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-TOO-LAZY:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-TOO-LAZY:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-NOT-FOUND:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-NOT-FOUND:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-BUSY:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-BUSY:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-OPEN-READ:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-OPEN-READ:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-OPEN-WRITE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-OPEN-WRITE:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-OPEN-READ-WRITE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-OPEN-READ-WRITE:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-CLOSE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-CLOSE:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-READ:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-READ:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-WRITE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-WRITE:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-SEEK:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-SEEK:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-SYNC:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-SYNC:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-SETTINGS:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-SETTINGS:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-NO-SPACE-LEFT:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-NO-SPACE-LEFT:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-NOT-AUTHORIZED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-NOT-AUTHORIZED:CAPS">
+<ANCHOR id="GST-RESOURCE-ERROR-NUM-ERRORS:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR-NUM-ERRORS:CAPS">
 <ANCHOR id="GstStreamError" href="gstreamer-1.0/gstreamer-GstGError.html#GstStreamError">
+<ANCHOR id="GST-STREAM-ERROR-FAILED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-FAILED:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-TOO-LAZY:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-TOO-LAZY:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-NOT-IMPLEMENTED:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-NOT-IMPLEMENTED:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-TYPE-NOT-FOUND:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-TYPE-NOT-FOUND:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-WRONG-TYPE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-WRONG-TYPE:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-CODEC-NOT-FOUND:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-CODEC-NOT-FOUND:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-DECODE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-DECODE:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-ENCODE:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-ENCODE:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-DEMUX:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-DEMUX:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-MUX:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-MUX:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-FORMAT:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-FORMAT:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-DECRYPT:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-DECRYPT:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-DECRYPT-NOKEY:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-DECRYPT-NOKEY:CAPS">
+<ANCHOR id="GST-STREAM-ERROR-NUM-ERRORS:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-STREAM-ERROR-NUM-ERRORS:CAPS">
 <ANCHOR id="GST-CORE-ERROR:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-CORE-ERROR:CAPS">
 <ANCHOR id="GST-LIBRARY-ERROR:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-LIBRARY-ERROR:CAPS">
 <ANCHOR id="GST-RESOURCE-ERROR:CAPS" href="gstreamer-1.0/gstreamer-GstGError.html#GST-RESOURCE-ERROR:CAPS">
@@ -874,15 +1030,71 @@
 <ANCHOR id="gst-event-parse-toc-select" href="gstreamer-1.0/GstEvent.html#gst-event-parse-toc-select">
 <ANCHOR id="gst-event-new-segment-done" href="gstreamer-1.0/GstEvent.html#gst-event-new-segment-done">
 <ANCHOR id="gst-event-parse-segment-done" href="gstreamer-1.0/GstEvent.html#gst-event-parse-segment-done">
+<ANCHOR id="gst-event-new-protection" href="gstreamer-1.0/GstEvent.html#gst-event-new-protection">
+<ANCHOR id="gst-event-parse-protection" href="gstreamer-1.0/GstEvent.html#gst-event-parse-protection">
 <ANCHOR id="GstEvent.other_details" href="gstreamer-1.0/GstEvent.html#GstEvent.other_details">
 <ANCHOR id="GstEvent-struct" href="gstreamer-1.0/GstEvent.html#GstEvent-struct">
 <ANCHOR id="GstEventTypeFlags" href="gstreamer-1.0/GstEvent.html#GstEventTypeFlags">
+<ANCHOR id="GST-EVENT-TYPE-UPSTREAM:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TYPE-UPSTREAM:CAPS">
+<ANCHOR id="GST-EVENT-TYPE-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TYPE-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-EVENT-TYPE-SERIALIZED:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TYPE-SERIALIZED:CAPS">
+<ANCHOR id="GST-EVENT-TYPE-STICKY:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TYPE-STICKY:CAPS">
+<ANCHOR id="GST-EVENT-TYPE-STICKY-MULTI:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TYPE-STICKY-MULTI:CAPS">
 <ANCHOR id="GST-EVENT-TYPE-BOTH:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TYPE-BOTH:CAPS">
 <ANCHOR id="GstEventType" href="gstreamer-1.0/GstEvent.html#GstEventType">
+<ANCHOR id="GST-EVENT-UNKNOWN:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-UNKNOWN:CAPS">
+<ANCHOR id="GST-EVENT-FLUSH-START:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-FLUSH-START:CAPS">
+<ANCHOR id="GST-EVENT-FLUSH-STOP:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-FLUSH-STOP:CAPS">
+<ANCHOR id="GST-EVENT-STREAM-START:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-STREAM-START:CAPS">
+<ANCHOR id="GST-EVENT-CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CAPS">
+<ANCHOR id="GST-EVENT-SEGMENT:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-SEGMENT:CAPS">
+<ANCHOR id="GST-EVENT-TAG:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TAG:CAPS">
+<ANCHOR id="GST-EVENT-BUFFERSIZE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-BUFFERSIZE:CAPS">
+<ANCHOR id="GST-EVENT-SINK-MESSAGE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-SINK-MESSAGE:CAPS">
+<ANCHOR id="GST-EVENT-EOS:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-EOS:CAPS">
+<ANCHOR id="GST-EVENT-TOC:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TOC:CAPS">
+<ANCHOR id="GST-EVENT-PROTECTION:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-PROTECTION:CAPS">
+<ANCHOR id="GST-EVENT-SEGMENT-DONE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-SEGMENT-DONE:CAPS">
+<ANCHOR id="GST-EVENT-GAP:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-GAP:CAPS">
+<ANCHOR id="GST-EVENT-QOS:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-QOS:CAPS">
+<ANCHOR id="GST-EVENT-SEEK:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-SEEK:CAPS">
+<ANCHOR id="GST-EVENT-NAVIGATION:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-NAVIGATION:CAPS">
+<ANCHOR id="GST-EVENT-LATENCY:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-LATENCY:CAPS">
+<ANCHOR id="GST-EVENT-STEP:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-STEP:CAPS">
+<ANCHOR id="GST-EVENT-RECONFIGURE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-RECONFIGURE:CAPS">
+<ANCHOR id="GST-EVENT-TOC-SELECT:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-TOC-SELECT:CAPS">
+<ANCHOR id="GST-EVENT-CUSTOM-UPSTREAM:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CUSTOM-UPSTREAM:CAPS">
+<ANCHOR id="GST-EVENT-CUSTOM-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CUSTOM-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-EVENT-CUSTOM-DOWNSTREAM-OOB:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CUSTOM-DOWNSTREAM-OOB:CAPS">
+<ANCHOR id="GST-EVENT-CUSTOM-DOWNSTREAM-STICKY:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CUSTOM-DOWNSTREAM-STICKY:CAPS">
+<ANCHOR id="GST-EVENT-CUSTOM-BOTH:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CUSTOM-BOTH:CAPS">
+<ANCHOR id="GST-EVENT-CUSTOM-BOTH-OOB:CAPS" href="gstreamer-1.0/GstEvent.html#GST-EVENT-CUSTOM-BOTH-OOB:CAPS">
 <ANCHOR id="GstStreamFlags" href="gstreamer-1.0/GstEvent.html#GstStreamFlags">
+<ANCHOR id="GST-STREAM-FLAG-NONE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-STREAM-FLAG-NONE:CAPS">
+<ANCHOR id="GST-STREAM-FLAG-SPARSE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-STREAM-FLAG-SPARSE:CAPS">
+<ANCHOR id="GST-STREAM-FLAG-SELECT:CAPS" href="gstreamer-1.0/GstEvent.html#GST-STREAM-FLAG-SELECT:CAPS">
+<ANCHOR id="GST-STREAM-FLAG-UNSELECT:CAPS" href="gstreamer-1.0/GstEvent.html#GST-STREAM-FLAG-UNSELECT:CAPS">
 <ANCHOR id="GstQOSType" href="gstreamer-1.0/GstEvent.html#GstQOSType">
+<ANCHOR id="GST-QOS-TYPE-OVERFLOW:CAPS" href="gstreamer-1.0/GstEvent.html#GST-QOS-TYPE-OVERFLOW:CAPS">
+<ANCHOR id="GST-QOS-TYPE-UNDERFLOW:CAPS" href="gstreamer-1.0/GstEvent.html#GST-QOS-TYPE-UNDERFLOW:CAPS">
+<ANCHOR id="GST-QOS-TYPE-THROTTLE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-QOS-TYPE-THROTTLE:CAPS">
 <ANCHOR id="GstSeekType" href="gstreamer-1.0/GstEvent.html#GstSeekType">
+<ANCHOR id="GST-SEEK-TYPE-NONE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-TYPE-NONE:CAPS">
+<ANCHOR id="GST-SEEK-TYPE-SET:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-TYPE-SET:CAPS">
+<ANCHOR id="GST-SEEK-TYPE-END:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-TYPE-END:CAPS">
 <ANCHOR id="GstSeekFlags" href="gstreamer-1.0/GstEvent.html#GstSeekFlags">
+<ANCHOR id="GST-SEEK-FLAG-NONE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-NONE:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-FLUSH:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-FLUSH:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-ACCURATE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-ACCURATE:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-KEY-UNIT:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-KEY-UNIT:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-SEGMENT:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-SEGMENT:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-TRICKMODE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-TRICKMODE:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-SKIP:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-SKIP:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-SNAP-BEFORE:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-SNAP-BEFORE:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-SNAP-AFTER:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-SNAP-AFTER:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-SNAP-NEAREST:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-SNAP-NEAREST:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-TRICKMODE-KEY-UNITS:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-TRICKMODE-KEY-UNITS:CAPS">
+<ANCHOR id="GST-SEEK-FLAG-TRICKMODE-NO-AUDIO:CAPS" href="gstreamer-1.0/GstEvent.html#GST-SEEK-FLAG-TRICKMODE-NO-AUDIO:CAPS">
 <ANCHOR id="GstEvent.see-also" href="gstreamer-1.0/GstEvent.html#GstEvent.see-also">
 <ANCHOR id="gstreamer-GstFormat" href="gstreamer-1.0/gstreamer-GstFormat.html">
 <ANCHOR id="gstreamer-GstFormat.functions" href="gstreamer-1.0/gstreamer-GstFormat.html#gstreamer-GstFormat.functions">
@@ -899,6 +1111,12 @@
 <ANCHOR id="gst-format-iterate-definitions" href="gstreamer-1.0/gstreamer-GstFormat.html#gst-format-iterate-definitions">
 <ANCHOR id="gstreamer-GstFormat.other_details" href="gstreamer-1.0/gstreamer-GstFormat.html#gstreamer-GstFormat.other_details">
 <ANCHOR id="GstFormat" href="gstreamer-1.0/gstreamer-GstFormat.html#GstFormat">
+<ANCHOR id="GST-FORMAT-UNDEFINED:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-UNDEFINED:CAPS">
+<ANCHOR id="GST-FORMAT-DEFAULT:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-DEFAULT:CAPS">
+<ANCHOR id="GST-FORMAT-BYTES:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS">
+<ANCHOR id="GST-FORMAT-TIME:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS">
+<ANCHOR id="GST-FORMAT-BUFFERS:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-BUFFERS:CAPS">
+<ANCHOR id="GST-FORMAT-PERCENT:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-PERCENT:CAPS">
 <ANCHOR id="GST-FORMAT-PERCENT-MAX:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-PERCENT-MAX:CAPS">
 <ANCHOR id="GST-FORMAT-PERCENT-SCALE:CAPS" href="gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-PERCENT-SCALE:CAPS">
 <ANCHOR id="GstFormatDefinition" href="gstreamer-1.0/gstreamer-GstFormat.html#GstFormatDefinition">
@@ -961,7 +1179,14 @@
 <ANCHOR id="gstreamer-GstIterator.other_details" href="gstreamer-1.0/gstreamer-GstIterator.html#gstreamer-GstIterator.other_details">
 <ANCHOR id="GstIterator" href="gstreamer-1.0/gstreamer-GstIterator.html#GstIterator">
 <ANCHOR id="GstIteratorItem" href="gstreamer-1.0/gstreamer-GstIterator.html#GstIteratorItem">
+<ANCHOR id="GST-ITERATOR-ITEM-SKIP:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-ITEM-SKIP:CAPS">
+<ANCHOR id="GST-ITERATOR-ITEM-PASS:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-ITEM-PASS:CAPS">
+<ANCHOR id="GST-ITERATOR-ITEM-END:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-ITEM-END:CAPS">
 <ANCHOR id="GstIteratorResult" href="gstreamer-1.0/gstreamer-GstIterator.html#GstIteratorResult">
+<ANCHOR id="GST-ITERATOR-DONE:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-DONE:CAPS">
+<ANCHOR id="GST-ITERATOR-OK:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-OK:CAPS">
+<ANCHOR id="GST-ITERATOR-RESYNC:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-RESYNC:CAPS">
+<ANCHOR id="GST-ITERATOR-ERROR:CAPS" href="gstreamer-1.0/gstreamer-GstIterator.html#GST-ITERATOR-ERROR:CAPS">
 <ANCHOR id="gstreamer-GstIterator.see-also" href="gstreamer-1.0/gstreamer-GstIterator.html#gstreamer-GstIterator.see-also">
 <ANCHOR id="GstMemory" href="gstreamer-1.0/GstMemory.html">
 <ANCHOR id="GstMemory.functions" href="gstreamer-1.0/GstMemory.html#GstMemory.functions">
@@ -981,7 +1206,9 @@
 <ANCHOR id="GST-MEMORY-IS-NOT-MAPPABLE:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-IS-NOT-MAPPABLE:CAPS">
 <ANCHOR id="GST-MAP-READWRITE:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MAP-READWRITE:CAPS">
 <ANCHOR id="GstMemoryMapFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryMapFunction">
+<ANCHOR id="GstMemoryMapFullFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryMapFullFunction">
 <ANCHOR id="GstMemoryUnmapFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryUnmapFunction">
+<ANCHOR id="GstMemoryUnmapFullFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryUnmapFullFunction">
 <ANCHOR id="GstMemoryCopyFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryCopyFunction">
 <ANCHOR id="GstMemoryShareFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryShareFunction">
 <ANCHOR id="GstMemoryIsSpanFunction" href="gstreamer-1.0/GstMemory.html#GstMemoryIsSpanFunction">
@@ -1003,8 +1230,18 @@
 <ANCHOR id="gst-memory-is-span" href="gstreamer-1.0/GstMemory.html#gst-memory-is-span">
 <ANCHOR id="GstMemory.other_details" href="gstreamer-1.0/GstMemory.html#GstMemory.other_details">
 <ANCHOR id="GstMemoryFlags" href="gstreamer-1.0/GstMemory.html#GstMemoryFlags">
+<ANCHOR id="GST-MEMORY-FLAG-READONLY:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-READONLY:CAPS">
+<ANCHOR id="GST-MEMORY-FLAG-NO-SHARE:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-NO-SHARE:CAPS">
+<ANCHOR id="GST-MEMORY-FLAG-ZERO-PREFIXED:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-ZERO-PREFIXED:CAPS">
+<ANCHOR id="GST-MEMORY-FLAG-ZERO-PADDED:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-ZERO-PADDED:CAPS">
+<ANCHOR id="GST-MEMORY-FLAG-PHYSICALLY-CONTIGUOUS:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-PHYSICALLY-CONTIGUOUS:CAPS">
+<ANCHOR id="GST-MEMORY-FLAG-NOT-MAPPABLE:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-NOT-MAPPABLE:CAPS">
+<ANCHOR id="GST-MEMORY-FLAG-LAST:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MEMORY-FLAG-LAST:CAPS">
 <ANCHOR id="GstMemory-struct" href="gstreamer-1.0/GstMemory.html#GstMemory-struct">
 <ANCHOR id="GstMapFlags" href="gstreamer-1.0/GstMemory.html#GstMapFlags">
+<ANCHOR id="GST-MAP-READ:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MAP-READ:CAPS">
+<ANCHOR id="GST-MAP-WRITE:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MAP-WRITE:CAPS">
+<ANCHOR id="GST-MAP-FLAG-LAST:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MAP-FLAG-LAST:CAPS">
 <ANCHOR id="GstMapInfo" href="gstreamer-1.0/GstMemory.html#GstMapInfo">
 <ANCHOR id="GST-MAP-INFO-INIT:CAPS" href="gstreamer-1.0/GstMemory.html#GST-MAP-INFO-INIT:CAPS">
 <ANCHOR id="GstMemory.see-also" href="gstreamer-1.0/GstMemory.html#GstMemory.see-also">
@@ -1106,9 +1343,59 @@
 <ANCHOR id="GstMessage.other_details" href="gstreamer-1.0/GstMessage.html#GstMessage.other_details">
 <ANCHOR id="GstMessage-struct" href="gstreamer-1.0/GstMessage.html#GstMessage-struct">
 <ANCHOR id="GstMessageType" href="gstreamer-1.0/GstMessage.html#GstMessageType">
+<ANCHOR id="GST-MESSAGE-UNKNOWN:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-UNKNOWN:CAPS">
+<ANCHOR id="GST-MESSAGE-EOS:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-EOS:CAPS">
+<ANCHOR id="GST-MESSAGE-ERROR:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-ERROR:CAPS">
+<ANCHOR id="GST-MESSAGE-WARNING:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-WARNING:CAPS">
+<ANCHOR id="GST-MESSAGE-INFO:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-INFO:CAPS">
+<ANCHOR id="GST-MESSAGE-TAG:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-TAG:CAPS">
+<ANCHOR id="GST-MESSAGE-BUFFERING:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-BUFFERING:CAPS">
+<ANCHOR id="GST-MESSAGE-STATE-CHANGED:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STATE-CHANGED:CAPS">
+<ANCHOR id="GST-MESSAGE-STATE-DIRTY:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STATE-DIRTY:CAPS">
+<ANCHOR id="GST-MESSAGE-STEP-DONE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STEP-DONE:CAPS">
+<ANCHOR id="GST-MESSAGE-CLOCK-PROVIDE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-CLOCK-PROVIDE:CAPS">
+<ANCHOR id="GST-MESSAGE-CLOCK-LOST:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-CLOCK-LOST:CAPS">
+<ANCHOR id="GST-MESSAGE-NEW-CLOCK:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-NEW-CLOCK:CAPS">
+<ANCHOR id="GST-MESSAGE-STRUCTURE-CHANGE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STRUCTURE-CHANGE:CAPS">
+<ANCHOR id="GST-MESSAGE-STREAM-STATUS:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STREAM-STATUS:CAPS">
+<ANCHOR id="GST-MESSAGE-APPLICATION:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-APPLICATION:CAPS">
+<ANCHOR id="GST-MESSAGE-ELEMENT:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-ELEMENT:CAPS">
+<ANCHOR id="GST-MESSAGE-SEGMENT-START:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-SEGMENT-START:CAPS">
+<ANCHOR id="GST-MESSAGE-SEGMENT-DONE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-SEGMENT-DONE:CAPS">
+<ANCHOR id="GST-MESSAGE-DURATION-CHANGED:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-DURATION-CHANGED:CAPS">
+<ANCHOR id="GST-MESSAGE-LATENCY:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-LATENCY:CAPS">
+<ANCHOR id="GST-MESSAGE-ASYNC-START:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-ASYNC-START:CAPS">
+<ANCHOR id="GST-MESSAGE-ASYNC-DONE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-ASYNC-DONE:CAPS">
+<ANCHOR id="GST-MESSAGE-REQUEST-STATE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-REQUEST-STATE:CAPS">
+<ANCHOR id="GST-MESSAGE-STEP-START:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STEP-START:CAPS">
+<ANCHOR id="GST-MESSAGE-QOS:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-QOS:CAPS">
+<ANCHOR id="GST-MESSAGE-PROGRESS:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-PROGRESS:CAPS">
+<ANCHOR id="GST-MESSAGE-TOC:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-TOC:CAPS">
+<ANCHOR id="GST-MESSAGE-RESET-TIME:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-RESET-TIME:CAPS">
+<ANCHOR id="GST-MESSAGE-STREAM-START:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-STREAM-START:CAPS">
+<ANCHOR id="GST-MESSAGE-NEED-CONTEXT:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-NEED-CONTEXT:CAPS">
+<ANCHOR id="GST-MESSAGE-HAVE-CONTEXT:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-HAVE-CONTEXT:CAPS">
+<ANCHOR id="GST-MESSAGE-EXTENDED:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-EXTENDED:CAPS">
+<ANCHOR id="GST-MESSAGE-DEVICE-ADDED:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-DEVICE-ADDED:CAPS">
+<ANCHOR id="GST-MESSAGE-DEVICE-REMOVED:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-DEVICE-REMOVED:CAPS">
+<ANCHOR id="GST-MESSAGE-ANY:CAPS" href="gstreamer-1.0/GstMessage.html#GST-MESSAGE-ANY:CAPS">
 <ANCHOR id="GstStructureChangeType" href="gstreamer-1.0/GstMessage.html#GstStructureChangeType">
+<ANCHOR id="GST-STRUCTURE-CHANGE-TYPE-PAD-LINK:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STRUCTURE-CHANGE-TYPE-PAD-LINK:CAPS">
+<ANCHOR id="GST-STRUCTURE-CHANGE-TYPE-PAD-UNLINK:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STRUCTURE-CHANGE-TYPE-PAD-UNLINK:CAPS">
 <ANCHOR id="GstStreamStatusType" href="gstreamer-1.0/GstMessage.html#GstStreamStatusType">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-CREATE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-CREATE:CAPS">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-ENTER:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-ENTER:CAPS">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-LEAVE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-LEAVE:CAPS">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-DESTROY:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-DESTROY:CAPS">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-START:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-START:CAPS">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-PAUSE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-PAUSE:CAPS">
+<ANCHOR id="GST-STREAM-STATUS-TYPE-STOP:CAPS" href="gstreamer-1.0/GstMessage.html#GST-STREAM-STATUS-TYPE-STOP:CAPS">
 <ANCHOR id="GstProgressType" href="gstreamer-1.0/GstMessage.html#GstProgressType">
+<ANCHOR id="GST-PROGRESS-TYPE-START:CAPS" href="gstreamer-1.0/GstMessage.html#GST-PROGRESS-TYPE-START:CAPS">
+<ANCHOR id="GST-PROGRESS-TYPE-CONTINUE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-PROGRESS-TYPE-CONTINUE:CAPS">
+<ANCHOR id="GST-PROGRESS-TYPE-COMPLETE:CAPS" href="gstreamer-1.0/GstMessage.html#GST-PROGRESS-TYPE-COMPLETE:CAPS">
+<ANCHOR id="GST-PROGRESS-TYPE-CANCELED:CAPS" href="gstreamer-1.0/GstMessage.html#GST-PROGRESS-TYPE-CANCELED:CAPS">
+<ANCHOR id="GST-PROGRESS-TYPE-ERROR:CAPS" href="gstreamer-1.0/GstMessage.html#GST-PROGRESS-TYPE-ERROR:CAPS">
 <ANCHOR id="GstMessage.see-also" href="gstreamer-1.0/GstMessage.html#GstMessage.see-also">
 <ANCHOR id="gstreamer-GstMeta" href="gstreamer-1.0/gstreamer-GstMeta.html">
 <ANCHOR id="gstreamer-GstMeta.functions" href="gstreamer-1.0/gstreamer-GstMeta.html#gstreamer-GstMeta.functions">
@@ -1133,6 +1420,11 @@
 <ANCHOR id="gstreamer-GstMeta.other_details" href="gstreamer-1.0/gstreamer-GstMeta.html#gstreamer-GstMeta.other_details">
 <ANCHOR id="GstMeta" href="gstreamer-1.0/gstreamer-GstMeta.html#GstMeta">
 <ANCHOR id="GstMetaFlags" href="gstreamer-1.0/gstreamer-GstMeta.html#GstMetaFlags">
+<ANCHOR id="GST-META-FLAG-NONE:CAPS" href="gstreamer-1.0/gstreamer-GstMeta.html#GST-META-FLAG-NONE:CAPS">
+<ANCHOR id="GST-META-FLAG-READONLY:CAPS" href="gstreamer-1.0/gstreamer-GstMeta.html#GST-META-FLAG-READONLY:CAPS">
+<ANCHOR id="GST-META-FLAG-POOLED:CAPS" href="gstreamer-1.0/gstreamer-GstMeta.html#GST-META-FLAG-POOLED:CAPS">
+<ANCHOR id="GST-META-FLAG-LOCKED:CAPS" href="gstreamer-1.0/gstreamer-GstMeta.html#GST-META-FLAG-LOCKED:CAPS">
+<ANCHOR id="GST-META-FLAG-LAST:CAPS" href="gstreamer-1.0/gstreamer-GstMeta.html#GST-META-FLAG-LAST:CAPS">
 <ANCHOR id="GstMetaInfo" href="gstreamer-1.0/gstreamer-GstMeta.html#GstMetaInfo">
 <ANCHOR id="GstMetaTransformCopy" href="gstreamer-1.0/gstreamer-GstMeta.html#GstMetaTransformCopy">
 <ANCHOR id="GST-META-TAG-MEMORY-STR:CAPS" href="gstreamer-1.0/gstreamer-GstMeta.html#GST-META-TAG-MEMORY-STR:CAPS">
@@ -1175,7 +1467,14 @@
 <ANCHOR id="gstreamer-GstMiniObject.other_details" href="gstreamer-1.0/gstreamer-GstMiniObject.html#gstreamer-GstMiniObject.other_details">
 <ANCHOR id="GstMiniObject" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GstMiniObject">
 <ANCHOR id="GstMiniObjectFlags" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GstMiniObjectFlags">
+<ANCHOR id="GST-MINI-OBJECT-FLAG-LOCKABLE:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-LOCKABLE:CAPS">
+<ANCHOR id="GST-MINI-OBJECT-FLAG-LOCK-READONLY:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-LOCK-READONLY:CAPS">
+<ANCHOR id="GST-MINI-OBJECT-FLAG-LAST:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-LAST:CAPS">
 <ANCHOR id="GstLockFlags" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GstLockFlags">
+<ANCHOR id="GST-LOCK-FLAG-READ:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-LOCK-FLAG-READ:CAPS">
+<ANCHOR id="GST-LOCK-FLAG-WRITE:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-LOCK-FLAG-WRITE:CAPS">
+<ANCHOR id="GST-LOCK-FLAG-EXCLUSIVE:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-LOCK-FLAG-EXCLUSIVE:CAPS">
+<ANCHOR id="GST-LOCK-FLAG-LAST:CAPS" href="gstreamer-1.0/gstreamer-GstMiniObject.html#GST-LOCK-FLAG-LAST:CAPS">
 <ANCHOR id="GstObject" href="gstreamer-1.0/GstObject.html">
 <ANCHOR id="GstObject.functions" href="gstreamer-1.0/GstObject.html#GstObject.functions">
 <ANCHOR id="GstObject.properties" href="gstreamer-1.0/GstObject.html#GstObject.properties">
@@ -1201,10 +1500,12 @@
 <ANCHOR id="gst-object-get-name" href="gstreamer-1.0/GstObject.html#gst-object-get-name">
 <ANCHOR id="gst-object-set-parent" href="gstreamer-1.0/GstObject.html#gst-object-set-parent">
 <ANCHOR id="gst-object-get-parent" href="gstreamer-1.0/GstObject.html#gst-object-get-parent">
+<ANCHOR id="gst-object-has-as-parent" href="gstreamer-1.0/GstObject.html#gst-object-has-as-parent">
 <ANCHOR id="gst-object-unparent" href="gstreamer-1.0/GstObject.html#gst-object-unparent">
 <ANCHOR id="gst-object-default-deep-notify" href="gstreamer-1.0/GstObject.html#gst-object-default-deep-notify">
 <ANCHOR id="gst-object-default-error" href="gstreamer-1.0/GstObject.html#gst-object-default-error">
 <ANCHOR id="gst-object-check-uniqueness" href="gstreamer-1.0/GstObject.html#gst-object-check-uniqueness">
+<ANCHOR id="gst-object-has-as-ancestor" href="gstreamer-1.0/GstObject.html#gst-object-has-as-ancestor">
 <ANCHOR id="gst-object-has-ancestor" href="gstreamer-1.0/GstObject.html#gst-object-has-ancestor">
 <ANCHOR id="gst-object-ref" href="gstreamer-1.0/GstObject.html#gst-object-ref">
 <ANCHOR id="gst-object-unref" href="gstreamer-1.0/GstObject.html#gst-object-unref">
@@ -1228,6 +1529,7 @@
 <ANCHOR id="GstObject-struct" href="gstreamer-1.0/GstObject.html#GstObject-struct">
 <ANCHOR id="GstObjectClass" href="gstreamer-1.0/GstObject.html#GstObjectClass">
 <ANCHOR id="GstObjectFlags" href="gstreamer-1.0/GstObject.html#GstObjectFlags">
+<ANCHOR id="GST-OBJECT-FLAG-LAST:CAPS" href="gstreamer-1.0/GstObject.html#GST-OBJECT-FLAG-LAST:CAPS">
 <ANCHOR id="GstObject.property-details" href="gstreamer-1.0/GstObject.html#GstObject.property-details">
 <ANCHOR id="GstObject--name" href="gstreamer-1.0/GstObject.html#GstObject--name">
 <ANCHOR id="GstObject--parent" href="gstreamer-1.0/GstObject.html#GstObject--parent">
@@ -1414,20 +1716,96 @@
 <ANCHOR id="GST-PAD-IS-ACCEPT-INTERSECT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-IS-ACCEPT-INTERSECT:CAPS">
 <ANCHOR id="GST-PAD-SET-ACCEPT-INTERSECT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-SET-ACCEPT-INTERSECT:CAPS">
 <ANCHOR id="GST-PAD-UNSET-ACCEPT-INTERSECT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-UNSET-ACCEPT-INTERSECT:CAPS">
+<ANCHOR id="GST-PAD-IS-ACCEPT-TEMPLATE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-IS-ACCEPT-TEMPLATE:CAPS">
+<ANCHOR id="GST-PAD-SET-ACCEPT-TEMPLATE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-SET-ACCEPT-TEMPLATE:CAPS">
+<ANCHOR id="GST-PAD-UNSET-ACCEPT-TEMPLATE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-UNSET-ACCEPT-TEMPLATE:CAPS">
 <ANCHOR id="GstPad.other_details" href="gstreamer-1.0/GstPad.html#GstPad.other_details">
 <ANCHOR id="GstPad-struct" href="gstreamer-1.0/GstPad.html#GstPad-struct">
 <ANCHOR id="GstPadDirection" href="gstreamer-1.0/GstPad.html#GstPadDirection">
+<ANCHOR id="GST-PAD-UNKNOWN:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-UNKNOWN:CAPS">
+<ANCHOR id="GST-PAD-SRC:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-SRC:CAPS">
+<ANCHOR id="GST-PAD-SINK:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-SINK:CAPS">
 <ANCHOR id="GstPadFlags" href="gstreamer-1.0/GstPad.html#GstPadFlags">
+<ANCHOR id="GST-PAD-FLAG-BLOCKED:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-BLOCKED:CAPS">
+<ANCHOR id="GST-PAD-FLAG-FLUSHING:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-FLUSHING:CAPS">
+<ANCHOR id="GST-PAD-FLAG-EOS:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-EOS:CAPS">
+<ANCHOR id="GST-PAD-FLAG-BLOCKING:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-BLOCKING:CAPS">
+<ANCHOR id="GST-PAD-FLAG-NEED-PARENT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-NEED-PARENT:CAPS">
+<ANCHOR id="GST-PAD-FLAG-NEED-RECONFIGURE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-NEED-RECONFIGURE:CAPS">
+<ANCHOR id="GST-PAD-FLAG-PENDING-EVENTS:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-PENDING-EVENTS:CAPS">
+<ANCHOR id="GST-PAD-FLAG-FIXED-CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-FIXED-CAPS">
+<ANCHOR id="GST-PAD-FLAG-PROXY-CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-PROXY-CAPS">
+<ANCHOR id="GST-PAD-FLAG-PROXY-ALLOCATION:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-PROXY-ALLOCATION:CAPS">
+<ANCHOR id="GST-PAD-FLAG-PROXY-SCHEDULING:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-PROXY-SCHEDULING:CAPS">
+<ANCHOR id="GST-PAD-FLAG-ACCEPT-INTERSECT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-ACCEPT-INTERSECT:CAPS">
+<ANCHOR id="GST-PAD-FLAG-ACCEPT-TEMPLATE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-ACCEPT-TEMPLATE:CAPS">
+<ANCHOR id="GST-PAD-FLAG-LAST:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-FLAG-LAST:CAPS">
 <ANCHOR id="GstPadLinkReturn" href="gstreamer-1.0/GstPad.html#GstPadLinkReturn">
+<ANCHOR id="GST-PAD-LINK-OK:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-OK:CAPS">
+<ANCHOR id="GST-PAD-LINK-WRONG-HIERARCHY:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-WRONG-HIERARCHY:CAPS">
+<ANCHOR id="GST-PAD-LINK-WAS-LINKED:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-WAS-LINKED:CAPS">
+<ANCHOR id="GST-PAD-LINK-WRONG-DIRECTION:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-WRONG-DIRECTION:CAPS">
+<ANCHOR id="GST-PAD-LINK-NOFORMAT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-NOFORMAT:CAPS">
+<ANCHOR id="GST-PAD-LINK-NOSCHED:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-NOSCHED:CAPS">
+<ANCHOR id="GST-PAD-LINK-REFUSED:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-REFUSED:CAPS">
 <ANCHOR id="GstPadLinkCheck" href="gstreamer-1.0/GstPad.html#GstPadLinkCheck">
+<ANCHOR id="GST-PAD-LINK-CHECK-NOTHING:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-CHECK-NOTHING:CAPS">
+<ANCHOR id="GST-PAD-LINK-CHECK-HIERARCHY:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-CHECK-HIERARCHY:CAPS">
+<ANCHOR id="GST-PAD-LINK-CHECK-TEMPLATE-CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-CHECK-TEMPLATE-CAPS">
+<ANCHOR id="GST-PAD-LINK-CHECK-CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-CHECK-CAPS">
+<ANCHOR id="GST-PAD-LINK-CHECK-DEFAULT:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-LINK-CHECK-DEFAULT:CAPS">
 <ANCHOR id="GstFlowReturn" href="gstreamer-1.0/GstPad.html#GstFlowReturn">
+<ANCHOR id="GST-FLOW-CUSTOM-SUCCESS-2:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-CUSTOM-SUCCESS-2:CAPS">
+<ANCHOR id="GST-FLOW-CUSTOM-SUCCESS-1:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-CUSTOM-SUCCESS-1:CAPS">
+<ANCHOR id="GST-FLOW-CUSTOM-SUCCESS:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-CUSTOM-SUCCESS:CAPS">
+<ANCHOR id="GST-FLOW-OK:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-OK:CAPS">
+<ANCHOR id="GST-FLOW-NOT-LINKED:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-NOT-LINKED:CAPS">
+<ANCHOR id="GST-FLOW-FLUSHING:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-FLUSHING:CAPS">
+<ANCHOR id="GST-FLOW-EOS:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-EOS:CAPS">
+<ANCHOR id="GST-FLOW-NOT-NEGOTIATED:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-NOT-NEGOTIATED:CAPS">
+<ANCHOR id="GST-FLOW-ERROR:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-ERROR:CAPS">
+<ANCHOR id="GST-FLOW-NOT-SUPPORTED:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-NOT-SUPPORTED:CAPS">
+<ANCHOR id="GST-FLOW-CUSTOM-ERROR:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-CUSTOM-ERROR:CAPS">
+<ANCHOR id="GST-FLOW-CUSTOM-ERROR-1:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-CUSTOM-ERROR-1:CAPS">
+<ANCHOR id="GST-FLOW-CUSTOM-ERROR-2:CAPS" href="gstreamer-1.0/GstPad.html#GST-FLOW-CUSTOM-ERROR-2:CAPS">
 <ANCHOR id="GstPadMode" href="gstreamer-1.0/GstPad.html#GstPadMode">
+<ANCHOR id="GST-PAD-MODE-NONE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-MODE-NONE:CAPS">
+<ANCHOR id="GST-PAD-MODE-PUSH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-MODE-PUSH:CAPS">
+<ANCHOR id="GST-PAD-MODE-PULL:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-MODE-PULL:CAPS">
 <ANCHOR id="GstPadProbeReturn" href="gstreamer-1.0/GstPad.html#GstPadProbeReturn">
+<ANCHOR id="GST-PAD-PROBE-DROP:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-DROP:CAPS">
+<ANCHOR id="GST-PAD-PROBE-OK:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-OK:CAPS">
+<ANCHOR id="GST-PAD-PROBE-REMOVE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-REMOVE:CAPS">
+<ANCHOR id="GST-PAD-PROBE-PASS:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-PASS:CAPS">
+<ANCHOR id="GST-PAD-PROBE-HANDLED:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-HANDLED:CAPS">
 <ANCHOR id="GstPadProbeType" href="gstreamer-1.0/GstPad.html#GstPadProbeType">
+<ANCHOR id="GST-PAD-PROBE-TYPE-INVALID:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-INVALID:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-IDLE:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-IDLE:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-BLOCK:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-BLOCK:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-BUFFER:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-BUFFER:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-BUFFER-LIST:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-BUFFER-LIST:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-EVENT-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-EVENT-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-EVENT-UPSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-EVENT-UPSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-EVENT-FLUSH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-EVENT-FLUSH:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-QUERY-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-QUERY-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-QUERY-UPSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-QUERY-UPSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-PUSH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-PUSH:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-PULL:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-PULL:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-BLOCKING:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-BLOCKING:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-DATA-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-DATA-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-DATA-UPSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-DATA-UPSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-DATA-BOTH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-DATA-BOTH:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-BLOCK-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-BLOCK-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-BLOCK-UPSTREAM:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-BLOCK-UPSTREAM:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-EVENT-BOTH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-EVENT-BOTH:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-QUERY-BOTH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-QUERY-BOTH:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-ALL-BOTH:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-ALL-BOTH:CAPS">
+<ANCHOR id="GST-PAD-PROBE-TYPE-SCHEDULING:CAPS" href="gstreamer-1.0/GstPad.html#GST-PAD-PROBE-TYPE-SCHEDULING:CAPS">
 <ANCHOR id="GstPadProbeInfo" href="gstreamer-1.0/GstPad.html#GstPadProbeInfo">
 <ANCHOR id="GstPad.property-details" href="gstreamer-1.0/GstPad.html#GstPad.property-details">
 <ANCHOR id="GstPad--caps" href="gstreamer-1.0/GstPad.html#GstPad--caps">
 <ANCHOR id="GstPad--direction" href="gstreamer-1.0/GstPad.html#GstPad--direction">
+<ANCHOR id="GstPad--offset" href="gstreamer-1.0/GstPad.html#GstPad--offset">
 <ANCHOR id="GstPad--template" href="gstreamer-1.0/GstPad.html#GstPad--template">
 <ANCHOR id="GstPad.signal-details" href="gstreamer-1.0/GstPad.html#GstPad.signal-details">
 <ANCHOR id="GstPad-linked" href="gstreamer-1.0/GstPad.html#GstPad-linked">
@@ -1456,7 +1834,11 @@
 <ANCHOR id="GstStaticPadTemplate" href="gstreamer-1.0/GstPadTemplate.html#GstStaticPadTemplate">
 <ANCHOR id="GstPadTemplate-struct" href="gstreamer-1.0/GstPadTemplate.html#GstPadTemplate-struct">
 <ANCHOR id="GstPadTemplateFlags" href="gstreamer-1.0/GstPadTemplate.html#GstPadTemplateFlags">
+<ANCHOR id="GST-PAD-TEMPLATE-FLAG-LAST:CAPS" href="gstreamer-1.0/GstPadTemplate.html#GST-PAD-TEMPLATE-FLAG-LAST:CAPS">
 <ANCHOR id="GstPadPresence" href="gstreamer-1.0/GstPadTemplate.html#GstPadPresence">
+<ANCHOR id="GST-PAD-ALWAYS:CAPS" href="gstreamer-1.0/GstPadTemplate.html#GST-PAD-ALWAYS:CAPS">
+<ANCHOR id="GST-PAD-SOMETIMES:CAPS" href="gstreamer-1.0/GstPadTemplate.html#GST-PAD-SOMETIMES:CAPS">
+<ANCHOR id="GST-PAD-REQUEST:CAPS" href="gstreamer-1.0/GstPadTemplate.html#GST-PAD-REQUEST:CAPS">
 <ANCHOR id="GstPadTemplate.property-details" href="gstreamer-1.0/GstPadTemplate.html#GstPadTemplate.property-details">
 <ANCHOR id="GstPadTemplate--caps" href="gstreamer-1.0/GstPadTemplate.html#GstPadTemplate--caps">
 <ANCHOR id="GstPadTemplate--direction" href="gstreamer-1.0/GstPadTemplate.html#GstPadTemplate--direction">
@@ -1500,8 +1882,18 @@
 <ANCHOR id="gstreamer-GstParse.other_details" href="gstreamer-1.0/gstreamer-GstParse.html#gstreamer-GstParse.other_details">
 <ANCHOR id="GST-PARSE-ERROR:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR:CAPS">
 <ANCHOR id="GstParseError" href="gstreamer-1.0/gstreamer-GstParse.html#GstParseError">
+<ANCHOR id="GST-PARSE-ERROR-SYNTAX:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-SYNTAX:CAPS">
+<ANCHOR id="GST-PARSE-ERROR-NO-SUCH-ELEMENT:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-NO-SUCH-ELEMENT:CAPS">
+<ANCHOR id="GST-PARSE-ERROR-NO-SUCH-PROPERTY:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-NO-SUCH-PROPERTY:CAPS">
+<ANCHOR id="GST-PARSE-ERROR-LINK:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-LINK:CAPS">
+<ANCHOR id="GST-PARSE-ERROR-COULD-NOT-SET-PROPERTY:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-COULD-NOT-SET-PROPERTY:CAPS">
+<ANCHOR id="GST-PARSE-ERROR-EMPTY-BIN:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-EMPTY-BIN:CAPS">
+<ANCHOR id="GST-PARSE-ERROR-EMPTY:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-ERROR-EMPTY:CAPS">
 <ANCHOR id="GstParseContext-struct" href="gstreamer-1.0/gstreamer-GstParse.html#GstParseContext-struct">
 <ANCHOR id="GstParseFlags" href="gstreamer-1.0/gstreamer-GstParse.html#GstParseFlags">
+<ANCHOR id="GST-PARSE-FLAG-NONE:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-FLAG-NONE:CAPS">
+<ANCHOR id="GST-PARSE-FLAG-FATAL-ERRORS:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-FLAG-FATAL-ERRORS:CAPS">
+<ANCHOR id="GST-PARSE-FLAG-NO-SINGLE-ELEMENT-BINS:CAPS" href="gstreamer-1.0/gstreamer-GstParse.html#GST-PARSE-FLAG-NO-SINGLE-ELEMENT-BINS:CAPS">
 <ANCHOR id="GstPipeline" href="gstreamer-1.0/GstPipeline.html">
 <ANCHOR id="GstPipeline.functions" href="gstreamer-1.0/GstPipeline.html#GstPipeline.functions">
 <ANCHOR id="GstPipeline.properties" href="gstreamer-1.0/GstPipeline.html#GstPipeline.properties">
@@ -1514,6 +1906,7 @@
 <ANCHOR id="gst-pipeline-new" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-new">
 <ANCHOR id="gst-pipeline-get-bus" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-get-bus">
 <ANCHOR id="gst-pipeline-set-clock" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-set-clock">
+<ANCHOR id="gst-pipeline-get-pipeline-clock" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-get-pipeline-clock">
 <ANCHOR id="gst-pipeline-get-clock" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-get-clock">
 <ANCHOR id="gst-pipeline-use-clock" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-use-clock">
 <ANCHOR id="gst-pipeline-auto-clock" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-auto-clock">
@@ -1521,12 +1914,17 @@
 <ANCHOR id="gst-pipeline-get-auto-flush-bus" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-get-auto-flush-bus">
 <ANCHOR id="gst-pipeline-set-delay" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-set-delay">
 <ANCHOR id="gst-pipeline-get-delay" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-get-delay">
+<ANCHOR id="gst-pipeline-set-latency" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-set-latency">
+<ANCHOR id="gst-pipeline-get-latency" href="gstreamer-1.0/GstPipeline.html#gst-pipeline-get-latency">
 <ANCHOR id="GstPipeline.other_details" href="gstreamer-1.0/GstPipeline.html#GstPipeline.other_details">
 <ANCHOR id="GstPipeline-struct" href="gstreamer-1.0/GstPipeline.html#GstPipeline-struct">
 <ANCHOR id="GstPipelineFlags" href="gstreamer-1.0/GstPipeline.html#GstPipelineFlags">
+<ANCHOR id="GST-PIPELINE-FLAG-FIXED-CLOCK:CAPS" href="gstreamer-1.0/GstPipeline.html#GST-PIPELINE-FLAG-FIXED-CLOCK:CAPS">
+<ANCHOR id="GST-PIPELINE-FLAG-LAST:CAPS" href="gstreamer-1.0/GstPipeline.html#GST-PIPELINE-FLAG-LAST:CAPS">
 <ANCHOR id="GstPipeline.property-details" href="gstreamer-1.0/GstPipeline.html#GstPipeline.property-details">
 <ANCHOR id="GstPipeline--auto-flush-bus" href="gstreamer-1.0/GstPipeline.html#GstPipeline--auto-flush-bus">
 <ANCHOR id="GstPipeline--delay" href="gstreamer-1.0/GstPipeline.html#GstPipeline--delay">
+<ANCHOR id="GstPipeline--latency" href="gstreamer-1.0/GstPipeline.html#GstPipeline--latency">
 <ANCHOR id="GstPipeline.see-also" href="gstreamer-1.0/GstPipeline.html#GstPipeline.see-also">
 <ANCHOR id="GstPlugin" href="gstreamer-1.0/GstPlugin.html">
 <ANCHOR id="GstPlugin.functions" href="gstreamer-1.0/GstPlugin.html#GstPlugin.functions">
@@ -1565,11 +1963,20 @@
 <ANCHOR id="GstPlugin.other_details" href="gstreamer-1.0/GstPlugin.html#GstPlugin.other_details">
 <ANCHOR id="GST-PLUGIN-ERROR:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-ERROR:CAPS">
 <ANCHOR id="GstPluginError" href="gstreamer-1.0/GstPlugin.html#GstPluginError">
+<ANCHOR id="GST-PLUGIN-ERROR-MODULE:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-ERROR-MODULE:CAPS">
+<ANCHOR id="GST-PLUGIN-ERROR-DEPENDENCIES:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-ERROR-DEPENDENCIES:CAPS">
+<ANCHOR id="GST-PLUGIN-ERROR-NAME-MISMATCH:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-ERROR-NAME-MISMATCH:CAPS">
 <ANCHOR id="GstPlugin-struct" href="gstreamer-1.0/GstPlugin.html#GstPlugin-struct">
 <ANCHOR id="GstPluginDesc" href="gstreamer-1.0/GstPlugin.html#GstPluginDesc">
 <ANCHOR id="GST-LICENSE-UNKNOWN:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-LICENSE-UNKNOWN:CAPS">
 <ANCHOR id="GstPluginFlags" href="gstreamer-1.0/GstPlugin.html#GstPluginFlags">
+<ANCHOR id="GST-PLUGIN-FLAG-CACHED:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-FLAG-CACHED:CAPS">
+<ANCHOR id="GST-PLUGIN-FLAG-BLACKLISTED:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-FLAG-BLACKLISTED:CAPS">
 <ANCHOR id="GstPluginDependencyFlags" href="gstreamer-1.0/GstPlugin.html#GstPluginDependencyFlags">
+<ANCHOR id="GST-PLUGIN-DEPENDENCY-FLAG-NONE:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-NONE:CAPS">
+<ANCHOR id="GST-PLUGIN-DEPENDENCY-FLAG-RECURSE:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-RECURSE:CAPS">
+<ANCHOR id="GST-PLUGIN-DEPENDENCY-FLAG-PATHS-ARE-DEFAULT-ONLY:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-PATHS-ARE-DEFAULT-ONLY:CAPS">
+<ANCHOR id="GST-PLUGIN-DEPENDENCY-FLAG-FILE-NAME-IS-SUFFIX:CAPS" href="gstreamer-1.0/GstPlugin.html#GST-PLUGIN-DEPENDENCY-FLAG-FILE-NAME-IS-SUFFIX:CAPS">
 <ANCHOR id="GstPlugin.see-also" href="gstreamer-1.0/GstPlugin.html#GstPlugin.see-also">
 <ANCHOR id="GstPluginFeature" href="gstreamer-1.0/GstPluginFeature.html">
 <ANCHOR id="GstPluginFeature.functions" href="gstreamer-1.0/GstPluginFeature.html#GstPluginFeature.functions">
@@ -1594,6 +2001,10 @@
 <ANCHOR id="GstPluginFeature.other_details" href="gstreamer-1.0/GstPluginFeature.html#GstPluginFeature.other_details">
 <ANCHOR id="GstPluginFeature-struct" href="gstreamer-1.0/GstPluginFeature.html#GstPluginFeature-struct">
 <ANCHOR id="GstRank" href="gstreamer-1.0/GstPluginFeature.html#GstRank">
+<ANCHOR id="GST-RANK-NONE:CAPS" href="gstreamer-1.0/GstPluginFeature.html#GST-RANK-NONE:CAPS">
+<ANCHOR id="GST-RANK-MARGINAL:CAPS" href="gstreamer-1.0/GstPluginFeature.html#GST-RANK-MARGINAL:CAPS">
+<ANCHOR id="GST-RANK-SECONDARY:CAPS" href="gstreamer-1.0/GstPluginFeature.html#GST-RANK-SECONDARY:CAPS">
+<ANCHOR id="GST-RANK-PRIMARY:CAPS" href="gstreamer-1.0/GstPluginFeature.html#GST-RANK-PRIMARY:CAPS">
 <ANCHOR id="GstPluginFeature.see-also" href="gstreamer-1.0/GstPluginFeature.html#GstPluginFeature.see-also">
 <ANCHOR id="gstreamer-GstPoll" href="gstreamer-1.0/gstreamer-GstPoll.html">
 <ANCHOR id="gstreamer-GstPoll.functions" href="gstreamer-1.0/gstreamer-GstPoll.html#gstreamer-GstPoll.functions">
@@ -1642,9 +2053,22 @@
 <ANCHOR id="gst-preset-get-meta" href="gstreamer-1.0/GstPreset.html#gst-preset-get-meta">
 <ANCHOR id="gst-preset-set-app-dir" href="gstreamer-1.0/GstPreset.html#gst-preset-set-app-dir">
 <ANCHOR id="gst-preset-get-app-dir" href="gstreamer-1.0/GstPreset.html#gst-preset-get-app-dir">
+<ANCHOR id="gst-preset-is-editable" href="gstreamer-1.0/GstPreset.html#gst-preset-is-editable">
 <ANCHOR id="GstPreset.other_details" href="gstreamer-1.0/GstPreset.html#GstPreset.other_details">
 <ANCHOR id="GstPreset-struct" href="gstreamer-1.0/GstPreset.html#GstPreset-struct">
 <ANCHOR id="GstPresetInterface" href="gstreamer-1.0/GstPreset.html#GstPresetInterface">
+<ANCHOR id="gstreamer-GstProtectionMeta" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html">
+<ANCHOR id="gstreamer-GstProtectionMeta.functions" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gstreamer-GstProtectionMeta.functions">
+<ANCHOR id="gstreamer-GstProtectionMeta.other" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gstreamer-GstProtectionMeta.other">
+<ANCHOR id="gstreamer-GstProtectionMeta.includes" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gstreamer-GstProtectionMeta.includes">
+<ANCHOR id="gstreamer-GstProtectionMeta.description" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gstreamer-GstProtectionMeta.description">
+<ANCHOR id="gstreamer-GstProtectionMeta.functions_details" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gstreamer-GstProtectionMeta.functions_details">
+<ANCHOR id="gst-buffer-add-protection-meta" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gst-buffer-add-protection-meta">
+<ANCHOR id="gst-buffer-get-protection-meta" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gst-buffer-get-protection-meta">
+<ANCHOR id="gst-protection-select-system" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gst-protection-select-system">
+<ANCHOR id="gstreamer-GstProtectionMeta.other_details" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#gstreamer-GstProtectionMeta.other_details">
+<ANCHOR id="GstProtectionMeta" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#GstProtectionMeta">
+<ANCHOR id="GST-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS" href="gstreamer-1.0/gstreamer-GstProtectionMeta.html#GST-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS">
 <ANCHOR id="GstQuery" href="gstreamer-1.0/GstQuery.html">
 <ANCHOR id="GstQuery.functions" href="gstreamer-1.0/GstQuery.html#GstQuery.functions">
 <ANCHOR id="GstQuery.other" href="gstreamer-1.0/GstQuery.html#GstQuery.other">
@@ -1751,10 +2175,39 @@
 <ANCHOR id="GstQuery.other_details" href="gstreamer-1.0/GstQuery.html#GstQuery.other_details">
 <ANCHOR id="GstQuery-struct" href="gstreamer-1.0/GstQuery.html#GstQuery-struct">
 <ANCHOR id="GstQueryTypeFlags" href="gstreamer-1.0/GstQuery.html#GstQueryTypeFlags">
+<ANCHOR id="GST-QUERY-TYPE-UPSTREAM:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-TYPE-UPSTREAM:CAPS">
+<ANCHOR id="GST-QUERY-TYPE-DOWNSTREAM:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-TYPE-DOWNSTREAM:CAPS">
+<ANCHOR id="GST-QUERY-TYPE-SERIALIZED:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-TYPE-SERIALIZED:CAPS">
 <ANCHOR id="GST-QUERY-TYPE-BOTH:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-TYPE-BOTH:CAPS">
 <ANCHOR id="GstQueryType" href="gstreamer-1.0/GstQuery.html#GstQueryType">
+<ANCHOR id="GST-QUERY-UNKNOWN:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-UNKNOWN:CAPS">
+<ANCHOR id="GST-QUERY-POSITION:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-POSITION:CAPS">
+<ANCHOR id="GST-QUERY-DURATION:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-DURATION:CAPS">
+<ANCHOR id="GST-QUERY-LATENCY:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-LATENCY:CAPS">
+<ANCHOR id="GST-QUERY-JITTER:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-JITTER:CAPS">
+<ANCHOR id="GST-QUERY-RATE:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-RATE:CAPS">
+<ANCHOR id="GST-QUERY-SEEKING:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-SEEKING:CAPS">
+<ANCHOR id="GST-QUERY-SEGMENT:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-SEGMENT:CAPS">
+<ANCHOR id="GST-QUERY-CONVERT:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-CONVERT:CAPS">
+<ANCHOR id="GST-QUERY-FORMATS:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-FORMATS:CAPS">
+<ANCHOR id="GST-QUERY-BUFFERING:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-BUFFERING:CAPS">
+<ANCHOR id="GST-QUERY-CUSTOM:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-CUSTOM:CAPS">
+<ANCHOR id="GST-QUERY-URI:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-URI:CAPS">
+<ANCHOR id="GST-QUERY-ALLOCATION:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-ALLOCATION:CAPS">
+<ANCHOR id="GST-QUERY-SCHEDULING:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-SCHEDULING:CAPS">
+<ANCHOR id="GST-QUERY-ACCEPT-CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-ACCEPT-CAPS">
+<ANCHOR id="GST-QUERY-CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-CAPS">
+<ANCHOR id="GST-QUERY-DRAIN:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-DRAIN:CAPS">
+<ANCHOR id="GST-QUERY-CONTEXT:CAPS" href="gstreamer-1.0/GstQuery.html#GST-QUERY-CONTEXT:CAPS">
 <ANCHOR id="GstBufferingMode" href="gstreamer-1.0/GstQuery.html#GstBufferingMode">
+<ANCHOR id="GST-BUFFERING-STREAM:CAPS" href="gstreamer-1.0/GstQuery.html#GST-BUFFERING-STREAM:CAPS">
+<ANCHOR id="GST-BUFFERING-DOWNLOAD:CAPS" href="gstreamer-1.0/GstQuery.html#GST-BUFFERING-DOWNLOAD:CAPS">
+<ANCHOR id="GST-BUFFERING-TIMESHIFT:CAPS" href="gstreamer-1.0/GstQuery.html#GST-BUFFERING-TIMESHIFT:CAPS">
+<ANCHOR id="GST-BUFFERING-LIVE:CAPS" href="gstreamer-1.0/GstQuery.html#GST-BUFFERING-LIVE:CAPS">
 <ANCHOR id="GstSchedulingFlags" href="gstreamer-1.0/GstQuery.html#GstSchedulingFlags">
+<ANCHOR id="GST-SCHEDULING-FLAG-SEEKABLE:CAPS" href="gstreamer-1.0/GstQuery.html#GST-SCHEDULING-FLAG-SEEKABLE:CAPS">
+<ANCHOR id="GST-SCHEDULING-FLAG-SEQUENTIAL:CAPS" href="gstreamer-1.0/GstQuery.html#GST-SCHEDULING-FLAG-SEQUENTIAL:CAPS">
+<ANCHOR id="GST-SCHEDULING-FLAG-BANDWIDTH-LIMITED:CAPS" href="gstreamer-1.0/GstQuery.html#GST-SCHEDULING-FLAG-BANDWIDTH-LIMITED:CAPS">
 <ANCHOR id="GstQuery.see-also" href="gstreamer-1.0/GstQuery.html#GstQuery.see-also">
 <ANCHOR id="GstRegistry" href="gstreamer-1.0/GstRegistry.html">
 <ANCHOR id="GstRegistry.functions" href="gstreamer-1.0/GstRegistry.html#GstRegistry.functions">
@@ -1803,14 +2256,23 @@
 <ANCHOR id="gst-segment-free" href="gstreamer-1.0/GstSegment.html#gst-segment-free">
 <ANCHOR id="gst-segment-do-seek" href="gstreamer-1.0/GstSegment.html#gst-segment-do-seek">
 <ANCHOR id="gst-segment-to-running-time" href="gstreamer-1.0/GstSegment.html#gst-segment-to-running-time">
+<ANCHOR id="gst-segment-to-running-time-full" href="gstreamer-1.0/GstSegment.html#gst-segment-to-running-time-full">
 <ANCHOR id="gst-segment-to-stream-time" href="gstreamer-1.0/GstSegment.html#gst-segment-to-stream-time">
 <ANCHOR id="gst-segment-to-position" href="gstreamer-1.0/GstSegment.html#gst-segment-to-position">
 <ANCHOR id="gst-segment-set-running-time" href="gstreamer-1.0/GstSegment.html#gst-segment-set-running-time">
 <ANCHOR id="gst-segment-copy-into" href="gstreamer-1.0/GstSegment.html#gst-segment-copy-into">
 <ANCHOR id="gst-segment-offset-running-time" href="gstreamer-1.0/GstSegment.html#gst-segment-offset-running-time">
+<ANCHOR id="gst-segment-is-equal" href="gstreamer-1.0/GstSegment.html#gst-segment-is-equal">
 <ANCHOR id="GstSegment.other_details" href="gstreamer-1.0/GstSegment.html#GstSegment.other_details">
 <ANCHOR id="GstSegment-struct" href="gstreamer-1.0/GstSegment.html#GstSegment-struct">
 <ANCHOR id="GstSegmentFlags" href="gstreamer-1.0/GstSegment.html#GstSegmentFlags">
+<ANCHOR id="GST-SEGMENT-FLAG-NONE:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-NONE:CAPS">
+<ANCHOR id="GST-SEGMENT-FLAG-RESET:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-RESET:CAPS">
+<ANCHOR id="GST-SEGMENT-FLAG-TRICKMODE:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-TRICKMODE:CAPS">
+<ANCHOR id="GST-SEGMENT-FLAG-SKIP:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-SKIP:CAPS">
+<ANCHOR id="GST-SEGMENT-FLAG-SEGMENT:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-SEGMENT:CAPS">
+<ANCHOR id="GST-SEGMENT-FLAG-TRICKMODE-KEY-UNITS:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-TRICKMODE-KEY-UNITS:CAPS">
+<ANCHOR id="GST-SEGMENT-FLAG-TRICKMODE-NO-AUDIO:CAPS" href="gstreamer-1.0/GstSegment.html#GST-SEGMENT-FLAG-TRICKMODE-NO-AUDIO:CAPS">
 <ANCHOR id="GstSegment.see-also" href="gstreamer-1.0/GstSegment.html#GstSegment.see-also">
 <ANCHOR id="GstStructure" href="gstreamer-1.0/GstStructure.html">
 <ANCHOR id="GstStructure.functions" href="gstreamer-1.0/GstStructure.html#GstStructure.functions">
@@ -1821,6 +2283,7 @@
 <ANCHOR id="GstStructure.functions_details" href="gstreamer-1.0/GstStructure.html#GstStructure.functions_details">
 <ANCHOR id="GstStructureForeachFunc" href="gstreamer-1.0/GstStructure.html#GstStructureForeachFunc">
 <ANCHOR id="GstStructureMapFunc" href="gstreamer-1.0/GstStructure.html#GstStructureMapFunc">
+<ANCHOR id="GstStructureFilterMapFunc" href="gstreamer-1.0/GstStructure.html#GstStructureFilterMapFunc">
 <ANCHOR id="gst-structure-new-empty" href="gstreamer-1.0/GstStructure.html#gst-structure-new-empty">
 <ANCHOR id="gst-structure-new-id-empty" href="gstreamer-1.0/GstStructure.html#gst-structure-new-id-empty">
 <ANCHOR id="gst-structure-new" href="gstreamer-1.0/GstStructure.html#gst-structure-new">
@@ -1852,7 +2315,6 @@
 <ANCHOR id="gst-structure-remove-fields-valist" href="gstreamer-1.0/GstStructure.html#gst-structure-remove-fields-valist">
 <ANCHOR id="gst-structure-remove-all-fields" href="gstreamer-1.0/GstStructure.html#gst-structure-remove-all-fields">
 <ANCHOR id="gst-structure-get-field-type" href="gstreamer-1.0/GstStructure.html#gst-structure-get-field-type">
-<ANCHOR id="gst-structure-foreach" href="gstreamer-1.0/GstStructure.html#gst-structure-foreach">
 <ANCHOR id="gst-structure-n-fields" href="gstreamer-1.0/GstStructure.html#gst-structure-n-fields">
 <ANCHOR id="gst-structure-has-field" href="gstreamer-1.0/GstStructure.html#gst-structure-has-field">
 <ANCHOR id="gst-structure-has-field-typed" href="gstreamer-1.0/GstStructure.html#gst-structure-has-field-typed">
@@ -1874,7 +2336,9 @@
 <ANCHOR id="gst-structure-get-clock-time" href="gstreamer-1.0/GstStructure.html#gst-structure-get-clock-time">
 <ANCHOR id="gst-structure-get-enum" href="gstreamer-1.0/GstStructure.html#gst-structure-get-enum">
 <ANCHOR id="gst-structure-get-fraction" href="gstreamer-1.0/GstStructure.html#gst-structure-get-fraction">
+<ANCHOR id="gst-structure-foreach" href="gstreamer-1.0/GstStructure.html#gst-structure-foreach">
 <ANCHOR id="gst-structure-map-in-place" href="gstreamer-1.0/GstStructure.html#gst-structure-map-in-place">
+<ANCHOR id="gst-structure-filter-and-map-in-place" href="gstreamer-1.0/GstStructure.html#gst-structure-filter-and-map-in-place">
 <ANCHOR id="gst-structure-nth-field-name" href="gstreamer-1.0/GstStructure.html#gst-structure-nth-field-name">
 <ANCHOR id="gst-structure-set-parent-refcount" href="gstreamer-1.0/GstStructure.html#gst-structure-set-parent-refcount">
 <ANCHOR id="gst-structure-to-string" href="gstreamer-1.0/GstStructure.html#gst-structure-to-string">
@@ -1901,6 +2365,9 @@
 <ANCHOR id="gst-system-clock-set-default" href="gstreamer-1.0/GstSystemClock.html#gst-system-clock-set-default">
 <ANCHOR id="GstSystemClock.other_details" href="gstreamer-1.0/GstSystemClock.html#GstSystemClock.other_details">
 <ANCHOR id="GstClockType" href="gstreamer-1.0/GstSystemClock.html#GstClockType">
+<ANCHOR id="GST-CLOCK-TYPE-REALTIME:CAPS" href="gstreamer-1.0/GstSystemClock.html#GST-CLOCK-TYPE-REALTIME:CAPS">
+<ANCHOR id="GST-CLOCK-TYPE-MONOTONIC:CAPS" href="gstreamer-1.0/GstSystemClock.html#GST-CLOCK-TYPE-MONOTONIC:CAPS">
+<ANCHOR id="GST-CLOCK-TYPE-OTHER:CAPS" href="gstreamer-1.0/GstSystemClock.html#GST-CLOCK-TYPE-OTHER:CAPS">
 <ANCHOR id="GstSystemClock-struct" href="gstreamer-1.0/GstSystemClock.html#GstSystemClock-struct">
 <ANCHOR id="GstSystemClock.property-details" href="gstreamer-1.0/GstSystemClock.html#GstSystemClock.property-details">
 <ANCHOR id="GstSystemClock--clock-type" href="gstreamer-1.0/GstSystemClock.html#GstSystemClock--clock-type">
@@ -1981,8 +2448,23 @@
 <ANCHOR id="GstTagList.other_details" href="gstreamer-1.0/GstTagList.html#GstTagList.other_details">
 <ANCHOR id="GstTagList-struct" href="gstreamer-1.0/GstTagList.html#GstTagList-struct">
 <ANCHOR id="GstTagMergeMode" href="gstreamer-1.0/GstTagList.html#GstTagMergeMode">
+<ANCHOR id="GST-TAG-MERGE-UNDEFINED:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-UNDEFINED:CAPS">
+<ANCHOR id="GST-TAG-MERGE-REPLACE-ALL:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-REPLACE-ALL:CAPS">
+<ANCHOR id="GST-TAG-MERGE-REPLACE:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-REPLACE:CAPS">
+<ANCHOR id="GST-TAG-MERGE-APPEND:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-APPEND:CAPS">
+<ANCHOR id="GST-TAG-MERGE-PREPEND:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-PREPEND:CAPS">
+<ANCHOR id="GST-TAG-MERGE-KEEP:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-KEEP:CAPS">
+<ANCHOR id="GST-TAG-MERGE-KEEP-ALL:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-KEEP-ALL:CAPS">
+<ANCHOR id="GST-TAG-MERGE-COUNT:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-MERGE-COUNT:CAPS">
 <ANCHOR id="GstTagFlag" href="gstreamer-1.0/GstTagList.html#GstTagFlag">
+<ANCHOR id="GST-TAG-FLAG-UNDEFINED:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-FLAG-UNDEFINED:CAPS">
+<ANCHOR id="GST-TAG-FLAG-META:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-FLAG-META:CAPS">
+<ANCHOR id="GST-TAG-FLAG-ENCODED:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-FLAG-ENCODED:CAPS">
+<ANCHOR id="GST-TAG-FLAG-DECODED:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-FLAG-DECODED:CAPS">
+<ANCHOR id="GST-TAG-FLAG-COUNT:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-FLAG-COUNT:CAPS">
 <ANCHOR id="GstTagScope" href="gstreamer-1.0/GstTagList.html#GstTagScope">
+<ANCHOR id="GST-TAG-SCOPE-STREAM:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-SCOPE-STREAM:CAPS">
+<ANCHOR id="GST-TAG-SCOPE-GLOBAL:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-SCOPE-GLOBAL:CAPS">
 <ANCHOR id="GST-TAG-TITLE:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-TITLE:CAPS">
 <ANCHOR id="GST-TAG-TITLE-SORTNAME:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-TITLE-SORTNAME:CAPS">
 <ANCHOR id="GST-TAG-ARTIST:CAPS" href="gstreamer-1.0/GstTagList.html#GST-TAG-ARTIST:CAPS">
@@ -2118,6 +2600,9 @@
 <ANCHOR id="GstTask.other_details" href="gstreamer-1.0/GstTask.html#GstTask.other_details">
 <ANCHOR id="GstTask-struct" href="gstreamer-1.0/GstTask.html#GstTask-struct">
 <ANCHOR id="GstTaskState" href="gstreamer-1.0/GstTask.html#GstTaskState">
+<ANCHOR id="GST-TASK-STARTED:CAPS" href="gstreamer-1.0/GstTask.html#GST-TASK-STARTED:CAPS">
+<ANCHOR id="GST-TASK-STOPPED:CAPS" href="gstreamer-1.0/GstTask.html#GST-TASK-STOPPED:CAPS">
+<ANCHOR id="GST-TASK-PAUSED:CAPS" href="gstreamer-1.0/GstTask.html#GST-TASK-PAUSED:CAPS">
 <ANCHOR id="GstTask.see-also" href="gstreamer-1.0/GstTask.html#GstTask.see-also">
 <ANCHOR id="GstTaskPool" href="gstreamer-1.0/GstTaskPool.html">
 <ANCHOR id="GstTaskPool.functions" href="gstreamer-1.0/GstTaskPool.html#GstTaskPool.functions">
@@ -2184,9 +2669,22 @@
 <ANCHOR id="GstToc.other_details" href="gstreamer-1.0/GstToc.html#GstToc.other_details">
 <ANCHOR id="GstToc-struct" href="gstreamer-1.0/GstToc.html#GstToc-struct">
 <ANCHOR id="GstTocScope" href="gstreamer-1.0/GstToc.html#GstTocScope">
+<ANCHOR id="GST-TOC-SCOPE-GLOBAL:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-SCOPE-GLOBAL:CAPS">
+<ANCHOR id="GST-TOC-SCOPE-CURRENT:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-SCOPE-CURRENT:CAPS">
 <ANCHOR id="GstTocEntry-struct" href="gstreamer-1.0/GstToc.html#GstTocEntry-struct">
 <ANCHOR id="GstTocEntryType" href="gstreamer-1.0/GstToc.html#GstTocEntryType">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-ANGLE:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-ANGLE:CAPS">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-VERSION:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-VERSION:CAPS">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-EDITION:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-EDITION:CAPS">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-INVALID:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-INVALID:CAPS">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-TITLE:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-TITLE:CAPS">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-TRACK:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-TRACK:CAPS">
+<ANCHOR id="GST-TOC-ENTRY-TYPE-CHAPTER:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-ENTRY-TYPE-CHAPTER:CAPS">
 <ANCHOR id="GstTocLoopType" href="gstreamer-1.0/GstToc.html#GstTocLoopType">
+<ANCHOR id="GST-TOC-LOOP-NONE:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-LOOP-NONE:CAPS">
+<ANCHOR id="GST-TOC-LOOP-FORWARD:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-LOOP-FORWARD:CAPS">
+<ANCHOR id="GST-TOC-LOOP-REVERSE:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-LOOP-REVERSE:CAPS">
+<ANCHOR id="GST-TOC-LOOP-PING-PONG:CAPS" href="gstreamer-1.0/GstToc.html#GST-TOC-LOOP-PING-PONG:CAPS">
 <ANCHOR id="GstToc.see-also" href="gstreamer-1.0/GstToc.html#GstToc.see-also">
 <ANCHOR id="gstreamer-GstTocSetter" href="gstreamer-1.0/gstreamer-GstTocSetter.html">
 <ANCHOR id="gstreamer-GstTocSetter.functions" href="gstreamer-1.0/gstreamer-GstTocSetter.html#gstreamer-GstTocSetter.functions">
@@ -2215,6 +2713,12 @@
 <ANCHOR id="gstreamer-GstTypeFind.other_details" href="gstreamer-1.0/gstreamer-GstTypeFind.html#gstreamer-GstTypeFind.other_details">
 <ANCHOR id="GstTypeFind" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GstTypeFind">
 <ANCHOR id="GstTypeFindProbability" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GstTypeFindProbability">
+<ANCHOR id="GST-TYPE-FIND-NONE:CAPS" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GST-TYPE-FIND-NONE:CAPS">
+<ANCHOR id="GST-TYPE-FIND-MINIMUM:CAPS" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GST-TYPE-FIND-MINIMUM:CAPS">
+<ANCHOR id="GST-TYPE-FIND-POSSIBLE:CAPS" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GST-TYPE-FIND-POSSIBLE:CAPS">
+<ANCHOR id="GST-TYPE-FIND-LIKELY:CAPS" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GST-TYPE-FIND-LIKELY:CAPS">
+<ANCHOR id="GST-TYPE-FIND-NEARLY-CERTAIN:CAPS" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GST-TYPE-FIND-NEARLY-CERTAIN:CAPS">
+<ANCHOR id="GST-TYPE-FIND-MAXIMUM:CAPS" href="gstreamer-1.0/gstreamer-GstTypeFind.html#GST-TYPE-FIND-MAXIMUM:CAPS">
 <ANCHOR id="GstTypeFindFactory" href="gstreamer-1.0/GstTypeFindFactory.html">
 <ANCHOR id="GstTypeFindFactory.functions" href="gstreamer-1.0/GstTypeFindFactory.html#GstTypeFindFactory.functions">
 <ANCHOR id="GstTypeFindFactory.other" href="gstreamer-1.0/GstTypeFindFactory.html#GstTypeFindFactory.other">
@@ -2229,6 +2733,58 @@
 <ANCHOR id="gst-type-find-factory-call-function" href="gstreamer-1.0/GstTypeFindFactory.html#gst-type-find-factory-call-function">
 <ANCHOR id="GstTypeFindFactory.other_details" href="gstreamer-1.0/GstTypeFindFactory.html#GstTypeFindFactory.other_details">
 <ANCHOR id="GstTypeFindFactory-struct" href="gstreamer-1.0/GstTypeFindFactory.html#GstTypeFindFactory-struct">
+<ANCHOR id="gstreamer-GstUri" href="gstreamer-1.0/gstreamer-GstUri.html">
+<ANCHOR id="gstreamer-GstUri.functions" href="gstreamer-1.0/gstreamer-GstUri.html#gstreamer-GstUri.functions">
+<ANCHOR id="gstreamer-GstUri.other" href="gstreamer-1.0/gstreamer-GstUri.html#gstreamer-GstUri.other">
+<ANCHOR id="gstreamer-GstUri.includes" href="gstreamer-1.0/gstreamer-GstUri.html#gstreamer-GstUri.includes">
+<ANCHOR id="gstreamer-GstUri.description" href="gstreamer-1.0/gstreamer-GstUri.html#gstreamer-GstUri.description">
+<ANCHOR id="gstreamer-GstUri.functions_details" href="gstreamer-1.0/gstreamer-GstUri.html#gstreamer-GstUri.functions_details">
+<ANCHOR id="GST-URI-CAST:CAPS" href="gstreamer-1.0/gstreamer-GstUri.html#GST-URI-CAST:CAPS">
+<ANCHOR id="GST-URI-CONST-CAST:CAPS" href="gstreamer-1.0/gstreamer-GstUri.html#GST-URI-CONST-CAST:CAPS">
+<ANCHOR id="gst-uri-new" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-new">
+<ANCHOR id="gst-uri-new-with-base" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-new-with-base">
+<ANCHOR id="gst-uri-from-string" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-from-string">
+<ANCHOR id="gst-uri-from-string-with-base" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-from-string-with-base">
+<ANCHOR id="gst-uri-copy" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-copy">
+<ANCHOR id="gst-uri-equal" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-equal">
+<ANCHOR id="gst-uri-join" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-join">
+<ANCHOR id="gst-uri-join-strings" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-join-strings">
+<ANCHOR id="gst-uri-is-writable" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-is-writable">
+<ANCHOR id="gst-uri-make-writable" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-make-writable">
+<ANCHOR id="gst-uri-to-string" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-to-string">
+<ANCHOR id="gst-uri-ref" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-ref">
+<ANCHOR id="gst-uri-unref" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-unref">
+<ANCHOR id="gst-uri-is-normalized" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-is-normalized">
+<ANCHOR id="gst-uri-normalize" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-normalize">
+<ANCHOR id="gst-uri-get-scheme" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-scheme">
+<ANCHOR id="gst-uri-set-scheme" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-scheme">
+<ANCHOR id="gst-uri-get-userinfo" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-userinfo">
+<ANCHOR id="gst-uri-set-userinfo" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-userinfo">
+<ANCHOR id="gst-uri-get-host" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-host">
+<ANCHOR id="gst-uri-set-host" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-host">
+<ANCHOR id="gst-uri-get-port" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-port">
+<ANCHOR id="gst-uri-set-port" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-port">
+<ANCHOR id="gst-uri-get-path" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-path">
+<ANCHOR id="gst-uri-set-path" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-path">
+<ANCHOR id="gst-uri-get-path-string" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-path-string">
+<ANCHOR id="gst-uri-set-path-string" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-path-string">
+<ANCHOR id="gst-uri-get-path-segments" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-path-segments">
+<ANCHOR id="gst-uri-set-path-segments" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-path-segments">
+<ANCHOR id="gst-uri-append-path" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-append-path">
+<ANCHOR id="gst-uri-append-path-segment" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-append-path-segment">
+<ANCHOR id="gst-uri-get-query-string" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-query-string">
+<ANCHOR id="gst-uri-set-query-string" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-query-string">
+<ANCHOR id="gst-uri-get-query-table" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-query-table">
+<ANCHOR id="gst-uri-set-query-table" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-query-table">
+<ANCHOR id="gst-uri-get-query-value" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-query-value">
+<ANCHOR id="gst-uri-set-query-value" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-query-value">
+<ANCHOR id="gst-uri-remove-query-key" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-remove-query-key">
+<ANCHOR id="gst-uri-query-has-key" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-query-has-key">
+<ANCHOR id="gst-uri-get-query-keys" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-query-keys">
+<ANCHOR id="gst-uri-get-fragment" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-get-fragment">
+<ANCHOR id="gst-uri-set-fragment" href="gstreamer-1.0/gstreamer-GstUri.html#gst-uri-set-fragment">
+<ANCHOR id="gstreamer-GstUri.other_details" href="gstreamer-1.0/gstreamer-GstUri.html#gstreamer-GstUri.other_details">
+<ANCHOR id="GstUri" href="gstreamer-1.0/gstreamer-GstUri.html#GstUri">
 <ANCHOR id="gstreamer-GstUriHandler" href="gstreamer-1.0/gstreamer-GstUriHandler.html">
 <ANCHOR id="gstreamer-GstUriHandler.functions" href="gstreamer-1.0/gstreamer-GstUriHandler.html#gstreamer-GstUriHandler.functions">
 <ANCHOR id="GstURIHandler" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler">
@@ -2256,7 +2812,15 @@
 <ANCHOR id="GstURIHandler-struct" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler-struct">
 <ANCHOR id="GstURIHandlerInterface" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandlerInterface">
 <ANCHOR id="GstURIType" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIType">
+<ANCHOR id="GST-URI-UNKNOWN:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-UNKNOWN:CAPS">
+<ANCHOR id="GST-URI-SINK:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-SINK:CAPS">
+<ANCHOR id="GST-URI-SRC:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-SRC:CAPS">
 <ANCHOR id="GstURIError" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIError">
+<ANCHOR id="GST-URI-ERROR-UNSUPPORTED-PROTOCOL:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-ERROR-UNSUPPORTED-PROTOCOL:CAPS">
+<ANCHOR id="GST-URI-ERROR-BAD-URI:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-ERROR-BAD-URI:CAPS">
+<ANCHOR id="GST-URI-ERROR-BAD-STATE:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-ERROR-BAD-STATE:CAPS">
+<ANCHOR id="GST-URI-ERROR-BAD-REFERENCE:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-ERROR-BAD-REFERENCE:CAPS">
+<ANCHOR id="GST-URI-NO-PORT:CAPS" href="gstreamer-1.0/gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS">
 <ANCHOR id="gstreamer-GstUtils" href="gstreamer-1.0/gstreamer-GstUtils.html">
 <ANCHOR id="gstreamer-GstUtils.functions" href="gstreamer-1.0/gstreamer-GstUtils.html#gstreamer-GstUtils.functions">
 <ANCHOR id="gstreamer-GstUtils.other" href="gstreamer-1.0/gstreamer-GstUtils.html#gstreamer-GstUtils.other">
@@ -2342,6 +2906,9 @@
 <ANCHOR id="gst-util-array-binary-search" href="gstreamer-1.0/gstreamer-GstUtils.html#gst-util-array-binary-search">
 <ANCHOR id="gstreamer-GstUtils.other_details" href="gstreamer-1.0/gstreamer-GstUtils.html#gstreamer-GstUtils.other_details">
 <ANCHOR id="GstSearchMode" href="gstreamer-1.0/gstreamer-GstUtils.html#GstSearchMode">
+<ANCHOR id="GST-SEARCH-MODE-EXACT:CAPS" href="gstreamer-1.0/gstreamer-GstUtils.html#GST-SEARCH-MODE-EXACT:CAPS">
+<ANCHOR id="GST-SEARCH-MODE-BEFORE:CAPS" href="gstreamer-1.0/gstreamer-GstUtils.html#GST-SEARCH-MODE-BEFORE:CAPS">
+<ANCHOR id="GST-SEARCH-MODE-AFTER:CAPS" href="gstreamer-1.0/gstreamer-GstUtils.html#GST-SEARCH-MODE-AFTER:CAPS">
 <ANCHOR id="gstreamer-GstValue" href="gstreamer-1.0/gstreamer-GstValue.html">
 <ANCHOR id="gstreamer-GstValue.functions" href="gstreamer-1.0/gstreamer-GstValue.html#gstreamer-GstValue.functions">
 <ANCHOR id="gstreamer-GstValue.other" href="gstreamer-1.0/gstreamer-GstValue.html#gstreamer-GstValue.other">
@@ -2362,6 +2929,13 @@
 <ANCHOR id="GST-TYPE-BITMASK:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-TYPE-BITMASK:CAPS">
 <ANCHOR id="gst-value-set-bitmask" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-set-bitmask">
 <ANCHOR id="gst-value-get-bitmask" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-get-bitmask">
+<ANCHOR id="GST-VALUE-HOLDS-FLAG-SET:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-VALUE-HOLDS-FLAG-SET:CAPS">
+<ANCHOR id="GST-TYPE-FLAG-SET:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS">
+<ANCHOR id="gst-structure-get-flagset" href="gstreamer-1.0/gstreamer-GstValue.html#gst-structure-get-flagset">
+<ANCHOR id="gst-value-get-flagset-flags" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-get-flagset-flags">
+<ANCHOR id="gst-value-get-flagset-mask" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-get-flagset-mask">
+<ANCHOR id="gst-value-set-flagset" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-set-flagset">
+<ANCHOR id="GST-FLAG-SET-MASK-EXACT:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-FLAG-SET-MASK-EXACT:CAPS">
 <ANCHOR id="GST-VALUE-HOLDS-INT64-RANGE:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-VALUE-HOLDS-INT64-RANGE:CAPS">
 <ANCHOR id="GST-TYPE-INT64-RANGE:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-TYPE-INT64-RANGE:CAPS">
 <ANCHOR id="gst-value-set-int64-range" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-set-int64-range">
@@ -2440,6 +3014,7 @@
 <ANCHOR id="gst-value-array-get-value" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-array-get-value">
 <ANCHOR id="gst-value-array-prepend-value" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-array-prepend-value">
 <ANCHOR id="gst-value-fixate" href="gstreamer-1.0/gstreamer-GstValue.html#gst-value-fixate">
+<ANCHOR id="gst-flagset-register" href="gstreamer-1.0/gstreamer-GstValue.html#gst-flagset-register">
 <ANCHOR id="gstreamer-GstValue.other_details" href="gstreamer-1.0/gstreamer-GstValue.html#gstreamer-GstValue.other_details">
 <ANCHOR id="GST-FOURCC-FORMAT:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-FOURCC-FORMAT:CAPS">
 <ANCHOR id="GST-VALUE-EQUAL:CAPS" href="gstreamer-1.0/gstreamer-GstValue.html#GST-VALUE-EQUAL:CAPS">
@@ -2487,6 +3062,7 @@
 <ANCHOR id="gst-device-has-classes" href="gstreamer-1.0/gstreamer-GstDevice.html#gst-device-has-classes">
 <ANCHOR id="gst-device-has-classesv" href="gstreamer-1.0/gstreamer-GstDevice.html#gst-device-has-classesv">
 <ANCHOR id="gst-device-reconfigure-element" href="gstreamer-1.0/gstreamer-GstDevice.html#gst-device-reconfigure-element">
+<ANCHOR id="gst-device-get-properties" href="gstreamer-1.0/gstreamer-GstDevice.html#gst-device-get-properties">
 <ANCHOR id="gstreamer-GstDevice.other_details" href="gstreamer-1.0/gstreamer-GstDevice.html#gstreamer-GstDevice.other_details">
 <ANCHOR id="GstDevice" href="gstreamer-1.0/gstreamer-GstDevice.html#GstDevice">
 <ANCHOR id="GstDeviceClass" href="gstreamer-1.0/gstreamer-GstDevice.html#GstDeviceClass">
@@ -2620,17 +3196,59 @@
 <ANCHOR id="GST-DEBUG-BIN-TO-DOT-FILE-WITH-TS:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BIN-TO-DOT-FILE-WITH-TS:CAPS">
 <ANCHOR id="gst-debug-print-stack-trace" href="gstreamer-1.0/gstreamer-GstInfo.html#gst-debug-print-stack-trace">
 <ANCHOR id="GST-TIME-ARGS:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-TIME-ARGS:CAPS">
+<ANCHOR id="GST-STIME-ARGS:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-STIME-ARGS:CAPS">
+<ANCHOR id="gst-debug-bin-to-dot-data" href="gstreamer-1.0/gstreamer-GstInfo.html#gst-debug-bin-to-dot-data">
 <ANCHOR id="gst-debug-bin-to-dot-file" href="gstreamer-1.0/gstreamer-GstInfo.html#gst-debug-bin-to-dot-file">
 <ANCHOR id="gst-debug-bin-to-dot-file-with-ts" href="gstreamer-1.0/gstreamer-GstInfo.html#gst-debug-bin-to-dot-file-with-ts">
 <ANCHOR id="gstreamer-GstInfo.other_details" href="gstreamer-1.0/gstreamer-GstInfo.html#gstreamer-GstInfo.other_details">
 <ANCHOR id="GstDebugLevel" href="gstreamer-1.0/gstreamer-GstInfo.html#GstDebugLevel">
+<ANCHOR id="GST-LEVEL-NONE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-NONE:CAPS">
+<ANCHOR id="GST-LEVEL-ERROR:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-ERROR:CAPS">
+<ANCHOR id="GST-LEVEL-WARNING:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-WARNING:CAPS">
+<ANCHOR id="GST-LEVEL-FIXME:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-FIXME:CAPS">
+<ANCHOR id="GST-LEVEL-INFO:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-INFO:CAPS">
+<ANCHOR id="GST-LEVEL-DEBUG:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-DEBUG:CAPS">
+<ANCHOR id="GST-LEVEL-LOG:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-LOG:CAPS">
+<ANCHOR id="GST-LEVEL-TRACE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-TRACE:CAPS">
+<ANCHOR id="GST-LEVEL-MEMDUMP:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-MEMDUMP:CAPS">
+<ANCHOR id="GST-LEVEL-COUNT:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-COUNT:CAPS">
 <ANCHOR id="GST-LEVEL-DEFAULT:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-DEFAULT:CAPS">
+<ANCHOR id="GST-LEVEL-MAX:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-LEVEL-MAX:CAPS">
 <ANCHOR id="GstDebugColorFlags" href="gstreamer-1.0/gstreamer-GstInfo.html#GstDebugColorFlags">
+<ANCHOR id="GST-DEBUG-FG-BLACK:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-BLACK:CAPS">
+<ANCHOR id="GST-DEBUG-FG-RED:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-RED:CAPS">
+<ANCHOR id="GST-DEBUG-FG-GREEN:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-GREEN:CAPS">
+<ANCHOR id="GST-DEBUG-FG-YELLOW:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-YELLOW:CAPS">
+<ANCHOR id="GST-DEBUG-FG-BLUE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-BLUE:CAPS">
+<ANCHOR id="GST-DEBUG-FG-MAGENTA:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-MAGENTA:CAPS">
+<ANCHOR id="GST-DEBUG-FG-CYAN:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-CYAN:CAPS">
+<ANCHOR id="GST-DEBUG-FG-WHITE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-FG-WHITE:CAPS">
+<ANCHOR id="GST-DEBUG-BG-BLACK:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-BLACK:CAPS">
+<ANCHOR id="GST-DEBUG-BG-RED:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-RED:CAPS">
+<ANCHOR id="GST-DEBUG-BG-GREEN:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-GREEN:CAPS">
+<ANCHOR id="GST-DEBUG-BG-YELLOW:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-YELLOW:CAPS">
+<ANCHOR id="GST-DEBUG-BG-BLUE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-BLUE:CAPS">
+<ANCHOR id="GST-DEBUG-BG-MAGENTA:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-MAGENTA:CAPS">
+<ANCHOR id="GST-DEBUG-BG-CYAN:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-CYAN:CAPS">
+<ANCHOR id="GST-DEBUG-BG-WHITE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BG-WHITE:CAPS">
+<ANCHOR id="GST-DEBUG-BOLD:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-BOLD:CAPS">
+<ANCHOR id="GST-DEBUG-UNDERLINE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-UNDERLINE:CAPS">
 <ANCHOR id="GstDebugColorMode" href="gstreamer-1.0/gstreamer-GstInfo.html#GstDebugColorMode">
+<ANCHOR id="GST-DEBUG-COLOR-MODE-OFF:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-COLOR-MODE-OFF:CAPS">
+<ANCHOR id="GST-DEBUG-COLOR-MODE-ON:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-COLOR-MODE-ON:CAPS">
+<ANCHOR id="GST-DEBUG-COLOR-MODE-UNIX:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-COLOR-MODE-UNIX:CAPS">
 <ANCHOR id="GstDebugCategory" href="gstreamer-1.0/gstreamer-GstInfo.html#GstDebugCategory">
 <ANCHOR id="GstDebugGraphDetails" href="gstreamer-1.0/gstreamer-GstInfo.html#GstDebugGraphDetails">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-MEDIA-TYPE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-MEDIA-TYPE:CAPS">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-CAPS-DETAILS:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-CAPS-DETAILS:CAPS">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-NON-DEFAULT-PARAMS:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-NON-DEFAULT-PARAMS:CAPS">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-STATES:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-STATES:CAPS">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-FULL-PARAMS:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-FULL-PARAMS:CAPS">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-ALL:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-ALL:CAPS">
+<ANCHOR id="GST-DEBUG-GRAPH-SHOW-VERBOSE:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-DEBUG-GRAPH-SHOW-VERBOSE:CAPS">
 <ANCHOR id="GST-CAT-DEFAULT:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-CAT-DEFAULT:CAPS">
 <ANCHOR id="GST-TIME-FORMAT:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-TIME-FORMAT:CAPS">
+<ANCHOR id="GST-STIME-FORMAT:CAPS" href="gstreamer-1.0/gstreamer-GstInfo.html#GST-STIME-FORMAT:CAPS">
 <ANCHOR id="gstreamer-GstInfo.see-also" href="gstreamer-1.0/gstreamer-GstInfo.html#gstreamer-GstInfo.see-also">
 <ANCHOR id="annotation-glossterm-allow-none" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-allow-none">
 <ANCHOR id="annotation-glossterm-array" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-array">
@@ -2642,6 +3260,7 @@
 <ANCHOR id="annotation-glossterm-out" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-out">
 <ANCHOR id="annotation-glossterm-out callee-allocates" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-out callee-allocates">
 <ANCHOR id="annotation-glossterm-out caller-allocates" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-out caller-allocates">
+<ANCHOR id="annotation-glossterm-rename-to" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-rename-to">
 <ANCHOR id="annotation-glossterm-scope async" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-scope async">
 <ANCHOR id="annotation-glossterm-scope call" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-scope call">
 <ANCHOR id="annotation-glossterm-skip" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-skip">
@@ -2650,3 +3269,4 @@
 <ANCHOR id="annotation-glossterm-transfer full" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-transfer full">
 <ANCHOR id="annotation-glossterm-transfer none" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-transfer none">
 <ANCHOR id="annotation-glossterm-type" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-type">
+<ANCHOR id="annotation-glossterm-virtual" href="gstreamer-1.0/annotation-glossary.html#annotation-glossterm-virtual">
diff --git a/docs/gst/html/api-index-full.html b/docs/gst/html/ix01.html
similarity index 94%
rename from docs/gst/html/api-index-full.html
rename to docs/gst/html/ix01.html
index 0c0a7c5..8571eac 100644
--- a/docs/gst/html/api-index-full.html
+++ b/docs/gst/html/ix01.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: API Index</title>
+<title>API Index: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="prev" href="gstreamer-hierarchy.html" title="Object Hierarchy">
-<link rel="next" href="api-index-deprecated.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="ix02.html" title="Index of deprecated API">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -55,11 +55,11 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
 <td><a accesskey="p" href="gstreamer-hierarchy.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-deprecated.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ix02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="index">
 <div class="titlepage"><div><div><h1 class="title">
-<a name="api-index-full"></a>API Index</h1></div></div></div>
+<a name="id-1.7"></a>API Index</h1></div></div></div>
 <a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
 <dt>
 <a class="link" href="GstAllocator.html#GstAllocationParams-struct" title="struct GstAllocationParams">GstAllocationParams</a>, struct in <a class="link" href="GstAllocator.html" title="GstAllocator">GstAllocator</a>
@@ -259,6 +259,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBin.html#gst-bin-sync-children-states" title="gst_bin_sync_children_states ()">gst_bin_sync_children_states</a>, function in <a class="link" href="GstBin.html" title="GstBin">GstBin</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBuffer.html#GstBuffer-struct" title="struct GstBuffer">GstBuffer</a>, struct in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -307,6 +311,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#gst-buffer-add-parent-buffer-meta" title="gst_buffer_add_parent_buffer_meta ()">gst_buffer_add_parent_buffer_meta</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-buffer-add-protection-meta" title="gst_buffer_add_protection_meta ()">gst_buffer_add_protection_meta</a>, function in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBuffer.html#gst-buffer-append" title="gst_buffer_append ()">gst_buffer_append</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -327,6 +339,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#gst-buffer-copy-deep" title="gst_buffer_copy_deep ()">gst_buffer_copy_deep</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-copy-into" title="gst_buffer_copy_into ()">gst_buffer_copy_into</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -411,6 +427,14 @@
 </dt>
 <dd></dd>
 <dt>
+<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>, macro in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-buffer-get-protection-meta" title="gst_buffer_get_protection_meta()">gst_buffer_get_protection_meta</a>, macro in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBuffer.html#gst-buffer-get-size" title="gst_buffer_get_size ()">gst_buffer_get_size</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -455,6 +479,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBufferList.html#gst-buffer-list-copy-deep" title="gst_buffer_list_copy_deep ()">gst_buffer_list_copy_deep</a>, function in <a class="link" href="GstBufferList.html" title="GstBufferList">GstBufferList</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBufferList.html#gst-buffer-list-foreach" title="gst_buffer_list_foreach ()">gst_buffer_list_foreach</a>, function in <a class="link" href="GstBufferList.html" title="GstBufferList">GstBufferList</a>
 </dt>
 <dd></dd>
@@ -807,6 +835,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBus.html#gst-bus-remove-watch" title="gst_bus_remove_watch ()">gst_bus_remove_watch</a>, function in <a class="link" href="GstBus.html" title="GstBus">GstBus</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBus.html#gst-bus-set-flushing" title="gst_bus_set_flushing ()">gst_bus_set_flushing</a>, function in <a class="link" href="GstBus.html" title="GstBus">GstBus</a>
 </dt>
 <dd></dd>
@@ -844,14 +876,26 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCaps.html#GstCapsFilterMapFunc" title="GstCapsFilterMapFunc ()">GstCapsFilterMapFunc</a>, user_function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCaps.html#GstCapsFlags" title="enum GstCapsFlags">GstCapsFlags</a>, enum in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCaps.html#GstCapsForeachFunc" title="GstCapsForeachFunc ()">GstCapsForeachFunc</a>, user_function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCaps.html#GstCapsIntersectMode" title="enum GstCapsIntersectMode">GstCapsIntersectMode</a>, enum in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCaps.html#GstCapsMapFunc" title="GstCapsMapFunc ()">GstCapsMapFunc</a>, user_function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCaps.html#GST-CAPS-ANY:CAPS" title="GST_CAPS_ANY">GST_CAPS_ANY</a>, macro in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
 </dt>
 <dd></dd>
@@ -980,6 +1024,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCaps.html#gst-caps-filter-and-map-in-place" title="gst_caps_filter_and_map_in_place ()">gst_caps_filter_and_map_in_place</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCaps.html#gst-caps-fixate" title="gst_caps_fixate ()">gst_caps_fixate</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
 </dt>
 <dd></dd>
@@ -1000,6 +1048,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCaps.html#gst-caps-foreach" title="gst_caps_foreach ()">gst_caps_foreach</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCaps.html#gst-caps-from-string" title="gst_caps_from_string ()">gst_caps_from_string</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
 </dt>
 <dd></dd>
@@ -1076,6 +1128,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCaps.html#gst-caps-map-in-place" title="gst_caps_map_in_place ()">gst_caps_map_in_place</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCaps.html#gst-caps-merge" title="gst_caps_merge ()">gst_caps_merge</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
 </dt>
 <dd></dd>
@@ -1328,6 +1384,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#GstClock-synced" title="The “synced” signal">GstClock::synced</a>, object signal in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#GstClock--timeout" title="The “timeout” property">GstClock:timeout</a>, object property in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
@@ -1384,10 +1444,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#gst-clock-add-observation-unapplied" title="gst_clock_add_observation_unapplied ()">gst_clock_add_observation_unapplied</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#gst-clock-adjust-unlocked" title="gst_clock_adjust_unlocked ()">gst_clock_adjust_unlocked</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#gst-clock-adjust-with-calibration" title="gst_clock_adjust_with_calibration ()">gst_clock_adjust_with_calibration</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#GST-CLOCK-DIFF:CAPS" title="GST_CLOCK_DIFF()">GST_CLOCK_DIFF</a>, macro in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
@@ -1472,6 +1540,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#gst-clock-is-synced" title="gst_clock_is_synced ()">gst_clock_is_synced</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#gst-clock-new-periodic-id" title="gst_clock_new_periodic_id ()">gst_clock_new_periodic_id</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
@@ -1496,6 +1568,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#gst-clock-set-synced" title="gst_clock_set_synced ()">gst_clock_set_synced</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#gst-clock-set-timeout" title="gst_clock_set_timeout ()">gst_clock_set_timeout</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
@@ -1504,6 +1580,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#GST-CLOCK-STIME-IS-VALID:CAPS" title="GST_CLOCK_STIME_IS_VALID()">GST_CLOCK_STIME_IS_VALID</a>, macro in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#GST-CLOCK-STIME-NONE:CAPS" title="GST_CLOCK_STIME_NONE">GST_CLOCK_STIME_NONE</a>, macro in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#GST-CLOCK-TIME-IS-VALID:CAPS" title="GST_CLOCK_TIME_IS_VALID()">GST_CLOCK_TIME_IS_VALID</a>, macro in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
@@ -1516,6 +1600,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstClock.html#gst-clock-wait-for-sync" title="gst_clock_wait_for_sync ()">gst_clock_wait_for_sync</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstContext.html#GstContext-struct" title="GstContext">GstContext</a>, struct in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
 </dt>
 <dd></dd>
@@ -1785,7 +1873,7 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file" title="gst_debug_bin_to_dot_file ()">gst_debug_bin_to_dot_file</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-data" title="gst_debug_bin_to_dot_data ()">gst_debug_bin_to_dot_data</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1793,7 +1881,7 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file-with-ts" title="gst_debug_bin_to_dot_file_with_ts ()">gst_debug_bin_to_dot_file_with_ts</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file" title="gst_debug_bin_to_dot_file ()">gst_debug_bin_to_dot_file</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1801,6 +1889,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file-with-ts" title="gst_debug_bin_to_dot_file_with_ts ()">gst_debug_bin_to_dot_file_with_ts</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstInfo.html#GST-DEBUG-CATEGORY:CAPS" title="GST_DEBUG_CATEGORY()">GST_DEBUG_CATEGORY</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
 </dt>
 <dd></dd>
@@ -2017,6 +2109,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-get-properties" title="gst_device_get_properties ()">gst_device_get_properties</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstDevice.html#gst-device-has-classes" title="gst_device_has_classes ()">gst_device_has_classes</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
 </dt>
 <dd></dd>
@@ -2149,27 +2245,27 @@
 </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>
+<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>
+<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>
 <dt>
-<a class="link" href="gstreamer-gstconfig.html#GST-DISABLE-PARSE:CAPS" title="GST_DISABLE_PARSE">GST_DISABLE_PARSE</a>, macro in <a class="link" href="gstreamer-gstconfig.html" title="gstconfig">gstconfig</a>
+<a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-PARSE:CAPS" title="GST_DISABLE_PARSE">GST_DISABLE_PARSE</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-PLUGIN:CAPS" title="GST_DISABLE_PLUGIN">GST_DISABLE_PLUGIN</a>, macro in <a class="link" href="gstreamer-gstconfig.html" title="gstconfig">gstconfig</a>
+<a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-PLUGIN:CAPS" title="GST_DISABLE_PLUGIN">GST_DISABLE_PLUGIN</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-REGISTRY:CAPS" title="GST_DISABLE_REGISTRY">GST_DISABLE_REGISTRY</a>, macro in <a class="link" href="gstreamer-gstconfig.html" title="gstconfig">gstconfig</a>
+<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>
+<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>
@@ -2362,6 +2458,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DECRYPTOR:CAPS" title="GST_ELEMENT_FACTORY_TYPE_DECRYPTOR">GST_ELEMENT_FACTORY_TYPE_DECRYPTOR</a>, macro in <a class="link" href="GstElementFactory.html" title="GstElementFactory">GstElementFactory</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-DEMUXER:CAPS" title="GST_ELEMENT_FACTORY_TYPE_DEMUXER">GST_ELEMENT_FACTORY_TYPE_DEMUXER</a>, macro in <a class="link" href="GstElementFactory.html" title="GstElementFactory">GstElementFactory</a>
 </dt>
 <dd></dd>
@@ -2374,6 +2474,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-ENCRYPTOR:CAPS" title="GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR">GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR</a>, macro in <a class="link" href="GstElementFactory.html" title="GstElementFactory">GstElementFactory</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElementFactory.html#GST-ELEMENT-FACTORY-TYPE-FORMATTER:CAPS" title="GST_ELEMENT_FACTORY_TYPE_FORMATTER">GST_ELEMENT_FACTORY_TYPE_FORMATTER</a>, macro in <a class="link" href="GstElementFactory.html" title="GstElementFactory">GstElementFactory</a>
 </dt>
 <dd></dd>
@@ -2814,6 +2918,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-new-protection" title="gst_event_new_protection ()">gst_event_new_protection</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-qos" title="gst_event_new_qos ()">gst_event_new_qos</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -2882,6 +2990,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-parse-protection" title="gst_event_parse_protection ()">gst_event_parse_protection</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-qos" title="gst_event_parse_qos ()">gst_event_parse_qos</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -3011,6 +3123,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstValue.html#gst-flagset-register" title="gst_flagset_register ()">gst_flagset_register</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#GST-FLAG-SET-MASK-EXACT:CAPS" title="GST_FLAG_SET_MASK_EXACT">GST_FLAG_SET_MASK_EXACT</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn">GstFlowReturn</a>, enum in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -3193,11 +3313,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstIterator.html#GstIterator" title="struct GstIterator">GstIterator</a>, struct in <a class="link" href="gstreamer-GstIterator.html" title="GstIterator">GstIterator</a>
+<a class="link" href="gstreamer-GstIterator.html#GST-ITERATOR:CAPS" title="GST_ITERATOR()">GST_ITERATOR</a>, macro in <a class="link" href="gstreamer-GstIterator.html" title="GstIterator">GstIterator</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstIterator.html#GST-ITERATOR:CAPS" title="GST_ITERATOR()">GST_ITERATOR</a>, macro in <a class="link" href="gstreamer-GstIterator.html" title="GstIterator">GstIterator</a>
+<a class="link" href="gstreamer-GstIterator.html#GstIterator" title="struct GstIterator">GstIterator</a>, struct in <a class="link" href="gstreamer-GstIterator.html" title="GstIterator">GstIterator</a>
 </dt>
 <dd></dd>
 <dt>
@@ -3302,6 +3422,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstInfo.html#GST-LEVEL-MAX:CAPS" title="GST_LEVEL_MAX">GST_LEVEL_MAX</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstGError.html#GstLibraryError" title="enum GstLibraryError">GstLibraryError</a>, enum in <a class="link" href="gstreamer-GstGError.html" title="GstGError">GstGError</a>
 </dt>
 <dd></dd>
@@ -3379,6 +3503,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMemory.html#GstMemoryMapFullFunction" title="GstMemoryMapFullFunction ()">GstMemoryMapFullFunction</a>, user_function in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMemory.html#GstMemoryMapFunction" title="GstMemoryMapFunction ()">GstMemoryMapFunction</a>, user_function in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
 </dt>
 <dd></dd>
@@ -3387,6 +3515,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMemory.html#GstMemoryUnmapFullFunction" title="GstMemoryUnmapFullFunction ()">GstMemoryUnmapFullFunction</a>, user_function in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMemory.html#GstMemoryUnmapFunction" title="GstMemoryUnmapFunction ()">GstMemoryUnmapFunction</a>, user_function in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
 </dt>
 <dd></dd>
@@ -4165,6 +4297,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstObject.html#gst-object-has-as-ancestor" title="gst_object_has_as_ancestor ()">gst_object_has_as_ancestor</a>, function in <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstObject.html#gst-object-has-as-parent" title="gst_object_has_as_parent ()">gst_object_has_as_parent</a>, function in <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstObject.html#GST-OBJECT-LOCK:CAPS" title="GST_OBJECT_LOCK()">GST_OBJECT_LOCK</a>, macro in <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
 </dt>
 <dd></dd>
@@ -4266,6 +4406,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPad.html#GstPad--offset" title="The “offset” property">GstPad:offset</a>, object property in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#GstPad--template" title="The “template” property">GstPad:template</a>, object property in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -4538,6 +4682,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPad.html#GST-PAD-IS-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_IS_ACCEPT_TEMPLATE()">GST_PAD_IS_ACCEPT_TEMPLATE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#GST-PAD-IS-ACTIVE:CAPS" title="GST_PAD_IS_ACTIVE()">GST_PAD_IS_ACTIVE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -4546,11 +4694,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#gst-pad-is-blocked" title="gst_pad_is_blocked ()">gst_pad_is_blocked</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#GST-PAD-IS-BLOCKED:CAPS" title="GST_PAD_IS_BLOCKED()">GST_PAD_IS_BLOCKED</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#GST-PAD-IS-BLOCKED:CAPS" title="GST_PAD_IS_BLOCKED()">GST_PAD_IS_BLOCKED</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#gst-pad-is-blocked" title="gst_pad_is_blocked ()">gst_pad_is_blocked</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
@@ -4574,11 +4722,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#gst-pad-is-linked" title="gst_pad_is_linked ()">gst_pad_is_linked</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#GST-PAD-IS-LINKED:CAPS" title="GST_PAD_IS_LINKED()">GST_PAD_IS_LINKED</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#GST-PAD-IS-LINKED:CAPS" title="GST_PAD_IS_LINKED()">GST_PAD_IS_LINKED</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#gst-pad-is-linked" title="gst_pad_is_linked ()">gst_pad_is_linked</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
@@ -4842,6 +4990,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPad.html#GST-PAD-SET-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_SET_ACCEPT_TEMPLATE()">GST_PAD_SET_ACCEPT_TEMPLATE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#gst-pad-set-activatemode-function" title="gst_pad_set_activatemode_function()">gst_pad_set_activatemode_function</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -5022,6 +5174,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPad.html#GST-PAD-UNSET-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_UNSET_ACCEPT_TEMPLATE()">GST_PAD_UNSET_ACCEPT_TEMPLATE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#GST-PAD-UNSET-FLUSHING:CAPS" title="GST_PAD_UNSET_FLUSHING()">GST_PAD_UNSET_FLUSHING</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -5070,6 +5226,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta">GstParentBufferMeta</a>, struct in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstParse.html#GstParseContext-struct" title="GstParseContext">GstParseContext</a>, struct in <a class="link" href="gstreamer-GstParse.html" title="GstParse">GstParse</a>
 </dt>
 <dd></dd>
@@ -5138,6 +5298,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPipeline.html#GstPipeline--latency" title="The “latency” property">GstPipeline:latency</a>, object property in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPipeline.html#GstPipelineFlags" title="enum GstPipelineFlags">GstPipelineFlags</a>, enum in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
 </dt>
 <dd></dd>
@@ -5162,6 +5326,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPipeline.html#gst-pipeline-get-latency" title="gst_pipeline_get_latency ()">gst_pipeline_get_latency</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPipeline.html#gst-pipeline-get-pipeline-clock" title="gst_pipeline_get_pipeline_clock ()">gst_pipeline_get_pipeline_clock</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPipeline.html#gst-pipeline-new" title="gst_pipeline_new ()">gst_pipeline_new</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
 </dt>
 <dd></dd>
@@ -5178,6 +5350,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPipeline.html#gst-pipeline-set-latency" title="gst_pipeline_set_latency ()">gst_pipeline_set_latency</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPipeline.html#gst-pipeline-use-clock" title="gst_pipeline_use_clock ()">gst_pipeline_use_clock</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
 </dt>
 <dd></dd>
@@ -5410,11 +5586,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstPoll.html#gst-poll-fd-init" title="gst_poll_fd_init ()">gst_poll_fd_init</a>, function in <a class="link" href="gstreamer-GstPoll.html" title="GstPoll">GstPoll</a>
+<a class="link" href="gstreamer-GstPoll.html#GST-POLL-FD-INIT:CAPS" title="GST_POLL_FD_INIT">GST_POLL_FD_INIT</a>, macro in <a class="link" href="gstreamer-GstPoll.html" title="GstPoll">GstPoll</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstPoll.html#GST-POLL-FD-INIT:CAPS" title="GST_POLL_FD_INIT">GST_POLL_FD_INIT</a>, macro in <a class="link" href="gstreamer-GstPoll.html" title="GstPoll">GstPoll</a>
+<a class="link" href="gstreamer-GstPoll.html#gst-poll-fd-init" title="gst_poll_fd_init ()">gst_poll_fd_init</a>, function in <a class="link" href="gstreamer-GstPoll.html" title="GstPoll">GstPoll</a>
 </dt>
 <dd></dd>
 <dt>
@@ -5490,6 +5666,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPreset.html#gst-preset-is-editable" title="gst_preset_is_editable ()">gst_preset_is_editable</a>, function in <a class="link" href="GstPreset.html" title="GstPreset">GstPreset</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPreset.html#gst-preset-load-preset" title="gst_preset_load_preset ()">gst_preset_load_preset</a>, function in <a class="link" href="GstPreset.html" title="GstPreset">GstPreset</a>
 </dt>
 <dd></dd>
@@ -5514,6 +5694,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta">GstProtectionMeta</a>, struct in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-protection-select-system" title="gst_protection_select_system ()">gst_protection_select_system</a>, function in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#GST-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS" title="GST_PROTECTION_SYSTEM_ID_CAPS_FIELD">GST_PROTECTION_SYSTEM_ID_CAPS_FIELD</a>, macro in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstGhostPad.html#GstProxyPad-struct" title="struct GstProxyPad">GstProxyPad</a>, struct in <a class="link" href="GstGhostPad.html" title="GstGhostPad">GstGhostPad</a>
 </dt>
 <dd></dd>
@@ -6181,6 +6373,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstSample.html#gst-sample-get-buffer-list" title="gst_sample_get_buffer_list ()">gst_sample_get_buffer_list</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstSample.html#gst-sample-get-caps" title="gst_sample_get_caps ()">gst_sample_get_caps</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
 </dt>
 <dd></dd>
@@ -6201,6 +6397,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstSample.html#gst-sample-set-buffer-list" title="gst_sample_set_buffer_list ()">gst_sample_set_buffer_list</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstSample.html#gst-sample-unref" title="gst_sample_unref ()">gst_sample_unref</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
 </dt>
 <dd></dd>
@@ -6257,6 +6457,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstSegment.html#gst-segment-is-equal" title="gst_segment_is_equal ()">gst_segment_is_equal</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstSegment.html#gst-segment-new" title="gst_segment_new ()">gst_segment_new</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
 </dt>
 <dd></dd>
@@ -6277,6 +6481,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstSegment.html#gst-segment-to-running-time-full" title="gst_segment_to_running_time_full ()">gst_segment_to_running_time_full</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstSegment.html#gst-segment-to-stream-time" title="gst_segment_to_stream_time ()">gst_segment_to_stream_time</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
 </dt>
 <dd></dd>
@@ -6289,11 +6497,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstElement.html#GstState" title="enum GstState">GstState</a>, enum in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+<a class="link" href="GstElement.html#GST-STATE:CAPS" title="GST_STATE()">GST_STATE</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstElement.html#GST-STATE:CAPS" title="GST_STATE()">GST_STATE</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+<a class="link" href="GstElement.html#GstState" title="enum GstState">GstState</a>, enum in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
 <dt>
@@ -6385,6 +6593,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstInfo.html#GST-STIME-ARGS:CAPS" title="GST_STIME_ARGS()">GST_STIME_ARGS</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#GST-STIME-FORMAT:CAPS" title="GST_STIME_FORMAT">GST_STIME_FORMAT</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</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>
@@ -6409,6 +6625,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstStructure.html#GstStructureFilterMapFunc" title="GstStructureFilterMapFunc ()">GstStructureFilterMapFunc</a>, user_function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstStructure.html#GstStructureForeachFunc" title="GstStructureForeachFunc ()">GstStructureForeachFunc</a>, user_function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
 </dt>
 <dd></dd>
@@ -6425,6 +6645,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstStructure.html#gst-structure-filter-and-map-in-place" title="gst_structure_filter_and_map_in_place ()">gst_structure_filter_and_map_in_place</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstStructure.html#gst-structure-fixate" title="gst_structure_fixate ()">gst_structure_fixate</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
 </dt>
 <dd></dd>
@@ -6497,6 +6721,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstValue.html#gst-structure-get-flagset" title="gst_structure_get_flagset ()">gst_structure_get_flagset</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstStructure.html#gst-structure-get-fraction" title="gst_structure_get_fraction ()">gst_structure_get_fraction</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
 </dt>
 <dd></dd>
@@ -7798,6 +8026,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET">GST_TYPE_FLAG_SET</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstValue.html#GST-TYPE-FRACTION:CAPS" title="GST_TYPE_FRACTION">GST_TYPE_FRACTION</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
 </dt>
 <dd></dd>
@@ -7823,6 +8055,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#GstUri" title="GstUri">GstUri</a>, struct in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#GstURIError" title="enum GstURIError">GstURIError</a>, enum in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
@@ -7839,22 +8075,102 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-append-path" title="gst_uri_append_path ()">gst_uri_append_path</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-append-path-segment" title="gst_uri_append_path_segment ()">gst_uri_append_path_segment</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#GST-URI-CAST:CAPS" title="GST_URI_CAST()">GST_URI_CAST</a>, macro in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-construct" title="gst_uri_construct ()">gst_uri_construct</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#GST-URI-CONST-CAST:CAPS" title="GST_URI_CONST_CAST()">GST_URI_CONST_CAST</a>, macro in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-copy" title="gst_uri_copy ()">gst_uri_copy</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-equal" title="gst_uri_equal ()">gst_uri_equal</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-error-quark" title="gst_uri_error_quark ()">gst_uri_error_quark</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-from-string" title="gst_uri_from_string ()">gst_uri_from_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-from-string-with-base" title="gst_uri_from_string_with_base ()">gst_uri_from_string_with_base</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-fragment" title="gst_uri_get_fragment ()">gst_uri_get_fragment</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-host" title="gst_uri_get_host ()">gst_uri_get_host</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-get-location" title="gst_uri_get_location ()">gst_uri_get_location</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path" title="gst_uri_get_path ()">gst_uri_get_path</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path-segments" title="gst_uri_get_path_segments ()">gst_uri_get_path_segments</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path-string" title="gst_uri_get_path_string ()">gst_uri_get_path_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-port" title="gst_uri_get_port ()">gst_uri_get_port</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-get-protocol" title="gst_uri_get_protocol ()">gst_uri_get_protocol</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-keys" title="gst_uri_get_query_keys ()">gst_uri_get_query_keys</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-string" title="gst_uri_get_query_string ()">gst_uri_get_query_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-table" title="gst_uri_get_query_table ()">gst_uri_get_query_table</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-value" title="gst_uri_get_query_value ()">gst_uri_get_query_value</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-scheme" title="gst_uri_get_scheme ()">gst_uri_get_scheme</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-userinfo" title="gst_uri_get_userinfo ()">gst_uri_get_userinfo</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-handler-get-protocols" title="gst_uri_handler_get_protocols ()">gst_uri_handler_get_protocols</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
@@ -7875,10 +8191,46 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-is-normalized" title="gst_uri_is_normalized ()">gst_uri_is_normalized</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-is-valid" title="gst_uri_is_valid ()">gst_uri_is_valid</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-is-writable" title="gst_uri_is_writable ()">gst_uri_is_writable</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-join" title="gst_uri_join ()">gst_uri_join</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-join-strings" title="gst_uri_join_strings ()">gst_uri_join_strings</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-make-writable" title="gst_uri_make_writable ()">gst_uri_make_writable</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-new" title="gst_uri_new ()">gst_uri_new</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-new-with-base" title="gst_uri_new_with_base ()">gst_uri_new_with_base</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-normalize" title="gst_uri_normalize ()">gst_uri_normalize</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUriHandler.html#GST-URI-NO-PORT:CAPS" title="GST_URI_NO_PORT">GST_URI_NO_PORT</a>, macro in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#gst-uri-protocol-is-supported" title="gst_uri_protocol_is_supported ()">gst_uri_protocol_is_supported</a>, function in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
@@ -7887,10 +8239,74 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-query-has-key" title="gst_uri_query_has_key ()">gst_uri_query_has_key</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-ref" title="gst_uri_ref ()">gst_uri_ref</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-remove-query-key" title="gst_uri_remove_query_key ()">gst_uri_remove_query_key</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-fragment" title="gst_uri_set_fragment ()">gst_uri_set_fragment</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-host" title="gst_uri_set_host ()">gst_uri_set_host</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path" title="gst_uri_set_path ()">gst_uri_set_path</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path-segments" title="gst_uri_set_path_segments ()">gst_uri_set_path_segments</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path-string" title="gst_uri_set_path_string ()">gst_uri_set_path_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-port" title="gst_uri_set_port ()">gst_uri_set_port</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-string" title="gst_uri_set_query_string ()">gst_uri_set_query_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-table" title="gst_uri_set_query_table ()">gst_uri_set_query_table</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-value" title="gst_uri_set_query_value ()">gst_uri_set_query_value</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-scheme" title="gst_uri_set_scheme ()">gst_uri_set_scheme</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-userinfo" title="gst_uri_set_userinfo ()">gst_uri_set_userinfo</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-to-string" title="gst_uri_to_string ()">gst_uri_to_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstUriHandler.html#GST-URI-TYPE-IS-VALID:CAPS" title="GST_URI_TYPE_IS_VALID()">GST_URI_TYPE_IS_VALID</a>, macro in <a class="link" href="gstreamer-GstUriHandler.html" title="GstUriHandler">GstUriHandler</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-unref" title="gst_uri_unref ()">gst_uri_unref</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstClock.html#GST-USECOND:CAPS" title="GST_USECOND">GST_USECOND</a>, macro in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
 </dt>
 <dd></dd>
@@ -8084,6 +8500,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-get-flagset-flags" title="gst_value_get_flagset_flags ()">gst_value_get_flagset_flags</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-get-flagset-mask" title="gst_value_get_flagset_mask ()">gst_value_get_flagset_mask</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstValue.html#gst-value-get-fraction-denominator" title="gst_value_get_fraction_denominator ()">gst_value_get_fraction_denominator</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
 </dt>
 <dd></dd>
@@ -8164,6 +8588,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstValue.html#GST-VALUE-HOLDS-FLAG-SET:CAPS" title="GST_VALUE_HOLDS_FLAG_SET()">GST_VALUE_HOLDS_FLAG_SET</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstValue.html#GST-VALUE-HOLDS-FRACTION:CAPS" title="GST_VALUE_HOLDS_FRACTION()">GST_VALUE_HOLDS_FRACTION</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
 </dt>
 <dd></dd>
@@ -8268,6 +8696,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-set-flagset" title="gst_value_set_flagset ()">gst_value_set_flagset</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstValue.html#gst-value-set-fraction" title="gst_value_set_fraction ()">gst_value_set_fraction</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
 </dt>
 <dd></dd>
@@ -8410,7 +8842,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/api-index-deprecated.html b/docs/gst/html/ix02.html
similarity index 64%
rename from docs/gst/html/api-index-deprecated.html
rename to docs/gst/html/ix02.html
index e4a7c38..cd9ed14 100644
--- a/docs/gst/html/api-index-deprecated.html
+++ b/docs/gst/html/ix02.html
@@ -2,33 +2,40 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: Index of deprecated API</title>
+<title>Index of deprecated API: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
-<link rel="prev" href="api-index-full.html" title="API Index">
-<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="prev" href="ix01.html" title="API Index">
+<link rel="next" href="ix03.html" title="Index of new API in 1.6">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxM">M</a>
                      <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxO">O</a>
+                     <span class="dim">|</span> 
                   <a class="shortcut" href="#idxT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="ix01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix03.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="index">
 <div class="titlepage"><div><div><h1 class="title">
-<a name="api-index-deprecated"></a>Index of deprecated API</h1></div></div></div>
+<a name="id-1.8"></a>Index of deprecated API</h1></div></div></div>
 <a name="idx"></a><a name="idxM"></a><h3 class="title">M</h3>
 <dt>
 <a class="link" href="gstreamer-GstMeta.html#GST-META-TAG-MEMORY:CAPS" title="GST_META_TAG_MEMORY">GST_META_TAG_MEMORY</a>, macro in <a class="link" href="gstreamer-GstMeta.html" title="GstMeta">GstMeta</a>
 </dt>
 <dd></dd>
+<a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="GstObject.html#gst-object-has-ancestor" title="gst_object_has_ancestor ()">gst_object_has_ancestor</a>, function in <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
+</dt>
+<dd></dd>
 <a name="idxT"></a><h3 class="title">T</h3>
 <dt>
 <a class="link" href="GstTagList.html#gst-tag-list-free" title="gst_tag_list_free()">gst_tag_list_free</a>, macro in <a class="link" href="GstTagList.html" title="GstTagList">GstTagList</a>
@@ -36,7 +43,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/ix03.html b/docs/gst/html/ix03.html
new file mode 100644
index 0000000..6e1902b
--- /dev/null
+++ b/docs/gst/html/ix03.html
@@ -0,0 +1,411 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.6: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="prev" href="ix02.html" title="Index of deprecated API">
+<link rel="next" href="ix04.html" title="Index of new API in 1.4">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxC">C</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxD">D</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxE">E</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxF">F</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxL">L</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxO">O</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxP">P</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxS">S</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxT">T</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxU">U</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxV">V</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix02.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix04.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.9"></a>Index of new API in 1.6</h1></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBin.html#gst-bin-sync-children-states" title="gst_bin_sync_children_states ()">gst_bin_sync_children_states</a>, function in <a class="link" href="GstBin.html" title="GstBin">GstBin</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBuffer.html#gst-buffer-add-parent-buffer-meta" title="gst_buffer_add_parent_buffer_meta ()">gst_buffer_add_parent_buffer_meta</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-buffer-add-protection-meta" title="gst_buffer_add_protection_meta ()">gst_buffer_add_protection_meta</a>, function in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBuffer.html#gst-buffer-copy-deep" title="gst_buffer_copy_deep ()">gst_buffer_copy_deep</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBufferList.html#gst-buffer-list-copy-deep" title="gst_buffer_list_copy_deep ()">gst_buffer_list_copy_deep</a>, function in <a class="link" href="GstBufferList.html" title="GstBufferList">GstBufferList</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBus.html#gst-bus-remove-watch" title="gst_bus_remove_watch ()">gst_bus_remove_watch</a>, function in <a class="link" href="GstBus.html" title="GstBus">GstBus</a>
+</dt>
+<dd></dd>
+<a name="idxC"></a><h3 class="title">C</h3>
+<dt>
+<a class="link" href="GstCaps.html#GstCapsForeachFunc" title="GstCapsForeachFunc ()">GstCapsForeachFunc</a>, user_function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-filter-and-map-in-place" title="gst_caps_filter_and_map_in_place ()">gst_caps_filter_and_map_in_place</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-foreach" title="gst_caps_foreach ()">gst_caps_foreach</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-map-in-place" title="gst_caps_map_in_place ()">gst_caps_map_in_place</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#GstClock-synced" title="The “synced” signal">GstClock::synced</a>, object signal in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#gst-clock-add-observation-unapplied" title="gst_clock_add_observation_unapplied ()">gst_clock_add_observation_unapplied</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#gst-clock-adjust-with-calibration" title="gst_clock_adjust_with_calibration ()">gst_clock_adjust_with_calibration</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#gst-clock-is-synced" title="gst_clock_is_synced ()">gst_clock_is_synced</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#gst-clock-set-synced" title="gst_clock_set_synced ()">gst_clock_set_synced</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#GST-CLOCK-STIME-IS-VALID:CAPS" title="GST_CLOCK_STIME_IS_VALID()">GST_CLOCK_STIME_IS_VALID</a>, macro in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstClock.html#gst-clock-wait-for-sync" title="gst_clock_wait_for_sync ()">gst_clock_wait_for_sync</a>, function in <a class="link" href="GstClock.html" title="GstClock">GstClock</a>
+</dt>
+<dd></dd>
+<a name="idxD"></a><h3 class="title">D</h3>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-get-properties" title="gst_device_get_properties ()">gst_device_get_properties</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<a name="idxE"></a><h3 class="title">E</h3>
+<dt>
+<a class="link" href="GstEvent.html#gst-event-new-protection" title="gst_event_new_protection ()">gst_event_new_protection</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-protection" title="gst_event_parse_protection ()">gst_event_parse_protection</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-flagset-register" title="gst_flagset_register ()">gst_flagset_register</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<a name="idxL"></a><h3 class="title">L</h3>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#GST-LEVEL-MAX:CAPS" title="GST_LEVEL_MAX">GST_LEVEL_MAX</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="GstObject.html#gst-object-has-as-parent" title="gst_object_has_as_parent ()">gst_object_has_as_parent</a>, function in <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
+</dt>
+<dd></dd>
+<a name="idxP"></a><h3 class="title">P</h3>
+<dt>
+<a class="link" href="GstPad.html#GstPad--offset" title="The “offset” property">GstPad:offset</a>, object property in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPad.html#GST-PAD-IS-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_IS_ACCEPT_TEMPLATE()">GST_PAD_IS_ACCEPT_TEMPLATE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPad.html#GST-PAD-SET-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_SET_ACCEPT_TEMPLATE()">GST_PAD_SET_ACCEPT_TEMPLATE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPad.html#GST-PAD-UNSET-ACCEPT-TEMPLATE:CAPS" title="GST_PAD_UNSET_ACCEPT_TEMPLATE()">GST_PAD_UNSET_ACCEPT_TEMPLATE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBuffer.html#GstParentBufferMeta" title="struct GstParentBufferMeta">GstParentBufferMeta</a>, struct in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPipeline.html#GstPipeline--latency" title="The “latency” property">GstPipeline:latency</a>, object property in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPipeline.html#gst-pipeline-get-latency" title="gst_pipeline_get_latency ()">gst_pipeline_get_latency</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPipeline.html#gst-pipeline-get-pipeline-clock" title="gst_pipeline_get_pipeline_clock ()">gst_pipeline_get_pipeline_clock</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPipeline.html#gst-pipeline-set-latency" title="gst_pipeline_set_latency ()">gst_pipeline_set_latency</a>, function in <a class="link" href="GstPipeline.html" title="GstPipeline">GstPipeline</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPreset.html#gst-preset-is-editable" title="gst_preset_is_editable ()">gst_preset_is_editable</a>, function in <a class="link" href="GstPreset.html" title="GstPreset">GstPreset</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta">GstProtectionMeta</a>, struct in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#gst-protection-select-system" title="gst_protection_select_system ()">gst_protection_select_system</a>, function in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstProtectionMeta.html#GST-PROTECTION-SYSTEM-ID-CAPS-FIELD:CAPS" title="GST_PROTECTION_SYSTEM_ID_CAPS_FIELD">GST_PROTECTION_SYSTEM_ID_CAPS_FIELD</a>, macro in <a class="link" href="gstreamer-GstProtectionMeta.html" title="GstProtectionMeta">GstProtectionMeta</a>
+</dt>
+<dd></dd>
+<a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="GstSample.html#gst-sample-get-buffer-list" title="gst_sample_get_buffer_list ()">gst_sample_get_buffer_list</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstSample.html#gst-sample-set-buffer-list" title="gst_sample_set_buffer_list ()">gst_sample_set_buffer_list</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstSegment.html#gst-segment-is-equal" title="gst_segment_is_equal ()">gst_segment_is_equal</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstSegment.html#gst-segment-to-running-time-full" title="gst_segment_to_running_time_full ()">gst_segment_to_running_time_full</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#GST-STIME-ARGS:CAPS" title="GST_STIME_ARGS()">GST_STIME_ARGS</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#GST-STIME-FORMAT:CAPS" title="GST_STIME_FORMAT">GST_STIME_FORMAT</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstStructure.html#gst-structure-filter-and-map-in-place" title="gst_structure_filter_and_map_in_place ()">gst_structure_filter_and_map_in_place</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-structure-get-flagset" title="gst_structure_get_flagset ()">gst_structure_get_flagset</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#GST-TYPE-FLAG-SET:CAPS" title="GST_TYPE_FLAG_SET">GST_TYPE_FLAG_SET</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<a name="idxU"></a><h3 class="title">U</h3>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-append-path" title="gst_uri_append_path ()">gst_uri_append_path</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-append-path-segment" title="gst_uri_append_path_segment ()">gst_uri_append_path_segment</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-equal" title="gst_uri_equal ()">gst_uri_equal</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-from-string" title="gst_uri_from_string ()">gst_uri_from_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-from-string-with-base" title="gst_uri_from_string_with_base ()">gst_uri_from_string_with_base</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-fragment" title="gst_uri_get_fragment ()">gst_uri_get_fragment</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-host" title="gst_uri_get_host ()">gst_uri_get_host</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path" title="gst_uri_get_path ()">gst_uri_get_path</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path-segments" title="gst_uri_get_path_segments ()">gst_uri_get_path_segments</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-path-string" title="gst_uri_get_path_string ()">gst_uri_get_path_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-port" title="gst_uri_get_port ()">gst_uri_get_port</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-keys" title="gst_uri_get_query_keys ()">gst_uri_get_query_keys</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-string" title="gst_uri_get_query_string ()">gst_uri_get_query_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-table" title="gst_uri_get_query_table ()">gst_uri_get_query_table</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-query-value" title="gst_uri_get_query_value ()">gst_uri_get_query_value</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-get-userinfo" title="gst_uri_get_userinfo ()">gst_uri_get_userinfo</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-is-normalized" title="gst_uri_is_normalized ()">gst_uri_is_normalized</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-is-writable" title="gst_uri_is_writable ()">gst_uri_is_writable</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-join" title="gst_uri_join ()">gst_uri_join</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-join-strings" title="gst_uri_join_strings ()">gst_uri_join_strings</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-make-writable" title="gst_uri_make_writable ()">gst_uri_make_writable</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-new" title="gst_uri_new ()">gst_uri_new</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-new-with-base" title="gst_uri_new_with_base ()">gst_uri_new_with_base</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-normalize" title="gst_uri_normalize ()">gst_uri_normalize</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-query-has-key" title="gst_uri_query_has_key ()">gst_uri_query_has_key</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-remove-query-key" title="gst_uri_remove_query_key ()">gst_uri_remove_query_key</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-fragment" title="gst_uri_set_fragment ()">gst_uri_set_fragment</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-host" title="gst_uri_set_host ()">gst_uri_set_host</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path" title="gst_uri_set_path ()">gst_uri_set_path</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path-segments" title="gst_uri_set_path_segments ()">gst_uri_set_path_segments</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-path-string" title="gst_uri_set_path_string ()">gst_uri_set_path_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-port" title="gst_uri_set_port ()">gst_uri_set_port</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-string" title="gst_uri_set_query_string ()">gst_uri_set_query_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-table" title="gst_uri_set_query_table ()">gst_uri_set_query_table</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-query-value" title="gst_uri_set_query_value ()">gst_uri_set_query_value</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-scheme" title="gst_uri_set_scheme ()">gst_uri_set_scheme</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-set-userinfo" title="gst_uri_set_userinfo ()">gst_uri_set_userinfo</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUri.html#gst-uri-to-string" title="gst_uri_to_string ()">gst_uri_to_string</a>, function in <a class="link" href="gstreamer-GstUri.html" title="GstUri">GstUri</a>
+</dt>
+<dd></dd>
+<a name="idxV"></a><h3 class="title">V</h3>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-get-flagset-flags" title="gst_value_get_flagset_flags ()">gst_value_get_flagset_flags</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-get-flagset-mask" title="gst_value_get_flagset_mask ()">gst_value_get_flagset_mask</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#GST-VALUE-HOLDS-FLAG-SET:CAPS" title="GST_VALUE_HOLDS_FLAG_SET()">GST_VALUE_HOLDS_FLAG_SET</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-set-flagset" title="gst_value_set_flagset ()">gst_value_set_flagset</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/ix04.html b/docs/gst/html/ix04.html
new file mode 100644
index 0000000..2a0d0f0
--- /dev/null
+++ b/docs/gst/html/ix04.html
@@ -0,0 +1,334 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.4: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="prev" href="ix03.html" title="Index of new API in 1.6">
+<link rel="next" href="ix05.html" title="Index of new API in 1.2.3">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxD">D</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxE">E</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxM">M</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxP">P</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxQ">Q</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxR">R</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxS">S</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix03.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix05.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.10"></a>Index of new API in 1.4</h1></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBuffer.html#gst-buffer-is-all-memory-writable" title="gst_buffer_is_all_memory_writable ()">gst_buffer_is_all_memory_writable</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-is-memory-range-writable" title="gst_buffer_is_memory_range_writable ()">gst_buffer_is_memory_range_writable</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBufferPool.html#gst-buffer-pool-config-validate-params" title="gst_buffer_pool_config_validate_params ()">gst_buffer_pool_config_validate_params</a>, function in <a class="link" href="GstBufferPool.html" title="GstBufferPool">GstBufferPool</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBufferPool.html#gst-buffer-pool-set-flushing" title="gst_buffer_pool_set_flushing ()">gst_buffer_pool_set_flushing</a>, function in <a class="link" href="GstBufferPool.html" title="GstBufferPool">GstBufferPool</a>
+</dt>
+<dd></dd>
+<a name="idxD"></a><h3 class="title">D</h3>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice">GstDevice</a>, struct in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#GstDeviceClass" title="struct GstDeviceClass">GstDeviceClass</a>, struct in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#GstDeviceMonitor" title="struct GstDeviceMonitor">GstDeviceMonitor</a>, struct in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#GstDeviceMonitorClass" title="struct GstDeviceMonitorClass">GstDeviceMonitorClass</a>, struct in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#GstDeviceProvider" title="struct GstDeviceProvider">GstDeviceProvider</a>, struct in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#GstDeviceProviderClass" title="struct GstDeviceProviderClass">GstDeviceProviderClass</a>, struct in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#GstDeviceProviderFactory-struct" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>, struct in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#GstDeviceProviderFactoryClass" title="GstDeviceProviderFactoryClass">GstDeviceProviderFactoryClass</a>, struct in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-create-element" title="gst_device_create_element ()">gst_device_create_element</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-get-caps" title="gst_device_get_caps ()">gst_device_get_caps</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-get-device-class" title="gst_device_get_device_class ()">gst_device_get_device_class</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-get-display-name" title="gst_device_get_display_name ()">gst_device_get_display_name</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-has-classes" title="gst_device_has_classes ()">gst_device_has_classes</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-has-classesv" title="gst_device_has_classesv ()">gst_device_has_classesv</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-add-filter" title="gst_device_monitor_add_filter ()">gst_device_monitor_add_filter</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-get-bus" title="gst_device_monitor_get_bus ()">gst_device_monitor_get_bus</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-get-devices" title="gst_device_monitor_get_devices ()">gst_device_monitor_get_devices</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-new" title="gst_device_monitor_new ()">gst_device_monitor_new</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-remove-filter" title="gst_device_monitor_remove_filter ()">gst_device_monitor_remove_filter</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-start" title="gst_device_monitor_start ()">gst_device_monitor_start</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceMonitor.html#gst-device-monitor-stop" title="gst_device_monitor_stop ()">gst_device_monitor_stop</a>, function in <a class="link" href="gstreamer-GstDeviceMonitor.html" title="GstDeviceMonitor">GstDeviceMonitor</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-class-add-metadata" title="gst_device_provider_class_add_metadata ()">gst_device_provider_class_add_metadata</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-class-add-static-metadata" title="gst_device_provider_class_add_static_metadata ()">gst_device_provider_class_add_static_metadata</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-class-get-metadata" title="gst_device_provider_class_get_metadata ()">gst_device_provider_class_get_metadata</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-class-set-metadata" title="gst_device_provider_class_set_metadata ()">gst_device_provider_class_set_metadata</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-class-set-static-metadata" title="gst_device_provider_class_set_static_metadata ()">gst_device_provider_class_set_static_metadata</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-device-add" title="gst_device_provider_device_add ()">gst_device_provider_device_add</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-device-remove" title="gst_device_provider_device_remove ()">gst_device_provider_device_remove</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-find" title="gst_device_provider_factory_find ()">gst_device_provider_factory_find</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-get" title="gst_device_provider_factory_get ()">gst_device_provider_factory_get</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-get-by-name" title="gst_device_provider_factory_get_by_name ()">gst_device_provider_factory_get_by_name</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-get-device-provider-type" title="gst_device_provider_factory_get_device_provider_type ()">gst_device_provider_factory_get_device_provider_type</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-get-metadata" title="gst_device_provider_factory_get_metadata ()">gst_device_provider_factory_get_metadata</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-get-metadata-keys" title="gst_device_provider_factory_get_metadata_keys ()">gst_device_provider_factory_get_metadata_keys</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-has-classes" title="gst_device_provider_factory_has_classes ()">gst_device_provider_factory_has_classes</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-has-classesv" title="gst_device_provider_factory_has_classesv ()">gst_device_provider_factory_has_classesv</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstDeviceProviderFactory.html#gst-device-provider-factory-list-get-device-providers" title="gst_device_provider_factory_list_get_device_providers ()">gst_device_provider_factory_list_get_device_providers</a>, function in <a class="link" href="GstDeviceProviderFactory.html" title="GstDeviceProviderFactory">GstDeviceProviderFactory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-get-bus" title="gst_device_provider_get_bus ()">gst_device_provider_get_bus</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-get-devices" title="gst_device_provider_get_devices ()">gst_device_provider_get_devices</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-get-factory" title="gst_device_provider_get_factory ()">gst_device_provider_get_factory</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-register" title="gst_device_provider_register ()">gst_device_provider_register</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-start" title="gst_device_provider_start ()">gst_device_provider_start</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDeviceProvider.html#gst-device-provider-stop" title="gst_device_provider_stop ()">gst_device_provider_stop</a>, function in <a class="link" href="gstreamer-GstDeviceProvider.html" title="GstDeviceProvider">GstDeviceProvider</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstDevice.html#gst-device-reconfigure-element" title="gst_device_reconfigure_element ()">gst_device_reconfigure_element</a>, function in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+</dt>
+<dd></dd>
+<a name="idxE"></a><h3 class="title">E</h3>
+<dt>
+<a class="link" href="GstEvent.html#gst-event-get-running-time-offset" title="gst_event_get_running_time_offset ()">gst_event_get_running_time_offset</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-running-time-offset" title="gst_event_set_running_time_offset ()">gst_event_set_running_time_offset</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<a name="idxM"></a><h3 class="title">M</h3>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-new-device-added" title="gst_message_new_device_added ()">gst_message_new_device_added</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-device-removed" title="gst_message_new_device_removed ()">gst_message_new_device_removed</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-device-added" title="gst_message_parse_device_added ()">gst_message_parse_device_added</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-device-removed" title="gst_message_parse_device_removed ()">gst_message_parse_device_removed</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-TYPE-IS-EXTENDED:CAPS" title="GST_MESSAGE_TYPE_IS_EXTENDED()">GST_MESSAGE_TYPE_IS_EXTENDED</a>, macro in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<a name="idxP"></a><h3 class="title">P</h3>
+<dt>
+<a class="link" href="GstPad.html#gst-pad-get-last-flow-return" title="gst_pad_get_last_flow_return ()">gst_pad_get_last_flow_return</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-LAST-FLOW-RETURN:CAPS" title="GST_PAD_LAST_FLOW_RETURN()">GST_PAD_LAST_FLOW_RETURN</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPad.html#gst-pad-link-get-name" title="gst_pad_link_get_name ()">gst_pad_link_get_name</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<a name="idxQ"></a><h3 class="title">Q</h3>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-parse-uri-redirection-permanent" title="gst_query_parse_uri_redirection_permanent ()">gst_query_parse_uri_redirection_permanent</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-set-uri-redirection-permanent" title="gst_query_set_uri_redirection_permanent ()">gst_query_set_uri_redirection_permanent</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<a name="idxR"></a><h3 class="title">R</h3>
+<dt>
+<a class="link" href="gstreamer-GstUtils.html#GST-ROUND-DOWN-128:CAPS" title="GST_ROUND_DOWN_128()">GST_ROUND_DOWN_128</a>, macro in <a class="link" href="gstreamer-GstUtils.html" title="GstUtils">GstUtils</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstUtils.html#GST-ROUND-UP-128:CAPS" title="GST_ROUND_UP_128()">GST_ROUND_UP_128</a>, macro in <a class="link" href="gstreamer-GstUtils.html" title="GstUtils">GstUtils</a>
+</dt>
+<dd></dd>
+<a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="GstStructure.html#gst-structure-get-int64" title="gst_structure_get_int64 ()">gst_structure_get_int64</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstStructure.html#gst-structure-get-uint64" title="gst_structure_get_uint64 ()">gst_structure_get_uint64</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstSystemClock.html#gst-system-clock-set-default" title="gst_system_clock_set_default ()">gst_system_clock_set_default</a>, function in <a class="link" href="GstSystemClock.html" title="GstSystemClock">GstSystemClock</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="GstTagList.html#GST-TAG-MIDI-BASE-NOTE:CAPS" title="GST_TAG_MIDI_BASE_NOTE">GST_TAG_MIDI_BASE_NOTE</a>, macro in <a class="link" href="GstTagList.html" title="GstTagList">GstTagList</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstToc.html#GstTocLoopType" title="enum GstTocLoopType">GstTocLoopType</a>, enum in <a class="link" href="GstToc.html" title="GstToc">GstToc</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstToc.html#gst-toc-entry-get-loop" title="gst_toc_entry_get_loop ()">gst_toc_entry_get_loop</a>, function in <a class="link" href="GstToc.html" title="GstToc">GstToc</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstToc.html#gst-toc-entry-set-loop" title="gst_toc_entry_set_loop ()">gst_toc_entry_set_loop</a>, function in <a class="link" href="GstToc.html" title="GstToc">GstToc</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstToc.html#GST-TOC-REPEAT-COUNT-INFINITE:CAPS" title="GST_TOC_REPEAT_COUNT_INFINITE">GST_TOC_REPEAT_COUNT_INFINITE</a>, macro in <a class="link" href="GstToc.html" title="GstToc">GstToc</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/ix05.html b/docs/gst/html/ix05.html
new file mode 100644
index 0000000..9a79b34
--- /dev/null
+++ b/docs/gst/html/ix05.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.2.3: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="prev" href="ix04.html" title="Index of new API in 1.4">
+<link rel="next" href="ix06.html" title="Index of new API in 1.2">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxS">S</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix04.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix06.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.11"></a>Index of new API in 1.2.3</h1></div></div></div>
+<a name="idx"></a><a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="GstSegment.html#gst-segment-offset-running-time" title="gst_segment_offset_running_time ()">gst_segment_offset_running_time</a>, function in <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/ix06.html b/docs/gst/html/ix06.html
new file mode 100644
index 0000000..800c331
--- /dev/null
+++ b/docs/gst/html/ix06.html
@@ -0,0 +1,349 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.2: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="prev" href="ix05.html" title="Index of new API in 1.2.3">
+<link rel="next" href="ix07.html" title="Index of new API in 1.0.10">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxC">C</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxD">D</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxE">E</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxM">M</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxP">P</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxQ">Q</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxS">S</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxT">T</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxV">V</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix05.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix07.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.12"></a>Index of new API in 1.2</h1></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<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>
+<a name="idxC"></a><h3 class="title">C</h3>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-append-structure-full" title="gst_caps_append_structure_full ()">gst_caps_append_structure_full</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-add" title="gst_caps_features_add ()">gst_caps_features_add</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-add-id" title="gst_caps_features_add_id ()">gst_caps_features_add_id</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-contains" title="gst_caps_features_contains ()">gst_caps_features_contains</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-contains-id" title="gst_caps_features_contains_id ()">gst_caps_features_contains_id</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-copy" title="gst_caps_features_copy ()">gst_caps_features_copy</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-free" title="gst_caps_features_free ()">gst_caps_features_free</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-from-string" title="gst_caps_features_from_string ()">gst_caps_features_from_string</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-get-nth" title="gst_caps_features_get_nth ()">gst_caps_features_get_nth</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-get-nth-id" title="gst_caps_features_get_nth_id ()">gst_caps_features_get_nth_id</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-get-size" title="gst_caps_features_get_size ()">gst_caps_features_get_size</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-is-any" title="gst_caps_features_is_any ()">gst_caps_features_is_any</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-is-equal" title="gst_caps_features_is_equal ()">gst_caps_features_is_equal</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-new" title="gst_caps_features_new ()">gst_caps_features_new</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-new-any" title="gst_caps_features_new_any ()">gst_caps_features_new_any</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-new-empty" title="gst_caps_features_new_empty ()">gst_caps_features_new_empty</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-new-id" title="gst_caps_features_new_id ()">gst_caps_features_new_id</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-new-id-valist" title="gst_caps_features_new_id_valist ()">gst_caps_features_new_id_valist</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-new-valist" title="gst_caps_features_new_valist ()">gst_caps_features_new_valist</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-remove" title="gst_caps_features_remove ()">gst_caps_features_remove</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-remove-id" title="gst_caps_features_remove_id ()">gst_caps_features_remove_id</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-set-parent-refcount" title="gst_caps_features_set_parent_refcount ()">gst_caps_features_set_parent_refcount</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCapsFeatures.html#gst-caps-features-to-string" title="gst_caps_features_to_string ()">gst_caps_features_to_string</a>, function in <a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures">GstCapsFeatures</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-get-features" title="gst_caps_get_features ()">gst_caps_get_features</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-is-subset-structure-full" title="gst_caps_is_subset_structure_full ()">gst_caps_is_subset_structure_full</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-merge-structure-full" title="gst_caps_merge_structure_full ()">gst_caps_merge_structure_full</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCaps.html#gst-caps-set-features" title="gst_caps_set_features ()">gst_caps_set_features</a>, function in <a class="link" href="GstCaps.html" title="GstCaps">GstCaps</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstContext.html#gst-context-get-context-type" title="gst_context_get_context_type ()">gst_context_get_context_type</a>, function in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstContext.html#gst-context-get-structure" title="gst_context_get_structure ()">gst_context_get_structure</a>, function in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstContext.html#gst-context-has-context-type" title="gst_context_has_context_type ()">gst_context_has_context_type</a>, function in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstContext.html#gst-context-is-persistent" title="gst_context_is_persistent ()">gst_context_is_persistent</a>, function in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstContext.html#gst-context-new" title="gst_context_new ()">gst_context_new</a>, function in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstContext.html#gst-context-writable-structure" title="gst_context_writable_structure ()">gst_context_writable_structure</a>, function in <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
+</dt>
+<dd></dd>
+<a name="idxD"></a><h3 class="title">D</h3>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-get-color-mode" title="gst_debug_get_color_mode ()">gst_debug_get_color_mode</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-set-color-mode" title="gst_debug_set_color_mode ()">gst_debug_set_color_mode</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-set-color-mode-from-string" title="gst_debug_set_color_mode_from_string ()">gst_debug_set_color_mode_from_string</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-set-threshold-from-string" title="gst_debug_set_threshold_from_string ()">gst_debug_set_threshold_from_string</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+</dt>
+<dd></dd>
+<a name="idxE"></a><h3 class="title">E</h3>
+<dt>
+<a class="link" href="GstEvent.html#gst-event-parse-group-id" title="gst_event_parse_group_id ()">gst_event_parse_group_id</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-set-group-id" title="gst_event_set_group_id ()">gst_event_set_group_id</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>
+<a name="idxM"></a><h3 class="title">M</h3>
+<dt>
+<a class="link" href="GstMemory.html#GST-MEMORY-IS-NOT-MAPPABLE:CAPS" title="GST_MEMORY_IS_NOT_MAPPABLE()">GST_MEMORY_IS_NOT_MAPPABLE</a>, macro in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstMemory.html#GST-MEMORY-IS-PHYSICALLY-CONTIGUOUS:CAPS" title="GST_MEMORY_IS_PHYSICALLY_CONTIGUOUS()">GST_MEMORY_IS_PHYSICALLY_CONTIGUOUS</a>, macro in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstMemory.html#gst-memory-is-type" title="gst_memory_is_type ()">gst_memory_is_type</a>, function in <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</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>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-new-need-context" title="gst_message_new_need_context ()">gst_message_new_need_context</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-context-type" title="gst_message_parse_context_type ()">gst_message_parse_context_type</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>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-parse-have-context" title="gst_message_parse_have_context ()">gst_message_parse_have_context</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-set-group-id" title="gst_message_set_group_id ()">gst_message_set_group_id</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstMeta.html#gst-meta-api-type-get-tags" title="gst_meta_api_type_get_tags ()">gst_meta_api_type_get_tags</a>, function in <a class="link" href="gstreamer-GstMeta.html" title="GstMeta">GstMeta</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstMeta.html#GST-META-TAG-MEMORY-STR:CAPS" title="GST_META_TAG_MEMORY_STR">GST_META_TAG_MEMORY_STR</a>, macro in <a class="link" href="gstreamer-GstMeta.html" title="GstMeta">GstMeta</a>
+</dt>
+<dd></dd>
+<a name="idxP"></a><h3 class="title">P</h3>
+<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>
+<dt>
+<a class="link" href="GstPad.html#gst-pad-store-sticky-event" title="gst_pad_store_sticky_event ()">gst_pad_store_sticky_event</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPluginFeature.html#gst-plugin-feature-get-plugin-name" title="gst_plugin_feature_get_plugin_name ()">gst_plugin_feature_get_plugin_name</a>, function in <a class="link" href="GstPluginFeature.html" title="GstPluginFeature">GstPluginFeature</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPlugin.html#GST-PLUGIN-STATIC-DECLARE:CAPS" title="GST_PLUGIN_STATIC_DECLARE()">GST_PLUGIN_STATIC_DECLARE</a>, macro in <a class="link" href="GstPlugin.html" title="GstPlugin">GstPlugin</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPlugin.html#GST-PLUGIN-STATIC-REGISTER:CAPS" title="GST_PLUGIN_STATIC_REGISTER()">GST_PLUGIN_STATIC_REGISTER</a>, macro in <a class="link" href="GstPlugin.html" title="GstPlugin">GstPlugin</a>
+</dt>
+<dd></dd>
+<a name="idxQ"></a><h3 class="title">Q</h3>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-new-context" title="gst_query_new_context ()">gst_query_new_context</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-parse-context" title="gst_query_parse_context ()">gst_query_parse_context</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-parse-context-type" title="gst_query_parse_context_type ()">gst_query_parse_context_type</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-parse-uri-redirection" title="gst_query_parse_uri_redirection ()">gst_query_parse_uri_redirection</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-remove-nth-allocation-param" title="gst_query_remove_nth_allocation_param ()">gst_query_remove_nth_allocation_param</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-remove-nth-allocation-pool" title="gst_query_remove_nth_allocation_pool ()">gst_query_remove_nth_allocation_pool</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-set-context" title="gst_query_set_context ()">gst_query_set_context</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstQuery.html#gst-query-set-uri-redirection" title="gst_query_set_uri_redirection ()">gst_query_set_uri_redirection</a>, function in <a class="link" href="GstQuery.html" title="GstQuery">GstQuery</a>
+</dt>
+<dd></dd>
+<a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="GstSample.html#gst-sample-copy" title="gst_sample_copy ()">gst_sample_copy</a>, function in <a class="link" href="GstSample.html" title="GstSample">GstSample</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags">GstStreamFlags</a>, enum in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstStructure.html#gst-structure-new-from-string" title="gst_structure_new_from_string ()">gst_structure_new_from_string</a>, function in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="GstTagList.html#GST-TAG-INTERPRETED-BY:CAPS" title="GST_TAG_INTERPRETED_BY">GST_TAG_INTERPRETED_BY</a>, macro in <a class="link" href="GstTagList.html" title="GstTagList">GstTagList</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTagList.html#GST-TAG-PUBLISHER:CAPS" title="GST_TAG_PUBLISHER">GST_TAG_PUBLISHER</a>, macro in <a class="link" href="GstTagList.html" title="GstTagList">GstTagList</a>
+</dt>
+<dd></dd>
+<a name="idxV"></a><h3 class="title">V</h3>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-array-append-and-take-value" title="gst_value_array_append_and_take_value ()">gst_value_array_append_and_take_value</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstValue.html#gst-value-list-append-and-take-value" title="gst_value_list_append_and_take_value ()">gst_value_list_append_and_take_value</a>, function in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/ix07.html b/docs/gst/html/ix07.html
new file mode 100644
index 0000000..153b1e0
--- /dev/null
+++ b/docs/gst/html/ix07.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.0.10: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="prev" href="ix06.html" title="Index of new API in 1.2">
+<link rel="next" href="ix08.html" title="Index of new API in 1.0.5">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix06.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix08.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.13"></a>Index of new API in 1.0.10</h1></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBuffer.html#gst-buffer-extract-dup" title="gst_buffer_extract_dup ()">gst_buffer_extract_dup</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/ix08.html b/docs/gst/html/ix08.html
new file mode 100644
index 0000000..12150bb
--- /dev/null
+++ b/docs/gst/html/ix08.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.0.5: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="prev" href="ix07.html" title="Index of new API in 1.0.10">
+<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix07.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.14"></a>Index of new API in 1.0.5</h1></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBin.html#GST-BIN-IS-NO-RESYNC:CAPS" title="GST_BIN_IS_NO_RESYNC()">GST_BIN_IS_NO_RESYNC</a>, macro in <a class="link" href="GstBin.html" title="GstBin">GstBin</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/libgstreamer.html b/docs/gst/html/libgstreamer.html
index b1ca3e0..bdbebbd 100644
--- a/docs/gst/html/libgstreamer.html
+++ b/docs/gst/html/libgstreamer.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Core Reference Manual: GStreamer Core Library</title>
+<title>GStreamer Core Library: GStreamer 1.0 Core Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="prev" href="gst-running.html" title="Running GStreamer Applications">
 <link rel="next" href="gstreamer-Gst.html" title="Gst">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -64,7 +64,7 @@
 <span class="refentrytitle"><a href="GstClock.html">GstClock</a></span><span class="refpurpose"> — Abstract class for global clocks</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-gstconfig.html">gstconfig</a></span><span class="refpurpose"> — Build configuration options</span>
+<span class="refentrytitle"><a href="gstreamer-GstConfig.html">GstConfig</a></span><span class="refpurpose"> — Build configuration options</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstContext.html">GstContext</a></span><span class="refpurpose"> — Lightweight objects to represent element contexts</span>
@@ -149,11 +149,14 @@
 <span class="refentrytitle"><a href="GstPreset.html">GstPreset</a></span><span class="refpurpose"> — helper interface for element presets</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-GstProtectionMeta.html">GstProtectionMeta</a></span><span class="refpurpose"> — Functions and classes to support encrypted streams.</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstQuery.html">GstQuery</a></span><span class="refpurpose"> — Provide functions to create queries, and to set and parse
                     values in them.</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="GstRegistry.html">GstRegistry</a></span><span class="refpurpose">Abstract base class for management of <span class="type">GstPlugin</span> objects</span>
+<span class="refentrytitle"><a href="GstRegistry.html">GstRegistry</a></span><span class="refpurpose"> — Abstract base class for management of <span class="type">GstPlugin</span> objects</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstSegment.html">GstSegment</a></span><span class="refpurpose"> — Structure describing the configured region of interest
@@ -192,6 +195,9 @@
 <span class="refentrytitle"><a href="GstTypeFindFactory.html">GstTypeFindFactory</a></span><span class="refpurpose"> — Information about registered typefind functions</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-GstUri.html">GstUri</a></span><span class="refpurpose"> — URI parsing and manipulation.</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-GstUriHandler.html">GstUriHandler</a></span><span class="refpurpose"> — Interface to ease URI handling in plugins.</span>
 </dt>
 <dt>
@@ -213,7 +219,6 @@
     </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gst/html/style.css b/docs/gst/html/style.css
index c141ddd..3675420 100644
--- a/docs/gst/html/style.css
+++ b/docs/gst/html/style.css
@@ -60,7 +60,7 @@
 div.informaltable table
 {
   border-collapse: separate;
-  border-spacing: 1em 0.5em;
+  border-spacing: 1em 0.3em;
   border: none;
 }
 
@@ -148,6 +148,8 @@
 h4
 {
   color: #555753;
+  margin-top: 1em;
+  margin-bottom: 1em;
 }
 
 hr
@@ -166,17 +168,16 @@
   padding-bottom: 0.25em;
 }
 
-dl.toc > dd > dl > dt
+dl.toc > dt
 {
   padding-top: 0.25em;
   padding-bottom: 0.25em;
+  font-weight: bold;
 }
 
-dl.toc > dt
+dl.toc > dl
 {
-  padding-top: 1em;
   padding-bottom: 0.5em;
-  font-weight: bold;
 }
 
 .parameter
@@ -346,7 +347,9 @@
 }
 
 @media screen {
-  sup a.footnote
+  /* these have a <sup> as a first child, but since there are no parent selectors
+   * we can't use that. */
+  a.footnote
   {
     position: relative;
     top: 0em ! important;
diff --git a/docs/gst/running.xml b/docs/gst/running.xml
index 67ac4fa..103aebb 100644
--- a/docs/gst/running.xml
+++ b/docs/gst/running.xml
@@ -493,7 +493,7 @@
   <title><envar>GST_TAG_ENCODING</envar></title>
   <para>
 Try this character encoding first for tag-related strings where the encoding
-is not defined and which are not UTF-8 already. By defaul the current locale
+is not defined and which are not UTF-8 already. By default the current locale
 will be tried (if not UTF-8).
   </para>
 </formalpara>
@@ -502,7 +502,7 @@
   <title><envar>GST_TAG_ID3_ENCODING</envar></title>
   <para>
 Try this character encoding first for ID3 tag-related strings where the
-encoding is not defined and which are not UTF-8 already. By defaul the current
+encoding is not defined and which are not UTF-8 already. By default the current
 locale will be tried (if not UTF-8).
   </para>
 </formalpara>
@@ -514,6 +514,31 @@
 encoding does not look like UTF-8.
   </para>
 </formalpara>
+
+<formalpara id="GST_GL_WINDOW">
+  <title><envar>GST_GL_WINDOW</envar></title>
+  <para>
+Influences the window system to use by the GStreamer OpenGL library.
+Common values are 'x11', 'wayland', 'win32' or 'cocoa'.
+  </para>
+</formalpara>
+
+<formalpara id="GST_GL_PLATFORM">
+  <title><envar>GST_GL_PLATFORM</envar></title>
+  <para>
+Influences the OpenGL platform to use by the GStreamer OpenGL library.
+Common values are 'egl', 'glx', 'wgl' or 'cgl'.
+  </para>
+</formalpara>
+
+<formalpara id="GST_GL_API">
+  <title><envar>GST_GL_API</envar></title>
+  <para>
+Influences the OpenGL API requested by the OpenGL platform.
+Common values are 'opengl' or 'gles2'.
+  </para>
+</formalpara>
+
 </refsect2>
 
 </refsect1>
diff --git a/docs/libs/Makefile.am b/docs/libs/Makefile.am
index 889b3a4..bb8b48a 100644
--- a/docs/libs/Makefile.am
+++ b/docs/libs/Makefile.am
@@ -25,7 +25,7 @@
 SCAN_OPTIONS=--deprecated-guards="GST_DISABLE_DEPRECATED"
 
 # Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS=--sgml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
 
 # Extra options to supply to gtkdoc-fixref.
 FIXXREF_OPTIONS=--extra-dir=$(top_builddir)/docs/gst/html \
@@ -41,6 +41,7 @@
 
 # Header files to ignore when scanning.
 IGNORE_HFILES = \
+	check/libcheck check/internal-check.h \
 	gstinterpolationcontrolsourceprivate.h \
 	gstlfocontrolsourceprivate.h \
 	gstgetbits_inl.h \
@@ -66,9 +67,6 @@
 	$(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(GST_OBJ_LIBS)
 
-GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC)
-GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=link $(CC)
-
 GTKDOC_EXTRA_ENVIRONMENT= \
     GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner
 
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index 46cd2c0..53485f9 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,7 +33,17 @@
 ###########################################################################
 # thomas: except of course that we did
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -97,9 +107,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(top_srcdir)/common/upload-doc.mak \
-	$(top_srcdir)/common/gtk-doc.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am
 subdir = docs/libs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -109,6 +116,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -126,7 +134,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -139,6 +147,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -163,6 +172,9 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/common/gtk-doc.mak \
+	$(top_srcdir)/common/upload-doc.mak
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -174,7 +186,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -267,6 +284,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -278,9 +296,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -302,6 +322,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -363,8 +384,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -430,6 +453,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -468,7 +492,7 @@
 SCAN_OPTIONS = --deprecated-guards="GST_DISABLE_DEPRECATED"
 
 # Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS = --sgml-mode --output-format=xml
+MKDB_OPTIONS = --sgml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
 
 # Extra options to supply to gtkdoc-fixref.
 FIXXREF_OPTIONS = --extra-dir=$(top_builddir)/docs/gst/html \
@@ -485,6 +509,7 @@
 
 # Header files to ignore when scanning.
 IGNORE_HFILES = \
+	check/libcheck check/internal-check.h \
 	gstinterpolationcontrolsourceprivate.h \
 	gstlfocontrolsourceprivate.h \
 	gstgetbits_inl.h \
@@ -511,8 +536,6 @@
 	$(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(GST_OBJ_LIBS)
 
-GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC)
-GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC)
 GTKDOC_EXTRA_ENVIRONMENT = \
     GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner
 
@@ -520,8 +543,13 @@
 # If you need to override some of the declarations, place them in this file
 # and uncomment this line.
 DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = 
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
 
-# thomas: copied from glib-2
 # We set GPATH here; this gives us semantics for GNU make
 # which are more like other make's VPATH, when it comes to
 # whether a source that is a target of one rule is then
@@ -577,7 +605,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/libs/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/libs/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -586,7 +613,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc.mak:
+$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -758,6 +785,8 @@
 	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
 	uninstall-am uninstall-local
 
+.PRECIOUS: Makefile
+
 html: html-build.stamp
 
 upload: $(FORMATS)
@@ -840,15 +869,22 @@
 @ENABLE_GTK_DOC_TRUE@		--ignore-headers="$(IGNORE_HFILES)"
 @ENABLE_GTK_DOC_TRUE@	@if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null; then	\
 @ENABLE_GTK_DOC_TRUE@	    echo "  DOC   Introspecting gobjects"; \
+@ENABLE_GTK_DOC_TRUE@	    scanobj_options=""; \
+@ENABLE_GTK_DOC_TRUE@	    gtkdoc-scangobj 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
+@ENABLE_GTK_DOC_TRUE@	    if test "$$?" = "0"; then \
+@ENABLE_GTK_DOC_TRUE@	        if test "x$(V)" = "x1"; then \
+@ENABLE_GTK_DOC_TRUE@	            scanobj_options="--verbose"; \
+@ENABLE_GTK_DOC_TRUE@	        fi; \
+@ENABLE_GTK_DOC_TRUE@	    fi; \
 @ENABLE_GTK_DOC_TRUE@	    GST_PLUGIN_SYSTEM_PATH_1_0=`cd $(top_builddir) && pwd`		\
 @ENABLE_GTK_DOC_TRUE@	    GST_PLUGIN_PATH_1_0=						\
 @ENABLE_GTK_DOC_TRUE@	    GST_REGISTRY_1_0=doc-registry.xml				\
 @ENABLE_GTK_DOC_TRUE@	    $(GTKDOC_EXTRA_ENVIRONMENT)					\
-@ENABLE_GTK_DOC_TRUE@	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"				\
+@ENABLE_GTK_DOC_TRUE@	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)"	\
 @ENABLE_GTK_DOC_TRUE@	    CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)"				\
 @ENABLE_GTK_DOC_TRUE@	    LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"				\
 @ENABLE_GTK_DOC_TRUE@	    gtkdoc-scangobj --type-init-func="gst_init(NULL,NULL)"	\
-@ENABLE_GTK_DOC_TRUE@	        --module=$(DOC_MODULE) ;				\
+@ENABLE_GTK_DOC_TRUE@	        $$scanobj_options --module=$(DOC_MODULE) ;				\
 @ENABLE_GTK_DOC_TRUE@	else								\
 @ENABLE_GTK_DOC_TRUE@	    for i in $(SCANOBJ_FILES) ; do				\
 @ENABLE_GTK_DOC_TRUE@	       test -f $$i || touch $$i ;				\
diff --git a/docs/libs/gstreamer-libs-docs.sgml b/docs/libs/gstreamer-libs-docs.sgml
index 0070771..e656179 100644
--- a/docs/libs/gstreamer-libs-docs.sgml
+++ b/docs/libs/gstreamer-libs-docs.sgml
@@ -74,8 +74,10 @@
 
       <xi:include href="xml/gstnetaddressmeta.xml" />
       <xi:include href="xml/gstnetclientclock.xml" />
+      <xi:include href="xml/gstnetcontrolmessagemeta.xml" />
       <xi:include href="xml/gstnettimepacket.xml" />
       <xi:include href="xml/gstnettimeprovider.xml" />
+      <xi:include href="xml/gstptpclock.xml" />
     </chapter>
 
     <chapter id="gstreamer-check">
@@ -88,6 +90,7 @@
       <xi:include href="xml/gstcheck.xml" />
       <xi:include href="xml/gstcheckbufferstraw.xml" />
       <xi:include href="xml/gstcheckconsistencychecker.xml" />
+      <xi:include href="xml/gstharness.xml" />
       <xi:include href="xml/gsttestclock.xml" />
     </chapter>
   </part>
@@ -97,14 +100,30 @@
     <xi:include href="xml/tree_index.sgml"/>
   </chapter>
 
-  <index id="api-index-full">
+  <index>
     <title>API Index</title>
     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
   </index>
-  <index id="api-index-deprecated" role="deprecated">
+  <index role="deprecated">
     <title>Index of deprecated API</title>
     <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
   </index>
+  <index>
+    <title>Index of new API in 1.6</title>
+    <xi:include href="xml/api-index-1.6.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.4</title>
+    <xi:include href="xml/api-index-1.4.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.2</title>
+    <xi:include href="xml/api-index-1.2.xml"><xi:fallback /></xi:include>
+  </index>
+  <index>
+    <title>Index of new API in 1.0.1</title>
+    <xi:include href="xml/api-index-1.0.1.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index 83b19db..6819fed 100644
--- a/docs/libs/gstreamer-libs-sections.txt
+++ b/docs/libs/gstreamer-libs-sections.txt
@@ -37,6 +37,7 @@
 <TITLE>GstDirectControlBinding</TITLE>
 <INCLUDE>libs/controller/gstdirectcontrolbinding.h</INCLUDE>
 gst_direct_control_binding_new
+gst_direct_control_binding_new_absolute
 <SUBSECTION Standard>
 GstDirectControlBindingConvertValue
 GstDirectControlBindingConvertGValue
@@ -58,6 +59,7 @@
 <TITLE>GstTimedValueControlSource</TITLE>
 <INCLUDE>libs/controller/gsttimedvaluecontrolsource.h</INCLUDE>
 GstTimedValueControlSource
+GstControlPoint
 gst_timed_value_control_source_find_control_point_iter
 gst_timed_value_control_source_set
 gst_timed_value_control_source_set_from_list
@@ -164,8 +166,13 @@
 gst_adapter_available_fast
 gst_adapter_take
 gst_adapter_take_buffer
+gst_adapter_get_buffer
 gst_adapter_take_buffer_fast
+gst_adapter_get_buffer_fast
 gst_adapter_take_list
+gst_adapter_get_list
+gst_adapter_take_buffer_list
+gst_adapter_get_buffer_list
 gst_adapter_prev_pts
 gst_adapter_prev_dts
 gst_adapter_prev_pts_at_offset
@@ -192,6 +199,7 @@
 GstBaseParse
 GstBaseParseClass
 
+gst_base_parse_merge_tags
 gst_base_parse_set_duration
 gst_base_parse_set_average_bitrate
 gst_base_parse_set_min_frame_size
@@ -360,6 +368,7 @@
 gst_base_transform_get_buffer_pool
 gst_base_transform_reconfigure_sink
 gst_base_transform_reconfigure_src
+gst_base_transform_update_src_caps
 
 GST_BASE_TRANSFORM_SINK_NAME
 GST_BASE_TRANSFORM_SRC_NAME
@@ -442,6 +451,9 @@
 
 gst_byte_reader_init
 
+gst_byte_reader_peek_sub_reader
+gst_byte_reader_get_sub_reader
+
 gst_byte_reader_get_pos
 gst_byte_reader_get_remaining
 gst_byte_reader_set_pos
@@ -504,6 +516,7 @@
 gst_byte_reader_peek_data
 
 gst_byte_reader_masked_scan_uint32
+gst_byte_reader_masked_scan_uint32_peek
 
 gst_byte_reader_get_string
 gst_byte_reader_get_string_utf8
@@ -704,6 +717,9 @@
 GST_COLLECT_PADS_STREAM_LOCK
 GST_COLLECT_PADS_STREAM_UNLOCK
 
+GST_COLLECT_PADS_DTS
+GST_COLLECT_PADS_DTS_IS_VALID
+
 gst_collect_pads_new
 
 gst_collect_pads_add_pad
@@ -755,11 +771,13 @@
 <FILE>gstflowcombiner</FILE>
 <TITLE>GstFlowCombiner</TITLE>
 <INCLUDE>gst/base/gstflowcombiner.h</INCLUDE>
+GstFlowCombiner
 gst_flow_combiner_new
 gst_flow_combiner_free
 gst_flow_combiner_update_flow
 gst_flow_combiner_add_pad
 gst_flow_combiner_remove_pad
+gst_flow_combiner_clear
 <SUBSECTION Standard>
 GST_TYPE_FLOW_COMBINER
 <SUBSECTION Private>
@@ -844,6 +862,11 @@
 gst_queue_array_is_empty
 gst_queue_array_drop_element
 gst_queue_array_find
+gst_queue_array_new_for_struct
+gst_queue_array_push_tail_struct
+gst_queue_array_peek_head_struct
+gst_queue_array_pop_head_struct
+gst_queue_array_drop_struct
 </SECTION>
 
 # net
@@ -863,13 +886,29 @@
 gst_net_address_meta_api_get_type
 </SECTION>
 
+<SECTION>
+<FILE>gstnetcontrolmessagemeta</FILE>
+<TITLE>GstNetControlMessageMeta</TITLE>
+<INCLUDE>gst/net/gstnetcontrolmessagemeta.h</INCLUDE>
+GstNetControlMessageMeta
+gst_buffer_add_net_control_message_meta
+gst_buffer_get_net_control_message_meta
+gst_net_control_message_meta_get_info
+<SUBSECTION Standard>
+GST_NET_CONTROL_MESSAGE_META_API_TYPE
+GST_NET_CONTROL_MESSAGE_META_INFO
+<SUBSECTION Private>
+gst_net_control_message_meta_api_get_type
+</SECTION>
 
 <SECTION>
 <FILE>gstnetclientclock</FILE>
 <TITLE>GstNetClientClock</TITLE>
 <INCLUDE>gst/net/gstnet.h</INCLUDE>
 GstNetClientClock
+GstNtpClock
 gst_net_client_clock_new
+gst_ntp_clock_new
 <SUBSECTION Standard>
 GstNetClientClockClass
 GstNetClientClockPrivate
@@ -878,8 +917,15 @@
 GST_TYPE_NET_CLIENT_CLOCK
 GST_NET_CLIENT_CLOCK_CLASS
 GST_IS_NET_CLIENT_CLOCK_CLASS
+GstNtpClockClass
+GST_NTP_CLOCK
+GST_IS_NTP_CLOCK
+GST_TYPE_NTP_CLOCK
+GST_NTP_CLOCK_CLASS
+GST_IS_NTP_CLOCK_CLASS
 <SUBSECTION Private>
 gst_net_client_clock_get_type
+gst_ntp_clock_get_type
 </SECTION>
 
 
@@ -921,6 +967,35 @@
 </SECTION>
 
 <SECTION>
+<FILE>gstptpclock</FILE>
+<TITLE>GstPtpClock</TITLE>
+<INCLUDE>gst/net/net.h</INCLUDE>
+GST_PTP_CLOCK_ID_NONE
+
+gst_ptp_init
+gst_ptp_deinit
+gst_ptp_is_initialized
+gst_ptp_is_supported
+
+GstPtpClock
+gst_ptp_clock_new
+
+GstPtpStatisticsCallback
+gst_ptp_statistics_callback_add
+gst_ptp_statistics_callback_remove
+<SUBSECTION Standard>
+GstPtpClockClass
+GstPtpClockPrivate
+GST_PTP_CLOCK
+GST_IS_PTP_CLOCK
+GST_TYPE_PTP_CLOCK
+GST_PTP_CLOCK_CLASS
+GST_IS_PTP_CLOCK_CLASS
+<SUBSECTION Private>
+gst_ptp_clock_get_type
+</SECTION>
+
+<SECTION>
 <FILE>gstcheck</FILE>
 <TITLE>GstCheck</TITLE>
 <INCLUDE>gst/check/gstcheck.h</INCLUDE>
@@ -982,6 +1057,8 @@
 gst_check_setup_sink_pad_from_template
 gst_check_setup_src_pad_by_name_from_template
 gst_check_setup_src_pad_from_template
+gst_check_objects_destroyed_on_unref
+gst_check_object_destroyed_on_unref
 
 <SUBSECTION Private>
 MAIN_INIT
@@ -1124,6 +1201,119 @@
 </SECTION>
 
 <SECTION>
+<FILE>gstharness</FILE>
+<TITLE>GstHarness</TITLE>
+<INCLUDE>gst/check/check.h</INCLUDE>
+GstHarness
+
+gst_harness_new_full
+gst_harness_new_with_element
+gst_harness_new_with_padnames
+gst_harness_new_with_templates
+gst_harness_new
+gst_harness_new_parse
+gst_harness_teardown
+
+gst_harness_add_element_src_pad
+gst_harness_add_element_sink_pad
+
+gst_harness_set_src_caps
+gst_harness_set_sink_caps
+gst_harness_set_caps
+gst_harness_set_src_caps_str
+gst_harness_set_sink_caps_str
+gst_harness_set_caps_str
+
+gst_harness_use_systemclock
+gst_harness_use_testclock
+gst_harness_get_testclock
+gst_harness_set_time
+gst_harness_wait_for_clock_id_waits
+gst_harness_crank_single_clock_wait
+gst_harness_crank_multiple_clock_waits
+
+gst_harness_play
+gst_harness_set_blocking_push_mode
+gst_harness_set_forwarding
+
+gst_harness_create_buffer
+gst_harness_push
+gst_harness_pull
+gst_harness_try_pull
+gst_harness_push_and_pull
+gst_harness_buffers_received
+gst_harness_buffers_in_queue
+gst_harness_set_drop_buffers
+gst_harness_dump_to_file
+gst_harness_get_last_pushed_timestamp
+
+gst_harness_push_event
+gst_harness_pull_event
+gst_harness_try_pull_event
+gst_harness_events_received
+gst_harness_events_in_queue
+
+gst_harness_push_upstream_event
+gst_harness_pull_upstream_event
+gst_harness_try_pull_upstream_event
+gst_harness_upstream_events_received
+gst_harness_upstream_events_in_queue
+
+gst_harness_query_latency
+gst_harness_set_upstream_latency
+
+gst_harness_set_propose_allocator
+gst_harness_get_allocator
+
+gst_harness_add_src
+gst_harness_add_src_harness
+gst_harness_add_src_parse
+gst_harness_push_from_src
+gst_harness_src_crank_and_push_many
+gst_harness_src_push_event
+
+gst_harness_add_sink
+gst_harness_add_sink_harness
+gst_harness_add_sink_parse
+gst_harness_push_to_sink
+gst_harness_sink_push_many
+
+gst_harness_find_element
+gst_harness_set
+gst_harness_get
+gst_harness_add_probe
+
+GstHarnessThread
+
+gst_harness_stress_thread_stop
+gst_harness_stress_custom_start
+
+gst_harness_stress_statechange_start
+gst_harness_stress_statechange_start_full
+
+gst_harness_stress_push_buffer_start
+gst_harness_stress_push_buffer_start_full
+
+GstHarnessPrepareBufferFunc
+gst_harness_stress_push_buffer_with_cb_start
+gst_harness_stress_push_buffer_with_cb_start_full
+
+gst_harness_stress_push_event_start
+gst_harness_stress_push_event_start_full
+
+gst_harness_stress_send_upstream_event_start
+gst_harness_stress_push_upstream_event_start_full
+
+gst_harness_stress_property_start
+gst_harness_stress_property_start_full
+
+gst_harness_stress_requestpad_start
+gst_harness_stress_requestpad_start_full
+<SUBSECTION Standard>
+GstHarnessPrivate
+</SECTION>
+
+<SECTION>
 <FILE>gsttestclock</FILE>
 <TITLE>GstTestClock</TITLE>
 <INCLUDE>gst/check/gsttestclock.h</INCLUDE>
diff --git a/docs/libs/html/GstARGBControlBinding.html b/docs/libs/html/GstARGBControlBinding.html
index 85db73d..d374da5 100644
--- a/docs/libs/html/GstARGBControlBinding.html
+++ b/docs/libs/html/GstARGBControlBinding.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstARGBControlBinding</title>
+<title>GstARGBControlBinding: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="prev" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="next" href="GstDirectControlBinding.html" title="GstDirectControlBinding">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -203,7 +203,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstAdapter.html b/docs/libs/html/GstAdapter.html
index 8557365..114ff4e 100644
--- a/docs/libs/html/GstAdapter.html
+++ b/docs/libs/html/GstAdapter.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstAdapter</title>
+<title>GstAdapter: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstPushSrc.html" title="GstPushSrc">
 <link rel="next" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -141,11 +141,27 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
 </td>
 <td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-get-buffer" title="gst_adapter_get_buffer ()">gst_adapter_get_buffer</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
 <a class="link" href="GstAdapter.html#gst-adapter-take-buffer-fast" title="gst_adapter_take_buffer_fast ()">gst_adapter_take_buffer_fast</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
 <td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-get-buffer-fast" title="gst_adapter_get_buffer_fast ()">gst_adapter_get_buffer_fast</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
 </td>
 <td class="function_name">
@@ -154,6 +170,30 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-get-list" title="gst_adapter_get_list ()">gst_adapter_get_list</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="returnvalue">GstBufferList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-take-buffer-list" title="gst_adapter_take_buffer_list ()">gst_adapter_take_buffer_list</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="returnvalue">GstBufferList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-get-buffer-list" title="gst_adapter_get_buffer_list ()">gst_adapter_get_buffer_list</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
 </td>
 <td class="function_name">
@@ -309,7 +349,7 @@
 <p>An element using <a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> in its sink pad chain function should ensure that
 when the FLUSH_STOP event is received, that any queued data is cleared using
 <a class="link" href="GstAdapter.html#gst-adapter-clear" title="gst_adapter_clear ()"><code class="function">gst_adapter_clear()</code></a>. Data should also be cleared or processed on EOS and
-when changing state from <code class="literal">GST_STATE_PAUSED</code> to <code class="literal">GST_STATE_READY</code>.</p>
+when changing state from <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-PAUSED:CAPS"><code class="literal">GST_STATE_PAUSED</code></a> to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-READY:CAPS"><code class="literal">GST_STATE_READY</code></a>.</p>
 <p>Also check the GST_BUFFER_FLAG_DISCONT flag on the buffer. Some elements might
 need to clear the adapter after a discontinuity.</p>
 <p>The adapter will keep track of the timestamps of the buffers
@@ -498,8 +538,9 @@
  + <em class="parameter"><code>size</code></em>
 ) bytes
 available before calling this function.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.7.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -546,8 +587,9 @@
  and into a new <a href="https://developer.gnome.org/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> structure which is returned. Depending on
 the value of the <em class="parameter"><code>size</code></em>
  argument an empty <a href="https://developer.gnome.org/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> structure may be returned.</p>
+<p><span class="annotation">[<acronym title="Rename the original symbol's name to SYMBOL."><span class="acronym">rename-to</span></acronym> gst_adapter_copy]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -574,12 +616,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.8.6"></a><h4>Returns</h4>
-<p> A new <a href="https://developer.gnome.org/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> structure containing the copied data.</p>
-<p>Rename to: gst_adapter_copy. </p>
+<a name="id-1.2.4.8.8.8.7"></a><h4>Returns</h4>
+<p> A new <a href="https://developer.gnome.org/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> structure containing the copied data. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -642,7 +683,6 @@
 <a name="id-1.2.4.8.8.10.6"></a><h4>Returns</h4>
 <p> number of bytes available in <em class="parameter"><code>adapter</code></em>
 </p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -673,7 +713,6 @@
 <p> number of bytes that are available in <em class="parameter"><code>adapter</code></em>
 without expensive
 operations</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -735,11 +774,13 @@
 flags such as the DISCONT flag are set on the returned buffer, or not.
 The caller needs to explicitly set or unset flags that should be set or
 unset.</p>
+<p>Since 1.6 this will also copy over all GstMeta of the input buffers except
+for meta with the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html#GST-META-FLAG-POOLED:CAPS"><code class="literal">GST_META_FLAG_POOLED</code></a> flag or with the "memory" tag.</p>
 <p>Caller owns a reference to the returned buffer. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> after
 usage.</p>
 <p>Free-function: gst_buffer_unref</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.13.8"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.13.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -761,7 +802,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.13.9"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.13.10"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> containing the first
 <em class="parameter"><code>nbytes</code></em>
 of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
@@ -772,6 +813,53 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-adapter-get-buffer"></a><h3>gst_adapter_get_buffer ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+gst_adapter_get_buffer (<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><span class="type">gsize</span> nbytes</code></em>);</pre>
+<p>Returns a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> containing the first <em class="parameter"><code>nbytes</code></em>
+ of the <em class="parameter"><code>adapter</code></em>
+, but
+does not flush them from the adapter. See <a class="link" href="GstAdapter.html#gst-adapter-take-buffer" title="gst_adapter_take_buffer ()"><code class="function">gst_adapter_take_buffer()</code></a>
+for details.</p>
+<p>Caller owns a reference to the returned buffer. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> after
+usage.</p>
+<p>Free-function: gst_buffer_unref</p>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.14.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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>nbytes</p></td>
+<td class="parameter_description"><p>the number of bytes to get</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.14.8"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> containing the first
+<em class="parameter"><code>nbytes</code></em>
+of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
+bytes are not available.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> when no longer needed. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-adapter-take-buffer-fast"></a><h3>gst_adapter_take_buffer_fast ()</h3>
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
 gst_adapter_take_buffer_fast (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>,
@@ -789,13 +877,15 @@
 flags such as the DISCONT flag are set on the returned buffer, or not.
 The caller needs to explicitly set or unset flags that should be set or
 unset.</p>
+<p>This will also copy over all GstMeta of the input buffers except
+for meta with the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html#GST-META-FLAG-POOLED:CAPS"><code class="literal">GST_META_FLAG_POOLED</code></a> flag or with the "memory" tag.</p>
 <p>This function can return buffer up to the return value of
 <a class="link" href="GstAdapter.html#gst-adapter-available" title="gst_adapter_available ()"><code class="function">gst_adapter_available()</code></a> without making copies if possible.</p>
 <p>Caller owns a reference to the returned buffer. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> after
 usage.</p>
 <p>Free-function: gst_buffer_unref</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.14.9"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.15.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -817,7 +907,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.14.10"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.15.11"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> containing the first
 <em class="parameter"><code>nbytes</code></em>
 of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
@@ -825,7 +915,54 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> when no longer needed. </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.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-get-buffer-fast"></a><h3>gst_adapter_get_buffer_fast ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+gst_adapter_get_buffer_fast (<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><span class="type">gsize</span> nbytes</code></em>);</pre>
+<p>Returns a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> containing the first <em class="parameter"><code>nbytes</code></em>
+ of the <em class="parameter"><code>adapter</code></em>
+, but
+does not flush them from the adapter. See <a class="link" href="GstAdapter.html#gst-adapter-take-buffer-fast" title="gst_adapter_take_buffer_fast ()"><code class="function">gst_adapter_take_buffer_fast()</code></a>
+for details.</p>
+<p>Caller owns a reference to the returned buffer. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> after
+usage.</p>
+<p>Free-function: gst_buffer_unref</p>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.16.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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>nbytes</p></td>
+<td class="parameter_description"><p>the number of bytes to get</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.16.8"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> containing the first
+<em class="parameter"><code>nbytes</code></em>
+of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
+bytes are not available.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> when no longer needed. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -842,7 +979,7 @@
 <p>Caller owns returned list and contained buffers. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> each
 buffer in the list before freeing the list after usage.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.15.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.17.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -864,7 +1001,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.15.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.17.7"></a><h4>Returns</h4>
 <p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 buffers containing the first <em class="parameter"><code>nbytes</code></em>
 of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
@@ -874,6 +1011,144 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-adapter-get-list"></a><h3>gst_adapter_get_list ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+gst_adapter_get_list (<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><span class="type">gsize</span> nbytes</code></em>);</pre>
+<p>Returns a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of buffers containing the first <em class="parameter"><code>nbytes</code></em>
+ bytes of the
+<em class="parameter"><code>adapter</code></em>
+, but does not flush them from the adapter. See
+<a class="link" href="GstAdapter.html#gst-adapter-take-list" title="gst_adapter_take_list ()"><code class="function">gst_adapter_take_list()</code></a> for details.</p>
+<p>Caller owns returned list and contained buffers. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref"><code class="function">gst_buffer_unref()</code></a> each
+buffer in the list before freeing the list after usage.</p>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.18.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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>nbytes</p></td>
+<td class="parameter_description"><p>the number of bytes to get</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.18.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
+buffers containing the first <em class="parameter"><code>nbytes</code></em>
+of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
+bytes are not available. </p>
+<p><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Gst.Buffer][<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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-take-buffer-list"></a><h3>gst_adapter_take_buffer_list ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="returnvalue">GstBufferList</span></a> *
+gst_adapter_take_buffer_list (<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><span class="type">gsize</span> nbytes</code></em>);</pre>
+<p>Returns a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="type">GstBufferList</span></a> of buffers containing the first <em class="parameter"><code>nbytes</code></em>
+ bytes of
+the <em class="parameter"><code>adapter</code></em>
+. The returned bytes will be flushed from the adapter.
+When the caller can deal with individual buffers, this function is more
+performant because no memory should be copied.</p>
+<p>Caller owns the returned list. Call <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html#gst-buffer-list-unref"><code class="function">gst_buffer_list_unref()</code></a> to free
+the list after usage.</p>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.19.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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>nbytes</p></td>
+<td class="parameter_description"><p>the number of bytes to take</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.19.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="type">GstBufferList</span></a> of buffers containing
+the first <em class="parameter"><code>nbytes</code></em>
+of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
+bytes are not
+available. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-get-buffer-list"></a><h3>gst_adapter_get_buffer_list ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="returnvalue">GstBufferList</span></a> *
+gst_adapter_get_buffer_list (<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><span class="type">gsize</span> nbytes</code></em>);</pre>
+<p>Returns a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="type">GstBufferList</span></a> of buffers containing the first <em class="parameter"><code>nbytes</code></em>
+ bytes of
+the <em class="parameter"><code>adapter</code></em>
+ but does not flush them from the adapter. See
+<a class="link" href="GstAdapter.html#gst-adapter-take-buffer-list" title="gst_adapter_take_buffer_list ()"><code class="function">gst_adapter_take_buffer_list()</code></a> for details.</p>
+<p>Caller owns the returned list. Call <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html#gst-buffer-list-unref"><code class="function">gst_buffer_list_unref()</code></a> to free
+the list after usage.</p>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.20.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>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>nbytes</p></td>
+<td class="parameter_description"><p>the number of bytes to get</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.8.8.20.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferList.html"><span class="type">GstBufferList</span></a> of buffers containing
+the first <em class="parameter"><code>nbytes</code></em>
+of the adapter, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>nbytes</code></em>
+bytes are not
+available. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-adapter-prev-pts"></a><h3>gst_adapter_prev_pts ()</h3>
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
 gst_adapter_prev_pts (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>,
@@ -887,7 +1162,7 @@
 the first byte with a pts is removed from the adapter, the pts
 and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.16.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.21.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -909,9 +1184,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.16.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.21.7"></a><h4>Returns</h4>
 <p> The previously seen pts.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -929,7 +1203,7 @@
 the first byte with a dts is removed from the adapter, the dts
 and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.17.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.22.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -951,9 +1225,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.17.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.22.7"></a><h4>Returns</h4>
 <p> The previously seen dts.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -973,7 +1246,7 @@
 the first byte with a pts is removed from the adapter, the pts
 and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.18.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.23.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1000,11 +1273,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.18.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.23.7"></a><h4>Returns</h4>
 <p> The previously seen pts at given offset.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1023,7 +1295,7 @@
 the first byte with a dts is removed from the adapter, the dts
 and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.19.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.24.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1050,11 +1322,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.19.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.24.7"></a><h4>Returns</h4>
 <p> The previously seen dts at given offset.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1080,7 +1351,7 @@
 <p>This function calls <a class="link" href="GstAdapter.html#gst-adapter-masked-scan-uint32-peek" title="gst_adapter_masked_scan_uint32_peek ()"><code class="function">gst_adapter_masked_scan_uint32_peek()</code></a> passing <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
 for value.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.20.8"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.25.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1119,7 +1390,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.20.9"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.25.9"></a><h4>Returns</h4>
 <p> offset of the first match, or -1 if no match was found.</p>
 <p>Example:</p>
 <pre class="programlisting">
@@ -1139,7 +1410,6 @@
 gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
 // -&gt; returns -1
 </pre>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1168,7 +1438,7 @@
 <p>It is an error to call this function without making sure that there is
 enough data (offset+size bytes) in the adapter.</p>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.21.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.8.8.26.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1212,9 +1482,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.21.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.8.8.26.8"></a><h4>Returns</h4>
 <p> offset of the first match, or -1 if no match was found.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1228,7 +1497,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstBaseParse.html b/docs/libs/html/GstBaseParse.html
index 2b01de6..4138846 100644
--- a/docs/libs/html/GstBaseParse.html
+++ b/docs/libs/html/GstBaseParse.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstBaseParse</title>
+<title>GstBaseParse: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="next" href="GstBaseSrc.html" title="GstBaseSrc">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -46,6 +46,14 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
+<a class="link" href="GstBaseParse.html#gst-base-parse-merge-tags" title="gst_base_parse_merge_tags ()">gst_base_parse_merge_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="GstBaseParse.html#gst-base-parse-set-duration" title="gst_base_parse_set_duration ()">gst_base_parse_set_duration</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -395,9 +403,9 @@
 needs to set the fixed caps on srcpad, when the format is ensured (e.g.
 when base class calls subclass' <em class="parameter"><code>set_sink_caps</code></em>
  function).</p>
-<p>This base class uses <code class="literal">GST_FORMAT_DEFAULT</code> as a meaning of frames. So,
+<p>This base class uses <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-DEFAULT:CAPS"><code class="literal">GST_FORMAT_DEFAULT</code></a> as a meaning of frames. So,
 subclass conversion routine needs to know that conversion from
-<code class="literal">GST_FORMAT_TIME</code> to <code class="literal">GST_FORMAT_DEFAULT</code> must return the
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-DEFAULT:CAPS"><code class="literal">GST_FORMAT_DEFAULT</code></a> must return the
 frame number that can be found from the given byte position.</p>
 <p><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> uses subclasses conversion methods also for seeking (or
 otherwise uses its own default one, see also below).</p>
@@ -448,6 +456,48 @@
 <div class="refsect1">
 <a name="GstBaseParse.functions_details"></a><h2>Functions</h2>
 <div class="refsect2">
+<a name="gst-base-parse-merge-tags"></a><h3>gst_base_parse_merge_tags ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_base_parse_merge_tags (<em class="parameter"><code><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+                           <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagList.html"><span class="type">GstTagList</span></a> *tags</code></em>,
+                           <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagList.html#GstTagMergeMode"><span class="type">GstTagMergeMode</span></a> mode</code></em>);</pre>
+<p>Sets the parser subclass's tags and how they should be merged with any
+upstream stream tags. This will override any tags previously-set
+with <a class="link" href="GstBaseParse.html#gst-base-parse-merge-tags" title="gst_base_parse_merge_tags ()"><code class="function">gst_base_parse_merge_tags()</code></a>.</p>
+<p>Note that this is provided for convenience, and the subclass is
+not required to use this and can still do tag handling on its own.</p>
+<div class="refsect3">
+<a name="id-1.2.4.3.9.2.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>parse</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagList.html"><span class="type">GstTagList</span></a> to merge, or NULL to unset
+previously-set tags. </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>mode</p></td>
+<td class="parameter_description"><p>the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagList.html#GstTagMergeMode"><span class="type">GstTagMergeMode</span></a> to use, usually <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagList.html#GST-TAG-MERGE-REPLACE:CAPS"><span class="type">GST_TAG_MERGE_REPLACE</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-base-parse-set-duration"></a><h3>gst_base_parse_set_duration ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_base_parse_set_duration (<em class="parameter"><code><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
@@ -462,7 +512,7 @@
 
 frames.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -507,7 +557,7 @@
 a seek position, if there's no index and the format is syncable
 (see <a class="link" href="GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()"><code class="function">gst_base_parse_set_syncable()</code></a>).</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -538,7 +588,7 @@
 <p>Subclass can use this function to tell the base class that it needs to
 give at least <span class="type">min_size</span> buffers.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -579,7 +629,7 @@
 passthrough semantics in <em class="parameter"><code>pre_push_frame</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -611,7 +661,7 @@
 determines whether seeking based on bitrate averages
 is possible for a format/stream.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -643,7 +693,7 @@
 parse and provide.  In particular, intrinsic (rather than estimated) time
 can be obtained following a seek.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -682,7 +732,7 @@
  number of frames to ensure the desired segment is
 entirely filled upon decoding.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -730,7 +780,7 @@
 by the parsing process.  If there is such a latency, which depends on the
 particular parsing of the format, it typically corresponds to 1 frame duration.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -768,7 +818,7 @@
 be otherwise. Sub-classes implementing such formats should disable
 timestamp inferring.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -801,7 +851,7 @@
 data streams with reordering, where PTS can go backward. Sub-classes
 implementing such formats should disable PTS interpolation.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -838,7 +888,7 @@
 This function can be used to set the timestamps based on the offset
 into the frame data that the picture starts.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.13.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -859,7 +909,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -872,7 +922,7 @@
                                 <em class="parameter"><code><span class="type">gint64</span> *dest_value</code></em>);</pre>
 <p>Default implementation of "convert" vmethod in <a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> class.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -909,9 +959,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if conversion was successful.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -931,7 +980,7 @@
 whether the stream is (upstream) seekable, another entry is already "close"
 to the new entry, etc.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -968,9 +1017,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating whether entry was added</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -984,7 +1032,7 @@
 elements written in C should usually allocate the frame on the stack and
 then use <a class="link" href="GstBaseParse.html#gst-base-parse-frame-init" title="gst_base_parse_frame_init ()"><code class="function">gst_base_parse_frame_init()</code></a> to initialise it.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1013,10 +1061,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.15.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.16.6"></a><h4>Returns</h4>
 <p> a newly-allocated <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. Free with
 <a class="link" href="GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()"><code class="function">gst_base_parse_frame_free()</code></a> when no longer needed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1030,7 +1077,7 @@
 the actual frame. Use this function to initialise a <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>
 allocated on the stack.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1063,7 +1110,7 @@
 .</p>
 <p>This must be called with sinkpad STREAM_LOCK held.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.18.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.19.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1085,9 +1132,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.18.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.19.7"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1111,7 +1157,7 @@
 caller retains ownership of <em class="parameter"><code>frame</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.19.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.20.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1138,9 +1184,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.19.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.20.8"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> that should be escalated to caller (of caller)</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1151,7 +1196,7 @@
 <p>Obtains current drain status (ie. whether EOS has been received and
 the parser is now processing the frames at the end of the stream)</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1185,7 +1230,7 @@
 </pre>
 <p>Obtains current sync status.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.23.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1207,7 +1252,7 @@
 </pre>
 <p>Gives the pointer to the sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.24.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1229,7 +1274,7 @@
 </pre>
 <p>Gives the pointer to the source <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.25.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1249,7 +1294,10 @@
 <a name="GstBaseParse.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
 <a name="GstBaseParse-struct"></a><h3>struct GstBaseParse</h3>
-<pre class="programlisting">struct GstBaseParse;</pre>
+<pre class="programlisting">struct GstBaseParse {
+  GstElement     element;
+};
+</pre>
 <p>The opaque <a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> data structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.10.2.5"></a><h4>Members</h4>
@@ -1259,7 +1307,11 @@
 <col class="struct_members_description">
 <col width="200px" class="struct_members_annotations">
 </colgroup>
-<tbody></tbody>
+<tbody><tr>
+<td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> <em class="structfield"><code><a name="GstBaseParse-struct.element"></a>element</code></em>;</p></td>
+<td class="struct_member_description"><p>the parent element.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr></tbody>
 </table></div>
 </div>
 </div>
@@ -1311,10 +1363,8 @@
 };
 </pre>
 <p>Subclasses can override any of the available virtual methods or not, as
-needed. At minimum <em class="parameter"><code>check_valid_frame</code></em>
- and <em class="parameter"><code>parse_frame</code></em>
- needs to be
-overridden.</p>
+needed. At minimum <em class="parameter"><code>handle_frame</code></em>
+ needs to be overridden.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1345,7 +1395,8 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseParseClass.set-sink-caps"></a>set_sink_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>allows the subclass to be notified of the actual caps set.</p></td>
+<td class="struct_member_description"><p>Optional.
+Allows the subclass to be notified of the actual caps set.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -1395,7 +1446,8 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseParseClass.get-sink-caps"></a>get_sink_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>allows the subclass to do its own sink get caps if needed.</p></td>
+<td class="struct_member_description"><p>Optional.
+Allows the subclass to do its own sink get caps if needed.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -1590,7 +1642,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstBaseSink.html b/docs/libs/html/GstBaseSink.html
index e1537c8..343b88d 100644
--- a/docs/libs/html/GstBaseSink.html
+++ b/docs/libs/html/GstBaseSink.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstBaseSink</title>
+<title>GstBaseSink: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstBaseSrc.html" title="GstBaseSrc">
 <link rel="next" href="GstBaseTransform.html" title="GstBaseTransform">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -477,7 +477,7 @@
 
 <p></p>
 <p><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will handle the prerolling correctly. This means that it will
-return <code class="literal">GST_STATE_CHANGE_ASYNC</code> from a state change to PAUSED until the first
+return <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-CHANGE-ASYNC:CAPS"><code class="literal">GST_STATE_CHANGE_ASYNC</code></a> from a state change to PAUSED until the first
 buffer arrives in this element. The base class will call the
 <a class="link" href="GstBaseSink.html#GstBaseSinkClass.preroll"><code class="function">GstBaseSinkClass.preroll()</code></a> vmethod with this preroll buffer and will then
 commit the state change to the next asynchronously pending state.</p>
@@ -499,13 +499,13 @@
 <a class="link" href="GstBaseSink.html#GstBaseSinkClass.get-times"><code class="function">GstBaseSinkClass.get_times()</code></a> call before posting an EOS message. When the
 element receives EOS in PAUSED, preroll completes, the event is queued and an
 EOS message is posted when going to PLAYING.</p>
-<p><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will internally use the <code class="literal">GST_EVENT_SEGMENT</code> events to schedule
+<p><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will internally use the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#GST-EVENT-SEGMENT:CAPS"><code class="literal">GST_EVENT_SEGMENT</code></a> events to schedule
 synchronisation and clipping of buffers. Buffers that fall completely outside
 of the current segment are dropped. Buffers that fall partially in the
 segment are rendered (and prerolled). Subclasses should do any subbuffer
 clipping themselves when needed.</p>
 <p><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will by default report the current playback position in
-<code class="literal">GST_FORMAT_TIME</code> based on the current clock time and segment information.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> based on the current clock time and segment information.
 If no clock has been set on the element, the query will be forwarded
 upstream.</p>
 <p>The <a class="link" href="GstBaseSink.html#GstBaseSinkClass.set-caps"><code class="function">GstBaseSinkClass.set_caps()</code></a> function will be called when the subclass
@@ -610,7 +610,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.2.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query succeeded.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -637,7 +636,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.3.6"></a><h4>Returns</h4>
 <p> The configured latency.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -676,9 +674,8 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.5.9.4.7"></a><h4>Returns</h4>
-<p> <code class="literal">GST_FLOW_OK</code> if the preroll completed and processing can
+<p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> if the preroll completed and processing can
 continue. Any other return value should be returned from the render vmethod.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -729,7 +726,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.5.8"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -741,9 +737,9 @@
 against the clock it must unblock when going from PLAYING to the PAUSED state
 and call this method before continuing to render the remaining data.</p>
 <p>This function will block until a state change to PLAYING happens (in which
-case this function returns <code class="literal">GST_FLOW_OK</code>) or the processing must be stopped due
+case this function returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a>) or the processing must be stopped due
 to a state change to READY or a FLUSH event (in which case this function
-returns <code class="literal">GST_FLOW_FLUSHING</code>).</p>
+returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-FLUSHING:CAPS"><code class="literal">GST_FLOW_FLUSHING</code></a>).</p>
 <p>This function should only be called with the PREROLL_LOCK held, like in the
 render function.</p>
 <div class="refsect3">
@@ -763,9 +759,8 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.5.9.6.8"></a><h4>Returns</h4>
-<p> <code class="literal">GST_FLOW_OK</code> if the preroll completed and processing can
+<p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> if the preroll completed and processing can
 continue. Any other return value should be returned from the render vmethod.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -779,9 +774,9 @@
  is reached. It is usually called by
 subclasses that use their own internal synchronisation.</p>
 <p>If <em class="parameter"><code>time</code></em>
- is not valid, no synchronisation is done and <code class="literal">GST_CLOCK_BADTIME</code> is
+ is not valid, no synchronisation is done and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-BADTIME:CAPS"><code class="literal">GST_CLOCK_BADTIME</code></a> is
 returned. Likewise, if synchronisation is disabled in the element or there
-is no clock, no synchronisation is done and <code class="literal">GST_CLOCK_BADTIME</code> is returned.</p>
+is no clock, no synchronisation is done and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-BADTIME:CAPS"><code class="literal">GST_CLOCK_BADTIME</code></a> is returned.</p>
 <p>This function should only be called with the PREROLL_LOCK held, like when
 receiving an EOS event in the <a class="link" href="GstBaseSink.html#GstBaseSinkClass.event"><code class="function">GstBaseSinkClass.event()</code></a> vmethod or when
 receiving a buffer in
@@ -820,7 +815,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.7.9"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockReturn"><span class="type">GstClockReturn</span></a></p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -886,7 +880,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.9.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the sink is configured to synchronize against the clock.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -950,7 +943,6 @@
 <p> The maximum time in nanoseconds that a buffer can be late
 before it is dropped and not rendered. A value of -1 means an
 unlimited time.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1010,7 +1002,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the sink is configured to perform Quality-of-Service.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1074,7 +1065,6 @@
 <a name="id-1.2.4.5.9.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the sink is configured to perform asynchronous state
 changes.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1137,7 +1127,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.17.6"></a><h4>Returns</h4>
 <p> The synchronisation offset.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1205,7 +1194,6 @@
 <a name="id-1.2.4.5.9.19.6"></a><h4>Returns</h4>
 <p> the render delay of <em class="parameter"><code>sink</code></em>
 .</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1297,7 +1285,6 @@
 <a name="id-1.2.4.5.9.22.6"></a><h4>Returns</h4>
 <p> the number of bytes <em class="parameter"><code>sink</code></em>
 will pull in pull mode.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1326,7 +1313,6 @@
 <a name="id-1.2.4.5.9.23.6"></a><h4>Returns</h4>
 <p> the number of nanoseconds <em class="parameter"><code>sink</code></em>
 will put between frames.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1390,7 +1376,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1417,9 +1403,8 @@
 <a name="id-1.2.4.5.9.26.6"></a><h4>Returns</h4>
 <p> the maximum number of bits per second <em class="parameter"><code>sink</code></em>
 will render.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1479,7 +1464,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.5.9.28.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the sink is configured to store the last received sample.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1798,7 +1782,7 @@
 rendering of the buffers when it would exceed to max-bitrate.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1862,7 +1846,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstBaseSrc.html b/docs/libs/html/GstBaseSrc.html
index bbe0c35..5af1d73 100644
--- a/docs/libs/html/GstBaseSrc.html
+++ b/docs/libs/html/GstBaseSrc.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstBaseSrc</title>
+<title>GstBaseSrc: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstBaseParse.html" title="GstBaseParse">
 <link rel="next" href="GstBaseSink.html" title="GstBaseSink">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -295,18 +295,18 @@
 </ul></div>
 <p>The source can be configured to operate in any <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> with the
 <a class="link" href="GstBaseSrc.html#gst-base-src-set-format" title="gst_base_src_set_format ()"><code class="function">gst_base_src_set_format()</code></a> method. The currently set format determines
-the format of the internal <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html"><span class="type">GstSegment</span></a> and any <code class="literal">GST_EVENT_SEGMENT</code>
-events. The default format for <a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> is <code class="literal">GST_FORMAT_BYTES</code>.</p>
+the format of the internal <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html"><span class="type">GstSegment</span></a> and any <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#GST-EVENT-SEGMENT:CAPS"><code class="literal">GST_EVENT_SEGMENT</code></a>
+events. The default format for <a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> is <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"><code class="literal">GST_FORMAT_BYTES</code></a>.</p>
 <p><a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> always supports push mode scheduling. If the following
 conditions are met, it also supports pull mode scheduling:</p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>The format is set to <code class="literal">GST_FORMAT_BYTES</code> (default).</p></li>
+<li class="listitem"><p>The format is set to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"><code class="literal">GST_FORMAT_BYTES</code></a> (default).</p></li>
 <li class="listitem"><p><a class="link" href="GstBaseSrc.html#GstBaseSrcClass.is-seekable"><code class="function">GstBaseSrcClass.is_seekable()</code></a> returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p></li>
 </ul></div>
 <p>If all the conditions are met for operating in pull mode, <a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> is
 automatically seekable in push mode as well. The following conditions must
 be met to make the element seekable in push mode when the format is not
-<code class="literal">GST_FORMAT_BYTES</code>:</p>
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"><code class="literal">GST_FORMAT_BYTES</code></a>:</p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem"><p>
     <a class="link" href="GstBaseSrc.html#GstBaseSrcClass.is-seekable"><code class="function">GstBaseSrcClass.is_seekable()</code></a> returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.
@@ -335,7 +335,7 @@
 <a class="link" href="GstBaseSrc.html#GstBaseSrcClass.create"><code class="function">GstBaseSrcClass.create()</code></a> method will not be called in PAUSED but only in
 PLAYING. To signal the pipeline that the element will not produce data, the
 return value from the READY to PAUSED state will be
-<code class="literal">GST_STATE_CHANGE_NO_PREROLL</code>.</p>
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-CHANGE-NO-PREROLL:CAPS"><code class="literal">GST_STATE_CHANGE_NO_PREROLL</code></a>.</p>
 <p>A typical live source will timestamp the buffers it creates with the
 current running time of the pipeline. This is one reason why a live source
 can only produce data in the PLAYING state, when the clock is actually
@@ -414,7 +414,7 @@
 
 An application may send an EOS event to a source element to make it
 perform the EOS logic (send EOS event downstream or post a
-<code class="literal">GST_MESSAGE_SEGMENT_DONE</code> on the bus). This can typically be done
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#GST-MESSAGE-SEGMENT-DONE:CAPS"><code class="literal">GST_MESSAGE_SEGMENT_DONE</code></a> on the bus). This can typically be done
 with the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-send-event"><code class="function">gst_element_send_event()</code></a> function on the element or its parent bin.
 
 After the EOS has been sent to the element, the application should wait for
@@ -433,9 +433,9 @@
 against the clock it must unblock when going from PLAYING to the PAUSED state
 and call this method before continuing to produce the remaining data.</p>
 <p>This function will block until a state change to PLAYING happens (in which
-case this function returns <code class="literal">GST_FLOW_OK</code>) or the processing must be stopped due
+case this function returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a>) or the processing must be stopped due
 to a state change to READY or a FLUSH event (in which case this function
-returns <code class="literal">GST_FLOW_FLUSHING</code>).</p>
+returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-FLUSHING:CAPS"><code class="literal">GST_FLOW_FLUSHING</code></a>).</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.9.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -453,10 +453,9 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.4.9.2.7"></a><h4>Returns</h4>
-<p> <code class="literal">GST_FLOW_OK</code> if <em class="parameter"><code>src</code></em>
+<p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> if <em class="parameter"><code>src</code></em>
 is PLAYING and processing can
 continue. Any other return value should be returned from the create vmethod.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -483,7 +482,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.3.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -543,7 +541,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if element is in live mode.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -593,7 +590,7 @@
 for sending SEGMENT events and for performing seeks.</p>
 <p>If a format of GST_FORMAT_BYTES is set, the element will be able to
 operate in pull mode if the <a class="link" href="GstBaseSrc.html#GstBaseSrcClass.is-seekable"><code class="function">GstBaseSrcClass.is_seekable()</code></a> returns <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
-<p>This function must only be called in states &lt; <code class="literal">GST_STATE_PAUSED</code>.</p>
+<p>This function must only be called in states &lt; <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-PAUSED:CAPS"><code class="literal">GST_STATE_PAUSED</code></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.9.7.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -629,10 +626,10 @@
  will be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when <em class="parameter"><code>src</code></em>
  is
 configured as a live source. <em class="parameter"><code>min_latency</code></em>
- will be set to the difference
-between the running time and the timestamp of the first buffer.
-<em class="parameter"><code>max_latency</code></em>
- is always the undefined value of -1.</p>
+ and <em class="parameter"><code>max_latency</code></em>
+ will be set
+to the difference between the running time and the timestamp of the first
+buffer.</p>
 <p>This function is mostly used by subclasses.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.9.8.6"></a><h4>Parameters</h4>
@@ -669,7 +666,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.8.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the query succeeded.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -697,7 +693,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.9.6"></a><h4>Returns</h4>
 <p> the number of bytes pushed with each buffer.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -758,7 +753,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.11.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the base class will automatically timestamp outgoing buffers.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -861,7 +855,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -911,7 +905,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.15.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if preparation of the seamless segment succeeded.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -937,8 +930,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>caps</p></td>
-<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a></p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><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>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -946,7 +939,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the caps could be set</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -961,7 +953,7 @@
 used by the base class and its <em class="parameter"><code>params</code></em>
 .</p>
 <p>Unref the <em class="parameter"><code>allocator</code></em>
- after use it.</p>
+ after usage.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.9.17.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1016,7 +1008,7 @@
 <div class="refsect3">
 <a name="id-1.2.4.4.9.18.5"></a><h4>Returns</h4>
 <p> the instance of the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferPool.html"><span class="type">GstBufferPool</span></a> used
-by the src; free it after use it. </p>
+by the src; unref it after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 </div>
@@ -1046,7 +1038,6 @@
 <a name="id-1.2.4.4.9.19.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>src</code></em>
 is operating in async mode.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1154,7 +1145,8 @@
   void          (*get_times)    (GstBaseSrc *src, GstBuffer *buffer,
                                  GstClockTime *start, GstClockTime *end);
 
-  /* get the total size of the resource in bytes */
+  /* get the total size of the resource in the format set by
+   * gst_base_src_set_format() */
   gboolean      (*get_size)     (GstBaseSrc *src, guint64 *size);
 
   /* check if the resource is seekable */
@@ -1258,7 +1250,8 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseSrcClass.get-size"></a>get_size</code></em> ()</p></td>
-<td class="struct_member_description"><p>Return the total size of the resource, in the configured format.</p></td>
+<td class="struct_member_description"><p>Return the total size of the resource, in the format set by
+<a class="link" href="GstBaseSrc.html#gst-base-src-set-format" title="gst_base_src_set_format ()"><code class="function">gst_base_src_set_format()</code></a>.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -1415,7 +1408,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstBaseTransform.html b/docs/libs/html/GstBaseTransform.html
index 46ca63d..be6f8e9 100644
--- a/docs/libs/html/GstBaseTransform.html
+++ b/docs/libs/html/GstBaseTransform.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstBaseTransform</title>
+<title>GstBaseTransform: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstBaseSink.html" title="GstBaseSink">
 <link rel="next" href="GstPushSrc.html" title="GstPushSrc">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -146,6 +146,14 @@
 </td>
 </tr>
 <tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBaseTransform.html#gst-base-transform-update-src-caps" title="gst_base_transform_update_src_caps ()">gst_base_transform_update_src_caps</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
 <a class="link" href="GstBaseTransform.html#GST-BASE-TRANSFORM-SINK-PAD:CAPS" title="GST_BASE_TRANSFORM_SINK_PAD()">GST_BASE_TRANSFORM_SINK_PAD</a><span class="c_punctuation">()</span>
@@ -222,7 +230,14 @@
 </div>
 <div class="refsect1">
 <a name="GstBaseTransform.description"></a><h2>Description</h2>
-<p>This base class is for filter elements that process data.</p>
+<p>This base class is for filter elements that process data. Elements
+that are suitable for implementation using <a class="link" href="GstBaseTransform.html" title="GstBaseTransform"><span class="type">GstBaseTransform</span></a> are ones
+where the size and caps of the output is known entirely from the input
+caps and buffer sizes. These include elements that directly transform
+one buffer into another, modify the contents of a buffer in-place, as
+well as elements that collate multiple input buffers into one output buffer,
+or that expand one input buffer into multiple output buffers. See below
+for more concrete use cases.</p>
 <p>It provides for:</p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem"><p>one sinkpad and one srcpad</p></li>
@@ -453,7 +468,6 @@
 <a name="id-1.2.4.6.9.2.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is the transform is configured in passthrough mode.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -530,7 +544,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.0.1</p>
+<p class="since">Since: <a class="link" href="ix06.html#api-index-1.0.1">1.0.1</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -558,7 +572,6 @@
 <a name="id-1.2.4.6.9.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is the transform is configured in in_place mode.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -623,7 +636,6 @@
 <a name="id-1.2.4.6.9.7.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if QoS is enabled.</p>
 <p>MT safe.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -711,7 +723,7 @@
                                   <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> gap_aware</code></em>);</pre>
 <p>If <em class="parameter"><code>gap_aware</code></em>
  is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> (the default), output buffers will have the
-<code class="literal">GST_BUFFER_FLAG_GAP</code> flag unset.</p>
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-FLAG-GAP:CAPS"><code class="literal">GST_BUFFER_FLAG_GAP</code></a> flag unset.</p>
 <p>If set to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, the element must handle output buffers with this flag set
 correctly, i.e. it can assume that the buffer contains neutral data but must
 unset the flag if the output is no neutral data.</p>
@@ -863,12 +875,52 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-base-transform-update-src-caps"></a><h3>gst_base_transform_update_src_caps ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_base_transform_update_src_caps (<em class="parameter"><code><a class="link" href="GstBaseTransform.html" title="GstBaseTransform"><span class="type">GstBaseTransform</span></a> *trans</code></em>,
+                                    <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *updated_caps</code></em>);</pre>
+<p>Updates the srcpad caps and send the caps downstream. This function
+can be used by subclasses when they have already negotiated their caps
+but found a change in them (or computed new informations). This way,
+they can notify downstream about that change without loosing any
+buffer.</p>
+<div class="refsect3">
+<a name="id-1.2.4.6.9.15.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>trans</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBaseTransform.html" title="GstBaseTransform"><span class="type">GstBaseTransform</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>updated_caps</p></td>
+<td class="parameter_description"><p>An updated version of the srcpad caps to be pushed
+downstream</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.6.9.15.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the caps could be send downstream <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-BASE-TRANSFORM-SINK-PAD:CAPS"></a><h3>GST_BASE_TRANSFORM_SINK_PAD()</h3>
 <pre class="programlisting">#define GST_BASE_TRANSFORM_SINK_PAD(obj) (GST_BASE_TRANSFORM_CAST (obj)-&gt;sinkpad)
 </pre>
 <p>Gives the pointer to the sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.4.6.9.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.6.9.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -890,7 +942,7 @@
 </pre>
 <p>Gives the pointer to the source <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.4.6.9.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.6.9.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -977,6 +1029,9 @@
   GstFlowReturn (*transform)    (GstBaseTransform *trans, GstBuffer *inbuf,
                                  GstBuffer *outbuf);
   GstFlowReturn (*transform_ip) (GstBaseTransform *trans, GstBuffer *buf);
+
+  GstFlowReturn (*submit_input_buffer) (GstBaseTransform *trans, gboolean is_discont, GstBuffer *input);
+  GstFlowReturn (*generate_output) (GstBaseTransform *trans, GstBuffer **outbuf);
 };
 </pre>
 <p>Subclasses can override any of the available virtual methods or not, as
@@ -1158,9 +1213,9 @@
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseTransformClass.transform-meta"></a>transform_meta</code></em> ()</p></td>
 <td class="struct_member_description"><p>Optional. Transform the metadata on the input buffer to the
-output buffer. By default this method is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> and no
-metadata is copied. subclasses can implement this method and
-return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the metadata is to be copied.</p></td>
+output buffer. By default this method copies all meta without
+tags. subclasses can implement this method and return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if
+the metadata is to be copied.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -1185,6 +1240,34 @@
 Transform the incoming buffer in-place.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseTransformClass.submit-input-buffer"></a>submit_input_buffer</code></em> ()</p></td>
+<td class="struct_member_description"><p>Function which accepts a new input buffer and pre-processes it.
+The default implementation performs caps (re)negotiation, then
+QoS if needed, and places the input buffer into the <em class="parameter"><code>queued_buf</code></em>
+member variable. If the buffer is dropped due to QoS, it returns
+GST_BASE_TRANSFORM_FLOW_DROPPED. If this input buffer is not
+contiguous with any previous input buffer, then <em class="parameter"><code>is_discont</code></em>
+is set to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a>. (Since 1.6)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseTransformClass.generate-output"></a>generate_output</code></em> ()</p></td>
+<td class="struct_member_description"><p>Called after each new input buffer is submitted repeatedly
+until it either generates an error or fails to generate an output
+buffer. The default implementation takes the contents of the
+<em class="parameter"><code>queued_buf</code></em>
+variable, generates an output buffer if needed
+by calling the class <em class="parameter"><code>prepare_output_buffer</code></em>
+, and then
+calls either <em class="parameter"><code>transform</code></em>
+or <em class="parameter"><code>transform_ip</code></em>
+. Elements that don't
+do 1-to-1 transformations on input to output buffers can either
+return GST_BASE_TRANSFORM_FLOW_DROPPED or simply not generate
+an output buffer until they are ready to do so. (Since 1.6)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1228,7 +1311,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstCollectPads.html b/docs/libs/html/GstCollectPads.html
index 2e6a23d..f834734 100644
--- a/docs/libs/html/GstCollectPads.html
+++ b/docs/libs/html/GstCollectPads.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstCollectPads</title>
+<title>GstCollectPads: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-libs-GstByteWriter.html" title="GstByteWriter">
 <link rel="next" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -147,6 +147,18 @@
 </td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS:CAPS" title="GST_COLLECT_PADS_DTS()">GST_COLLECT_PADS_DTS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS-IS-VALID:CAPS" title="GST_COLLECT_PADS_DTS_IS_VALID()">GST_COLLECT_PADS_DTS_IS_VALID</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="function_type">
 <a class="link" href="GstCollectPads.html" title="GstCollectPads"><span class="returnvalue">GstCollectPads</span></a> *
 </td>
@@ -498,8 +510,7 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.12.8.3.6"></a><h4>Returns</h4>
-<p> <code class="literal">GST_FLOW_OK</code> for success</p>
-<p></p>
+<p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> for success</p>
 </div>
 </div>
 <hr>
@@ -565,7 +576,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.12.8.4.8"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> that corresponds to the result of clipping.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -626,7 +636,6 @@
 <p> Integer less than zero when first timestamp is deemed older than the second one.
 Zero if the timestamps are deemed equally old.
 Integer greater than zero when second timestamp is deemed older than the first one.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -676,7 +685,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.12.8.6.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could handle the event</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -713,7 +721,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -761,7 +769,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.12.8.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could handle the event</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -795,8 +802,7 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.12.8.9.6"></a><h4>Returns</h4>
-<p> <code class="literal">GST_FLOW_OK</code> for success</p>
-<p></p>
+<p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> for success</p>
 </div>
 </div>
 <hr>
@@ -982,13 +988,64 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-COLLECT-PADS-DTS:CAPS"></a><h3>GST_COLLECT_PADS_DTS()</h3>
+<pre class="programlisting">#define GST_COLLECT_PADS_DTS(data)                   (((GstCollectData *) data)-&gt;ABI.abi.dts)
+</pre>
+<p>Returns the DTS that has been converted to running time when using
+<a class="link" href="GstCollectPads.html#gst-collect-pads-clip-running-time" title="gst_collect_pads_clip_running_time ()"><code class="function">gst_collect_pads_clip_running_time()</code></a>. Unlike the value saved into
+the buffer, this value is of type gint64 and may be negative. This allow
+properly handling streams with frame reordering where the first DTS may
+be negative. If the initial DTS was not set, this value will be
+set to <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#G-MININT64:CAPS"><code class="literal">G_MININT64</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.4.12.8.17.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>A <a class="link" href="GstCollectPads.html#GstCollectData" title="struct GstCollectData"><span class="type">GstCollectData</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-COLLECT-PADS-DTS-IS-VALID:CAPS"></a><h3>GST_COLLECT_PADS_DTS_IS_VALID()</h3>
+<pre class="programlisting">#define GST_COLLECT_PADS_DTS_IS_VALID(data)          (GST_CLOCK_STIME_IS_VALID (GST_COLLECT_PADS_DTS (data)))
+</pre>
+<p>Check if running DTS value store is valid.</p>
+<div class="refsect3">
+<a name="id-1.2.4.12.8.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>A <a class="link" href="GstCollectPads.html#GstCollectData" title="struct GstCollectData"><span class="type">GstCollectData</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-collect-pads-new"></a><h3>gst_collect_pads_new ()</h3>
 <pre class="programlisting"><a class="link" href="GstCollectPads.html" title="GstCollectPads"><span class="returnvalue">GstCollectPads</span></a> *
 gst_collect_pads_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Create a new instance of <a class="link" href="GstCollectPads.html" title="GstCollectPads"><span class="type">GstCollectPads</span></a>.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.17.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.19.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstCollectPads.html" title="GstCollectPads"><span class="type">GstCollectPads</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> in case of an error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1024,7 +1081,7 @@
 started.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.18.10"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.20.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1062,7 +1119,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.18.11"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.20.11"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstCollectPads.html#GstCollectData" title="struct GstCollectData"><span class="type">GstCollectData</span></a> to identify the
 new pad. Or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if wrong parameters are supplied. </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="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -1081,7 +1138,7 @@
  is stopped.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.19.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.21.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1103,9 +1160,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.19.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.21.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad could be removed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1116,7 +1172,7 @@
 <p>Starts the processing of data in the collect_pads.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.20.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.22.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1140,7 +1196,7 @@
 will also unblock any blocking operations.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.21.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.23.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1168,7 +1224,7 @@
 in the callback.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.22.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.24.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1183,10 +1239,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.22.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.24.8"></a><h4>Returns</h4>
 <p> The maximum number of bytes queued on all pads. This function
 returns 0 if a pad has no queued buffer.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1204,7 +1259,7 @@
 in the callback.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.23.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.25.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1231,11 +1286,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.23.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.25.8"></a><h4>Returns</h4>
 <p> The number of bytes flushed This can be less than <em class="parameter"><code>size</code></em>
 and
 is 0 if the pad was end-of-stream.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1251,7 +1305,7 @@
 handler.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.24.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.26.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1273,11 +1327,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.24.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.26.7"></a><h4>Returns</h4>
 <p> The buffer in <em class="parameter"><code>data</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffer is queued.
 should unref the buffer after usage.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1293,7 +1346,7 @@
 handler.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.25.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.27.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1315,7 +1368,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.25.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.27.7"></a><h4>Returns</h4>
 <p> The buffer in <em class="parameter"><code>data</code></em>
 or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffer was
 queued. You should unref the buffer after usage. </p>
@@ -1337,7 +1390,7 @@
 callback.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.26.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.28.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1364,7 +1417,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.26.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.28.8"></a><h4>Returns</h4>
 <p> A sub buffer. The size of the buffer can be less that requested.
 A return of <a href="https://developer.gnome.org/glib/unstable/glib-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>
@@ -1387,7 +1440,7 @@
 callback.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.27.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.29.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1414,11 +1467,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.27.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.12.8.29.8"></a><h4>Returns</h4>
 <p> A sub buffer. The size of the buffer can be less that requested.
 A return of <a href="https://developer.gnome.org/glib/unstable/glib-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></p>
 </div>
 </div>
 <hr>
@@ -1432,8 +1484,11 @@
                                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>Convenience clipping function that converts incoming buffer's timestamp
 to running time, or clips the buffer if outside configured segment.</p>
+<p>Since 1.6, this clipping function also sets the DTS parameter of the
+GstCollectData structure. This version of the running time DTS can be
+negative. G_MININT64 is used to indicate invalid value.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.28.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.30.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1482,7 +1537,7 @@
 chain up to to ensure proper operation.  Element might however indicate
 query should not be forwarded downstream.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.29.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1526,7 +1581,7 @@
 chain up to to ensure proper operation.  Element might however indicate
 event should not be forwarded downstream.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.30.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1569,7 +1624,7 @@
 Elements can chain up to this to let flushing seek event handling
 be done by <a class="link" href="GstCollectPads.html" title="GstCollectPads"><span class="type">GstCollectPads</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.31.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1595,7 +1650,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1610,7 +1665,7 @@
 it.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.32.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.34.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1625,8 +1680,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>the function to set</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the function to set. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1648,7 +1703,7 @@
 on a pad managed by <em class="parameter"><code>pads</code></em>
 . See <a class="link" href="GstCollectPads.html#GstCollectPadsClipFunction" title="GstCollectPadsClipFunction ()"><span class="type">GstCollectPadsClipFunction</span></a> for more info.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.33.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1663,8 +1718,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>clipfunc</p></td>
-<td class="parameter_description"><p>clip function to install</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> clip function to install. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1686,7 +1741,7 @@
 <p>Set the timestamp comparison function.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.34.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.36.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1701,8 +1756,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>the function to set</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the function to set. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1729,7 +1784,7 @@
 if so (unusually) needed.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.35.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.37.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1744,8 +1799,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>the function to set</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the function to set. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1767,7 +1822,7 @@
 state of all pads should be flushed as part of flushing seek
 handling. See <a class="link" href="GstCollectPads.html#GstCollectPadsFlushFunction" title="GstCollectPadsFlushFunction ()"><span class="type">GstCollectPadsFlushFunction</span></a> for more info.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.36.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.38.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1782,8 +1837,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>flush function to install</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> flush function to install. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1794,7 +1849,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1812,7 +1867,7 @@
 if so (unusually) needed.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.37.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.39.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1827,8 +1882,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>the function to set</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the function to set. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1855,7 +1910,7 @@
 e.g. by sending a FLUSH_START downstream.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.38.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.40.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1895,7 +1950,7 @@
 If this callback is set, the former will be unset.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.39.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.41.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1910,8 +1965,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>the function to set</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the function to set. </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>
 </tr>
 <tr>
 <td class="parameter_name"><p>user_data</p></td>
@@ -1937,7 +1992,7 @@
 in the callback.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.8.40.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.12.8.42.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2002,6 +2057,8 @@
   GstBuffer             *buffer;
   guint                  pos;
   GstSegment             segment;
+
+      gint64 dts;
 };
 </pre>
 <p>Structure used by the collect_pads.</p>
@@ -2039,6 +2096,12 @@
 <td class="struct_member_description"><p>last segment received.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">gint64</span> <em class="structfield"><code><a name="GstCollectData.dts"></a>dts</code></em>;</p></td>
+<td class="struct_member_description"><p>the signed version of the DTS converted to running time. To access
+this memeber, use <a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS:CAPS" title="GST_COLLECT_PADS_DTS()"><code class="literal">GST_COLLECT_PADS_DTS</code></a> macro. (Since 1.6)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -2101,7 +2164,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstDirectControlBinding.html b/docs/libs/html/GstDirectControlBinding.html
index 72d2413..4eb0d29 100644
--- a/docs/libs/html/GstDirectControlBinding.html
+++ b/docs/libs/html/GstDirectControlBinding.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstDirectControlBinding</title>
+<title>GstDirectControlBinding: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="prev" href="GstARGBControlBinding.html" title="GstARGBControlBinding">
 <link rel="next" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -40,14 +40,24 @@
 <col width="150px" class="functions_return">
 <col class="functions_name">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="function_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlBinding.html"><span class="returnvalue">GstControlBinding</span></a> *
 </td>
 <td class="function_name">
 <a class="link" href="GstDirectControlBinding.html#gst-direct-control-binding-new" title="gst_direct_control_binding_new ()">gst_direct_control_binding_new</a> <span class="c_punctuation">()</span>
 </td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlBinding.html"><span class="returnvalue">GstControlBinding</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstDirectControlBinding.html#gst-direct-control-binding-new-absolute" title="gst_direct_control_binding_new_absolute ()">gst_direct_control_binding_new_absolute</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -58,12 +68,19 @@
 <col width="300px" class="properties_name">
 <col width="200px" class="properties_flags">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="GstDirectControlBinding.html#GstDirectControlBinding--absolute" title="The “absolute” property">absolute</a></td>
+<td class="property_flags">Read / Write / Construct Only</td>
+</tr>
+<tr>
 <td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html"><span class="type">GstControlSource</span></a> *</td>
 <td class="property_name"><a class="link" href="GstDirectControlBinding.html#GstDirectControlBinding--control-source" title="The “control-source” property">control-source</a></td>
 <td class="property_flags">Read / Write / Construct</td>
-</tr></tbody>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -129,6 +146,50 @@
 <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>
+<hr>
+<div class="refsect2">
+<a name="gst-direct-control-binding-new-absolute"></a><h3>gst_direct_control_binding_new_absolute ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlBinding.html"><span class="returnvalue">GstControlBinding</span></a> *
+gst_direct_control_binding_new_absolute
+                               (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html"><span class="type">GstObject</span></a> *object</code></em>,
+                                <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
+                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html"><span class="type">GstControlSource</span></a> *cs</code></em>);</pre>
+<p>Create a new control-binding that attaches the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html"><span class="type">GstControlSource</span></a> to the
+<a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> property.</p>
+<div class="refsect3">
+<a name="id-1.2.5.4.8.3.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>the object of the property</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>property_name</p></td>
+<td class="parameter_description"><p>the property-name to attach the control source</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cs</p></td>
+<td class="parameter_description"><p>the control source</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.5.4.8.3.6"></a><h4>Returns</h4>
+<p> the new <a class="link" href="GstDirectControlBinding.html" title="GstDirectControlBinding"><span class="type">GstDirectControlBinding</span></a>. </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>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstDirectControlBinding.other_details"></a><h2>Types and Values</h2>
@@ -136,6 +197,14 @@
 <div class="refsect1">
 <a name="GstDirectControlBinding.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstDirectControlBinding--absolute"></a><h3>The <code class="literal">“absolute”</code> property</h3>
+<pre class="programlisting">  “absolute”                 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Whether the control values are absolute.</p>
+<p>Flags: Read / Write / Construct Only</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstDirectControlBinding--control-source"></a><h3>The <code class="literal">“control-source”</code> property</h3>
 <pre class="programlisting">  “control-source”           <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html"><span class="type">GstControlSource</span></a> *</pre>
 <p>The control source.</p>
@@ -144,7 +213,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstInterpolationControlSource.html b/docs/libs/html/GstInterpolationControlSource.html
index bd7e925..c34ab80 100644
--- a/docs/libs/html/GstInterpolationControlSource.html
+++ b/docs/libs/html/GstInterpolationControlSource.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstInterpolationControlSource</title>
+<title>GstInterpolationControlSource: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="prev" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">
 <link rel="next" href="GstLFOControlSource.html" title="GstLFOControlSource">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -180,7 +180,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstLFOControlSource.html b/docs/libs/html/GstLFOControlSource.html
index 0cf4976..3d0dc16 100644
--- a/docs/libs/html/GstLFOControlSource.html
+++ b/docs/libs/html/GstLFOControlSource.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstLFOControlSource</title>
+<title>GstLFOControlSource: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="prev" href="GstInterpolationControlSource.html" title="GstInterpolationControlSource">
 <link rel="next" href="GstTriggerControlSource.html" title="GstTriggerControlSource">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -255,7 +255,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstNetClientClock.html b/docs/libs/html/GstNetClientClock.html
index b6d736b..f670a7a 100644
--- a/docs/libs/html/GstNetClientClock.html
+++ b/docs/libs/html/GstNetClientClock.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstNetClientClock</title>
+<title>GstNetClientClock: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-net.html" title="GStreamer Network Classes">
 <link rel="prev" href="gstreamer-libs-GstNetAddressMeta.html" title="GstNetAddressMeta">
-<link rel="next" href="gstreamer-libs-GstNetTimePacket.html" title="GstNetTimePacket">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-libs-GstNetControlMessageMeta.html" title="GstNetControlMessageMeta">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-net.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gstreamer-libs-GstNetAddressMeta.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-libs-GstNetTimePacket.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-libs-GstNetControlMessageMeta.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="GstNetClientClock"></a><div class="titlepage"></div>
@@ -41,14 +41,24 @@
 <col width="150px" class="functions_return">
 <col class="functions_name">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="function_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="returnvalue">GstClock</span></a> *
 </td>
 <td class="function_name">
 <a class="link" href="GstNetClientClock.html#gst-net-client-clock-new" title="gst_net_client_clock_new ()">gst_net_client_clock_new</a> <span class="c_punctuation">()</span>
 </td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="returnvalue">GstClock</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstNetClientClock.html#gst-ntp-clock-new" title="gst_ntp_clock_new ()">gst_ntp_clock_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -64,12 +74,34 @@
 <td class="property_type">
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock--address" title="The “address” property">address</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock--base-time" title="The “base-time” property">base-time</a></td>
+<td class="property_flags">Read / Write / Construct Only</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a> *</td>
+<td class="property_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock--bus" title="The “bus” property">bus</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> *</td>
+<td class="property_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock--internal-clock" title="The “internal-clock” property">internal-clock</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock--minimum-update-interval" title="The “minimum-update-interval” property">minimum-update-interval</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock--port" title="The “port” property">port</a></td>
-<td class="property_flags">Read / Write</td>
+<td class="property_flags">Read / Write / Construct</td>
 </tr>
 <tr>
 <td class="property_type"><span class="type">guint64</span></td>
@@ -86,10 +118,16 @@
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="GstNetClientClock.html#GstNetClientClock-struct" title="struct GstNetClientClock">GstNetClientClock</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="GstNetClientClock.html#GstNtpClock" title="GstNtpClock">GstNtpClock</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -109,18 +147,23 @@
 </div>
 <div class="refsect1">
 <a name="GstNetClientClock.description"></a><h2>Description</h2>
-<p>This object implements a custom <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> that synchronizes its time
-to a remote time provider such as <a class="link" href="GstNetTimeProvider.html" title="GstNetTimeProvider"><span class="type">GstNetTimeProvider</span></a>.</p>
-<p>A new clock is created with <a class="link" href="GstNetClientClock.html#gst-net-client-clock-new" title="gst_net_client_clock_new ()"><code class="function">gst_net_client_clock_new()</code></a> which takes the
-address and port of the remote time provider along with a name and
-an initial time.</p>
+<p><a class="link" href="GstNetClientClock.html" title="GstNetClientClock"><span class="type">GstNetClientClock</span></a> implements a custom <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> that synchronizes its time
+to a remote time provider such as <a class="link" href="GstNetTimeProvider.html" title="GstNetTimeProvider"><span class="type">GstNetTimeProvider</span></a>. <a class="link" href="GstNetClientClock.html#GstNtpClock" title="GstNtpClock"><span class="type">GstNtpClock</span></a>
+implements a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> that synchronizes its time to a remote NTPv4 server.</p>
+<p>A new clock is created with <a class="link" href="GstNetClientClock.html#gst-net-client-clock-new" title="gst_net_client_clock_new ()"><code class="function">gst_net_client_clock_new()</code></a> or
+<a class="link" href="GstNetClientClock.html#gst-ntp-clock-new" title="gst_ntp_clock_new ()"><code class="function">gst_ntp_clock_new()</code></a>, which takes the address and port of the remote time
+provider along with a name and an initial time.</p>
 <p>This clock will poll the time provider and will update its calibration
 parameters based on the local and remote observations.</p>
 <p>The "round-trip" property limits the maximum round trip packets can take.</p>
 <p>Various parameters of the clock can be configured with the parent <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a>
 "timeout", "window-size" and "window-threshold" object properties.</p>
-<p>A <a class="link" href="GstNetClientClock.html" title="GstNetClientClock"><span class="type">GstNetClientClock</span></a> is typically set on a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html"><span class="type">GstPipeline</span></a> with 
+<p>A <a class="link" href="GstNetClientClock.html" title="GstNetClientClock"><span class="type">GstNetClientClock</span></a> and <a class="link" href="GstNetClientClock.html#GstNtpClock" title="GstNtpClock"><span class="type">GstNtpClock</span></a> is typically set on a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html"><span class="type">GstPipeline</span></a> with
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html#gst-pipeline-use-clock"><code class="function">gst_pipeline_use_clock()</code></a>.</p>
+<p>If you set a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a> on the clock via the "bus" object property, it will
+send <em class="parameter"><code>GST_MESSAGE_ELEMENT</code></em>
+ messages with an attached <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html"><span class="type">GstStructure</span></a> containing
+statistics about clock accuracy and network traffic.</p>
 </div>
 <div class="refsect1">
 <a name="GstNetClientClock.functions_details"></a><h2>Functions</h2>
@@ -172,9 +215,59 @@
 <a name="id-1.2.6.4.9.2.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> that receives a time from the remote
 clock.</p>
-<p></p>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-ntp-clock-new"></a><h3>gst_ntp_clock_new ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="returnvalue">GstClock</span></a> *
+gst_ntp_clock_new (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+                   <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *remote_address</code></em>,
+                   <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> remote_port</code></em>,
+                   <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> base_time</code></em>);</pre>
+<p>Create a new <a class="link" href="GstNetClientClock.html#GstNtpClock" title="GstNtpClock"><span class="type">GstNtpClock</span></a> that will report the time provided by
+the NTPv4 server on <em class="parameter"><code>remote_address</code></em>
+ and <em class="parameter"><code>remote_port</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.6.4.9.3.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>a name for the clock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>remote_address</p></td>
+<td class="parameter_description"><p>the address of the remote clock provider</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>remote_port</p></td>
+<td class="parameter_description"><p>the port of the remote clock provider</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>base_time</p></td>
+<td class="parameter_description"><p>initial time of the clock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.6.4.9.3.6"></a><h4>Returns</h4>
+<p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> that receives a time from the remote
+clock.</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstNetClientClock.other_details"></a><h2>Types and Values</h2>
@@ -183,6 +276,12 @@
 <pre class="programlisting">struct GstNetClientClock;</pre>
 <p>Opaque <a class="link" href="GstNetClientClock.html" title="GstNetClientClock"><span class="type">GstNetClientClock</span></a> structure.</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstNtpClock"></a><h3>GstNtpClock</h3>
+<pre class="programlisting">typedef struct _GstNetClientClock GstNtpClock;
+</pre>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstNetClientClock.property-details"></a><h2>Property Details</h2>
@@ -190,15 +289,45 @@
 <a name="GstNetClientClock--address"></a><h3>The <code class="literal">“address”</code> property</h3>
 <pre class="programlisting">  “address”                  <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>The IP address of the machine providing a time server.</p>
-<p>Flags: Read / Write</p>
+<p>Flags: Read / Write / Construct</p>
 <p>Default value: "127.0.0.1"</p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstNetClientClock--base-time"></a><h3>The <code class="literal">“base-time”</code> property</h3>
+<pre class="programlisting">  “base-time”                <span class="type">guint64</span></pre>
+<p>Initial time that is reported before synchronization.</p>
+<p>Flags: Read / Write / Construct Only</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstNetClientClock--bus"></a><h3>The <code class="literal">“bus”</code> property</h3>
+<pre class="programlisting">  “bus”                      <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a> *</pre>
+<p>A GstBus on which to send clock status information.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstNetClientClock--internal-clock"></a><h3>The <code class="literal">“internal-clock”</code> property</h3>
+<pre class="programlisting">  “internal-clock”           <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> *</pre>
+<p>Internal clock that directly slaved to the remote clock.</p>
+<p>Flags: Read</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstNetClientClock--minimum-update-interval"></a><h3>The <code class="literal">“minimum-update-interval”</code> property</h3>
+<pre class="programlisting">  “minimum-update-interval”  <span class="type">guint64</span></pre>
+<p>Minimum polling interval for packets, in nanoseconds(0 = no limit).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 50000000</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstNetClientClock--port"></a><h3>The <code class="literal">“port”</code> property</h3>
 <pre class="programlisting">  “port”                     <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>The port on which the remote server is listening.</p>
-<p>Flags: Read / Write</p>
+<p>Flags: Read / Write / Construct</p>
 <p>Allowed values: [0,65535]</p>
 <p>Default value: 5637</p>
 </div>
@@ -217,7 +346,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstNetTimeProvider.html b/docs/libs/html/GstNetTimeProvider.html
index 40d9632..c45d539 100644
--- a/docs/libs/html/GstNetTimeProvider.html
+++ b/docs/libs/html/GstNetTimeProvider.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstNetTimeProvider</title>
+<title>GstNetTimeProvider: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-net.html" title="GStreamer Network Classes">
 <link rel="prev" href="gstreamer-libs-GstNetTimePacket.html" title="GstNetTimePacket">
-<link rel="next" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-net.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gstreamer-libs-GstNetTimePacket.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-check.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-libs-GstPtpClock.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="GstNetTimeProvider"></a><div class="titlepage"></div>
@@ -131,7 +131,7 @@
 <p>Allows network clients to get the current time of <em class="parameter"><code>clock</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.6.9.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.7.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -159,9 +159,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.6.9.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.7.9.2.6"></a><h4>Returns</h4>
 <p> the new <a class="link" href="GstNetTimeProvider.html" title="GstNetTimeProvider"><span class="type">GstNetTimeProvider</span></a>, or NULL on error</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -213,7 +212,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstPushSrc.html b/docs/libs/html/GstPushSrc.html
index fd272d4..bdfd8fe 100644
--- a/docs/libs/html/GstPushSrc.html
+++ b/docs/libs/html/GstPushSrc.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstPushSrc</title>
+<title>GstPushSrc: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstBaseTransform.html" title="GstBaseTransform">
 <link rel="next" href="GstAdapter.html" title="GstAdapter">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -86,6 +86,7 @@
 </div>
 <div class="refsect1">
 <a name="GstPushSrc.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="GstPushSrc.other_details"></a><h2>Types and Values</h2>
@@ -109,6 +110,49 @@
   GstFlowReturn (*fill)   (GstPushSrc *src, GstBuffer *buf);
 };
 </pre>
+<p>Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the <em class="parameter"><code>fill</code></em>
+ method should be overridden to produce
+buffers.</p>
+<div class="refsect3">
+<a name="id-1.2.4.7.8.3.5"></a><h4>Members</h4>
+<div class="informaltable"><table 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="GstBaseSrc.html#GstBaseSrcClass" title="struct GstBaseSrcClass"><span class="type">GstBaseSrcClass</span></a> <em class="structfield"><code><a name="GstPushSrcClass.parent-class"></a>parent_class</code></em>;</p></td>
+<td class="struct_member_description"><p>Element parent class</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstPushSrcClass.create"></a>create</code></em> ()</p></td>
+<td class="struct_member_description"><p>Ask the subclass to create a buffer. The subclass decides which
+size this buffer should be. Other then that, refer to
+<a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a>.create() for more details. If this method is
+not implemented, <em class="parameter"><code>alloc</code></em>
+followed by <em class="parameter"><code>fill</code></em>
+will be called.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstPushSrcClass.alloc"></a>alloc</code></em> ()</p></td>
+<td class="struct_member_description"><p>Ask the subclass to allocated a buffer. The subclass decides which
+size this buffer should be. The default implementation will create
+a new buffer from the negotiate allcoator.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstPushSrcClass.fill"></a>fill</code></em> ()</p></td>
+<td class="struct_member_description"><p>Ask the subclass to fill the buffer with data.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
 </div>
 </div>
 <div class="refsect1">
@@ -117,7 +161,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstTestClock.html b/docs/libs/html/GstTestClock.html
index c5b5da2..6ed7b2e 100644
--- a/docs/libs/html/GstTestClock.html
+++ b/docs/libs/html/GstTestClock.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstTestClock</title>
+<title>GstTestClock: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
-<link rel="prev" href="gstreamer-libs-GstStreamConsistency.html" title="GstStreamConsistency">
+<link rel="prev" href="gstreamer-libs-GstHarness.html" title="GstHarness">
 <link rel="next" href="gstreamer-hierarchy.html" title="Object Hierarchy">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-check.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gstreamer-libs-GstStreamConsistency.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-libs-GstHarness.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-hierarchy.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -214,7 +214,7 @@
 precisely advance the time in a deterministic manner, independent of the
 system time or any other external factors.</p>
 <div class="example">
-<a name="id-1.2.7.6.8.3"></a><p class="title"><b>Example 1. Advancing the time of a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a></b></p>
+<a name="id-1.2.7.7.8.3"></a><p class="title"><b>Example 4. Advancing the time of a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a></b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -290,7 +290,7 @@
 second buffer will arrive a little late (7ms) due to simulated jitter in the
 clock notification.</p>
 <div class="example">
-<a name="id-1.2.7.6.8.9"></a><p class="title"><b>Example 2. Demonstration of how to work with clock notifications and <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a></b></p>
+<a name="id-1.2.7.7.8.9"></a><p class="title"><b>Example 5. Demonstration of how to work with clock notifications and <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a></b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -408,7 +408,7 @@
 <span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert-cmpint">g_assert_cmpint</a></span> <span class="gtkdoc opt">(</span><span class="function">GST_BUFFER_TIMESTAMP</span> <span class="gtkdoc opt">(</span>buf<span class="gtkdoc opt">), ==,</span> latency<span class="gtkdoc opt">);</span>
 <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref">gst_buffer_unref</a></span> <span class="gtkdoc opt">(</span>buf<span class="gtkdoc opt">);</span>
 <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#GST-INFO:CAPS">GST_INFO</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Check that element does not wait for any clock notification</span><span class="gtkdoc esc">\n</span><span class="string">&quot;</span><span class="gtkdoc opt">);</span>
-<span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert">g_assert</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#gst-test-clock-peek-next-pending-id">gst_test_clock_peek_next_pending_id</a></span> <span class="gtkdoc opt">(</span>test_clock<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">) ==</span> FALSE<span class="gtkdoc opt">);</span>
+<span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert">g_assert</a></span> <span class="gtkdoc opt">(!</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#gst-test-clock-peek-next-pending-id">gst_test_clock_peek_next_pending_id</a></span> <span class="gtkdoc opt">(</span>test_clock<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">));</span>
 
 <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#GST-INFO:CAPS">GST_INFO</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Set time, create and push the second buffer</span><span class="gtkdoc esc">\n</span><span class="string">&quot;</span><span class="gtkdoc opt">);</span>
 <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#gst-test-clock-advance-time">gst_test_clock_advance_time</a></span> <span class="gtkdoc opt">(</span>test_clock<span class="gtkdoc opt">,</span> <span class="number">10</span> <span class="gtkdoc opt">*</span> GST_SECOND<span class="gtkdoc opt">);</span>
@@ -433,7 +433,7 @@
     <span class="number">10</span> <span class="gtkdoc opt">*</span> GST_SECOND <span class="gtkdoc opt">+</span> latency <span class="gtkdoc opt">+</span> <span class="number">7</span> <span class="gtkdoc opt">*</span> GST_MSECOND<span class="gtkdoc opt">);</span>
 <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref">gst_buffer_unref</a></span> <span class="gtkdoc opt">(</span>buf<span class="gtkdoc opt">);</span>
 <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#GST-INFO:CAPS">GST_INFO</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Check that element does not wait for any clock notification</span><span class="gtkdoc esc">\n</span><span class="string">&quot;</span><span class="gtkdoc opt">);</span>
-<span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert">g_assert</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#gst-test-clock-peek-next-pending-id">gst_test_clock_peek_next_pending_id</a></span> <span class="gtkdoc opt">(</span>test_clock<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">) ==</span> FALSE<span class="gtkdoc opt">);</span>
+<span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert">g_assert</a></span> <span class="gtkdoc opt">(!</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#gst-test-clock-peek-next-pending-id">gst_test_clock_peek_next_pending_id</a></span> <span class="gtkdoc opt">(</span>test_clock<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">));</span>
 <span class="gtkdoc opt">...</span></pre></td>
       </tr>
     </tbody>
@@ -454,11 +454,11 @@
 <p>Creates a new test clock with its time set to zero.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.7.7.9.2.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> cast to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</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.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -468,7 +468,7 @@
 <p>Creates a new test clock with its time set to the specified time.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -483,11 +483,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.7.7.9.3.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> cast to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</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.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -505,7 +505,7 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#gst-clock-get-time"><code class="function">gst_clock_get_time()</code></a> is a programming error.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -526,7 +526,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -543,7 +543,7 @@
  which is negative or zero is a programming error.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.5.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -564,7 +564,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -576,7 +576,7 @@
 .</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -591,11 +591,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.6.7"></a><h4>Returns</h4>
+<a name="id-1.2.7.7.9.6.7"></a><h4>Returns</h4>
 <p> the number of pending clock notifications.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -609,7 +608,7 @@
 .</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -631,12 +630,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.7.7"></a><h4>Returns</h4>
+<a name="id-1.2.7.7.9.7.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the clock has been asked to provide the given clock
 notification, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -653,7 +651,7 @@
  is the next clock notification to be
 triggered, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.8.7"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.8.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -675,7 +673,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -691,7 +689,7 @@
 .</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.9.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -713,7 +711,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -732,7 +730,7 @@
 . There is no timeout for this wait, see the main description of
 <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.10.7"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.10.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -753,7 +751,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -762,7 +760,7 @@
 gst_test_clock_process_next_clock_id (<em class="parameter"><code><a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> *test_clock</code></em>);</pre>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -778,12 +776,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.11.6"></a><h4>Returns</h4>
+<a name="id-1.2.7.7.9.11.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> containing the next pending clock
 notification. </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.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -793,7 +791,7 @@
 <p>Retrieve the requested time for the next pending clock notification.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -808,13 +806,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.12.7"></a><h4>Returns</h4>
+<a name="id-1.2.7.7.9.12.7"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> set to the time of the next pending clock
 notification. If no clock notifications have been requested
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-TIME-NONE:CAPS"><code class="literal">GST_CLOCK_TIME_NONE</code></a> will be returned.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -831,7 +828,7 @@
 <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.13.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.13.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -859,7 +856,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -870,7 +867,7 @@
 <p>Finds the latest time inside the list.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.14.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.14.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -885,7 +882,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -896,7 +893,7 @@
 <p>Processes and releases the pending IDs in the list.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.9.15.6"></a><h4>Parameters</h4>
+<a name="id-1.2.7.7.9.15.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -918,7 +915,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -928,7 +925,7 @@
 <pre class="programlisting">struct GstTestClock;</pre>
 <p>A <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> structure which is based on a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> along with some
 private data.</p>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -939,7 +936,7 @@
 </pre>
 <p>The class of a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>, which has no virtual methods to override.</p>
 <div class="refsect3">
-<a name="id-1.2.7.6.10.3.5"></a><h4>Members</h4>
+<a name="id-1.2.7.7.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -953,7 +950,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -977,7 +974,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstTimedValueControlSource.html b/docs/libs/html/GstTimedValueControlSource.html
index b2d2183..750ac1b 100644
--- a/docs/libs/html/GstTimedValueControlSource.html
+++ b/docs/libs/html/GstTimedValueControlSource.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstTimedValueControlSource</title>
+<title>GstTimedValueControlSource: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="prev" href="GstDirectControlBinding.html" title="GstDirectControlBinding">
 <link rel="next" href="GstInterpolationControlSource.html" title="GstInterpolationControlSource">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,7 +16,8 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#GstTimedValueControlSource.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#GstTimedValueControlSource.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+                  <a href="#GstTimedValueControlSource.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#GstTimedValueControlSource.signals" class="shortcut">Signals</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-control.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -108,16 +109,49 @@
 </table></div>
 </div>
 <div class="refsect1">
+<a name="GstTimedValueControlSource.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-added" title="The “value-added” signal">value-added</a></td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="GstTimedValueControlSource.html#GstTimedValueControlSource-value-changed" title="The “value-changed” signal">value-changed</a></td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="GstTimedValueControlSource.html#GstTimedValueControlSource-value-removed" title="The “value-removed” signal">value-removed</a></td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
 <a name="GstTimedValueControlSource.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-struct" title="struct GstTimedValueControlSource">GstTimedValueControlSource</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="GstTimedValueControlSource.html#GstControlPoint" title="struct GstControlPoint">GstControlPoint</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -156,7 +190,7 @@
 timestamp or no values exist, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is returned.</p>
 <p>For use in control source implementations.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -178,9 +212,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.2.7"></a><h4>Returns</h4>
-<p> the found <a href="https://developer.gnome.org/glib/unstable/glib-Sequences.html#GSequenceIter"><span class="type">GSequenceIter</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
-<p></p>
+<a name="id-1.2.5.5.9.2.7"></a><h4>Returns</h4>
+<p> the found <a href="https://developer.gnome.org/glib/unstable/glib-Sequences.html#GSequenceIter"><span class="type">GSequenceIter</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -192,7 +226,7 @@
                                     <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> value</code></em>);</pre>
 <p>Set the value of given controller-handled property at a certain time.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -219,9 +253,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.5.5.9.3.6"></a><h4>Returns</h4>
 <p> FALSE if the values couldn't be set, TRUE otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -233,7 +266,7 @@
                                 <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> *timedvalues</code></em>);</pre>
 <p>Sets multiple timed values at once.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -256,9 +289,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.5.5.9.4.6"></a><h4>Returns</h4>
 <p> FALSE if the values couldn't be set, TRUE otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -270,7 +302,7 @@
 <p>Returns a read-only copy of the list of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a> for the given property.
 Free the list after done with it.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -285,7 +317,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.5.5.9.5.6"></a><h4>Returns</h4>
 <p> a copy
 of the list, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the property isn't handled by the controller. </p>
 <p><span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstTimedValue]</span></p>
@@ -300,7 +332,7 @@
 <p>Used to remove the value of given controller-handled property at a certain
 time.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -322,9 +354,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.5.5.9.6.6"></a><h4>Returns</h4>
 <p> FALSE if the value couldn't be unset (i.e. not found, TRUE otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -335,7 +366,7 @@
                                (<em class="parameter"><code><a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> *self</code></em>);</pre>
 <p>Used to remove all time-stamped values of given controller-handled property</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -358,7 +389,7 @@
                                (<em class="parameter"><code><a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> *self</code></em>);</pre>
 <p>Get the number of control points that are set.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -373,9 +404,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.5.5.9.8.6"></a><h4>Returns</h4>
 <p> the number of control points that are set.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -386,7 +416,7 @@
                                (<em class="parameter"><code><a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> *self</code></em>);</pre>
 <p>Reset the controlled value cache.</p>
 <div class="refsect3">
-<a name="id-1.2.5.5.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.5.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -409,10 +439,166 @@
 <pre class="programlisting">struct GstTimedValueControlSource;</pre>
 <p>The instance structure of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html"><span class="type">GstControlSource</span></a>.</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstControlPoint"></a><h3>struct GstControlPoint</h3>
+<pre class="programlisting">struct GstControlPoint {
+  /* fields from GstTimedValue. DO NOT CHANGE! */
+  GstClockTime timestamp;
+  gdouble value;
+};
+</pre>
+<p>a internal structure for value+time and various temporary
+values used for interpolation. This "inherits" from
+GstTimedValue.</p>
+<div class="refsect3">
+<a name="id-1.2.5.5.10.3.5"></a><h4>Members</h4>
+<div class="informaltable"><table 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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> <em class="structfield"><code><a name="GstControlPoint.timestamp"></a>timestamp</code></em>;</p></td>
+<td class="struct_member_description"><p>timestamp of the value change</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> <em class="structfield"><code><a name="GstControlPoint.value"></a>value</code></em>;</p></td>
+<td class="struct_member_description"><p>the new value</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="GstTimedValueControlSource.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstTimedValueControlSource-value-added"></a><h3>The <code class="literal">“value-added”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> *self,
+               <a class="link" href="GstTimedValueControlSource.html#GstControlPoint" title="struct GstControlPoint"><span class="type">GstControlPoint</span></a>            *timed_value,
+               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                    user_data)</pre>
+<p>Emited right after the new value has been added to <em class="parameter"><code>self</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.5.5.11.2.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>self</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> into which a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a> has been
+added</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>timed_value</p></td>
+<td class="parameter_description"><p>The newly added <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
+<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="GstTimedValueControlSource-value-changed"></a><h3>The <code class="literal">“value-changed”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> *self,
+               <a class="link" href="GstTimedValueControlSource.html#GstControlPoint" title="struct GstControlPoint"><span class="type">GstControlPoint</span></a>            *timed_value,
+               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                    user_data)</pre>
+<p>Emited right after the new value has been set on <em class="parameter"><code>timed_signals</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.5.5.11.3.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>self</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> on which a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a> has changed</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>timed_value</p></td>
+<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a> where the value changed</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="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
+<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="GstTimedValueControlSource-value-removed"></a><h3>The <code class="literal">“value-removed”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> *self,
+               <a class="link" href="GstTimedValueControlSource.html#GstControlPoint" title="struct GstControlPoint"><span class="type">GstControlPoint</span></a>            *timed_value,
+               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                    user_data)</pre>
+<p>Emited when <em class="parameter"><code>timed_value</code></em>
+ is removed from <em class="parameter"><code>self</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.5.5.11.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>self</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource"><span class="type">GstTimedValueControlSource</span></a> from which a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a> has been
+removed</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>timed_value</p></td>
+<td class="parameter_description"><p>The removed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstTimedValue"><span class="type">GstTimedValue</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/GstTriggerControlSource.html b/docs/libs/html/GstTriggerControlSource.html
index f820473..45a8bfe 100644
--- a/docs/libs/html/GstTriggerControlSource.html
+++ b/docs/libs/html/GstTriggerControlSource.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstTriggerControlSource</title>
+<title>GstTriggerControlSource: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
 <link rel="prev" href="GstLFOControlSource.html" title="GstLFOControlSource">
 <link rel="next" href="gstreamer-net.html" title="GStreamer Network Classes">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -29,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="GstTriggerControlSource.top_of_page"></a>GstTriggerControlSource</span></h2>
-<p>GstTriggerControlSource — interpolation control source</p>
+<p>GstTriggerControlSource — trigger control source</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -149,7 +149,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/annotation-glossary.html b/docs/libs/html/annotation-glossary.html
index 4d09a10..798f4ff 100644
--- a/docs/libs/html/annotation-glossary.html
+++ b/docs/libs/html/annotation-glossary.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: Annotation Glossary</title>
+<title>Annotation Glossary: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
-<link rel="prev" href="api-index-deprecated.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="prev" href="ix06.html" title="Index of new API in 1.0.1">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -24,12 +24,14 @@
                      <span class="dim">|</span> 
                   <a class="shortcut" href="#glsO">O</a>
                      <span class="dim">|</span> 
+                  <a class="shortcut" href="#glsR">R</a>
+                     <span class="dim">|</span> 
                   <a class="shortcut" href="#glsS">S</a>
                      <span class="dim">|</span> 
                   <a class="shortcut" href="#glsT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="api-index-deprecated.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="ix06.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
 </tr></table>
 <div class="glossary">
@@ -57,11 +59,16 @@
 <dd class="glossdef"><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
 <dt><span class="glossterm"><a name="annotation-glossterm-out%20caller-allocates"></a>out caller-allocates</span></dt>
 <dd class="glossdef"><p>Out parameter, where caller must allocate storage.</p></dd>
+<a name="glsR"></a><h3 class="title">R</h3>
+<dt><span class="glossterm"><a name="annotation-glossterm-rename-to"></a>rename-to</span></dt>
+<dd class="glossdef"><p>Rename the original symbol's name to SYMBOL.</p></dd>
 <a name="glsS"></a><h3 class="title">S</h3>
 <dt><span class="glossterm"><a name="annotation-glossterm-scope%20async"></a>scope async</span></dt>
 <dd class="glossdef"><p>The callback is valid until first called.</p></dd>
 <dt><span class="glossterm"><a name="annotation-glossterm-scope%20call"></a>scope call</span></dt>
 <dd class="glossdef"><p>The callback is valid only during the call to the method.</p></dd>
+<dt><span class="glossterm"><a name="annotation-glossterm-skip"></a>skip</span></dt>
+<dd class="glossdef"><p>Exposed in C code, not necessarily available in other languages.</p></dd>
 <a name="glsT"></a><h3 class="title">T</h3>
 <dt><span class="glossterm"><a name="annotation-glossterm-transfer%20container"></a>transfer container</span></dt>
 <dd class="glossdef"><p>Free data container after the code is done.</p></dd>
@@ -75,7 +82,6 @@
 <dd class="glossdef"><p>Override the parsed C type with given type.</p></dd>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-base.html b/docs/libs/html/gstreamer-base.html
index 473c678..bc82243 100644
--- a/docs/libs/html/gstreamer-base.html
+++ b/docs/libs/html/gstreamer-base.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GStreamer Base and Utillity Classes</title>
+<title>GStreamer Base and Utillity Classes: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
 <link rel="prev" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
 <link rel="next" href="GstBaseParse.html" title="GstBaseParse">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -74,7 +74,6 @@
       </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-check.html b/docs/libs/html/gstreamer-check.html
index d9d674c..1683447 100644
--- a/docs/libs/html/gstreamer-check.html
+++ b/docs/libs/html/gstreamer-check.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GStreamer Check Unit Testing</title>
+<title>GStreamer Check Unit Testing: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
-<link rel="prev" href="GstNetTimeProvider.html" title="GstNetTimeProvider">
+<link rel="prev" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">
 <link rel="next" href="gstreamer-libs-GstCheck.html" title="GstCheck">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-libs.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="GstNetTimeProvider.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-libs-GstPtpClock.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-libs-GstCheck.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
@@ -33,6 +33,9 @@
 <span class="refentrytitle"><a href="gstreamer-libs-GstStreamConsistency.html">GstStreamConsistency</a></span><span class="refpurpose"> — Data flow consistency checker for GStreamer unit tests.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstHarness.html">GstHarness</a></span><span class="refpurpose"> — A test-harness for writing GStreamer unit tests</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstTestClock.html">GstTestClock</a></span><span class="refpurpose"> — Controllable, deterministic clock for GStreamer unit tests</span>
 </dt>
 </dl></div>
@@ -42,7 +45,6 @@
       </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-control.html b/docs/libs/html/gstreamer-control.html
index e87d873..6d5bee2 100644
--- a/docs/libs/html/gstreamer-control.html
+++ b/docs/libs/html/gstreamer-control.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GStreamer Dynamic Parameter Control</title>
+<title>GStreamer Dynamic Parameter Control: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
 <link rel="prev" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">
 <link rel="next" href="GstARGBControlBinding.html" title="GstARGBControlBinding">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -39,7 +39,7 @@
 <span class="refentrytitle"><a href="GstLFOControlSource.html">GstLFOControlSource</a></span><span class="refpurpose"> — LFO control source</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="GstTriggerControlSource.html">GstTriggerControlSource</a></span><span class="refpurpose"> — interpolation control source</span>
+<span class="refentrytitle"><a href="GstTriggerControlSource.html">GstTriggerControlSource</a></span><span class="refpurpose"> — trigger control source</span>
 </dt>
 </dl></div>
 <p>
@@ -48,7 +48,6 @@
       </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-hierarchy.html b/docs/libs/html/gstreamer-hierarchy.html
index 56cbe3d..0679c34 100644
--- a/docs/libs/html/gstreamer-hierarchy.html
+++ b/docs/libs/html/gstreamer-hierarchy.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: Object Hierarchy</title>
+<title>Object Hierarchy: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="prev" href="GstTestClock.html" title="GstTestClock">
-<link rel="next" href="api-index-full.html" title="API Index">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="ix01.html" title="API Index">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
 <td><a accesskey="p" href="GstTestClock.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h1 class="title">
@@ -50,7 +50,6 @@
 </pre>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-1.0.devhelp2 b/docs/libs/html/gstreamer-libs-1.0.devhelp2
index 66e6997..b2b835f 100644
--- a/docs/libs/html/gstreamer-libs-1.0.devhelp2
+++ b/docs/libs/html/gstreamer-libs-1.0.devhelp2
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
 <book xmlns="http://www.devhelp.net/book" title="GStreamer 1.0 Library Reference Manual" link="index.html" author="" name="gstreamer-libs-1.0" version="2" language="c">
   <chapters>
     <sub name="GStreamer Libraries" link="gstreamer-libs.html">
@@ -30,22 +29,30 @@
       <sub name="GStreamer Network Classes" link="gstreamer-net.html">
         <sub name="GstNetAddressMeta" link="gstreamer-libs-GstNetAddressMeta.html"/>
         <sub name="GstNetClientClock" link="GstNetClientClock.html"/>
+        <sub name="GstNetControlMessageMeta" link="gstreamer-libs-GstNetControlMessageMeta.html"/>
         <sub name="GstNetTimePacket" link="gstreamer-libs-GstNetTimePacket.html"/>
         <sub name="GstNetTimeProvider" link="GstNetTimeProvider.html"/>
+        <sub name="GstPtpClock" link="gstreamer-libs-GstPtpClock.html"/>
       </sub>
       <sub name="GStreamer Check Unit Testing" link="gstreamer-check.html">
         <sub name="GstCheck" link="gstreamer-libs-GstCheck.html"/>
         <sub name="GstBufferStraw" link="gstreamer-libs-GstBufferStraw.html"/>
         <sub name="GstStreamConsistency" link="gstreamer-libs-GstStreamConsistency.html"/>
+        <sub name="GstHarness" link="gstreamer-libs-GstHarness.html"/>
         <sub name="GstTestClock" link="GstTestClock.html"/>
       </sub>
     </sub>
     <sub name="Object Hierarchy" link="gstreamer-hierarchy.html"/>
-    <sub name="API Index" link="api-index-full.html"/>
-    <sub name="Index of deprecated API" link="api-index-deprecated.html"/>
+    <sub name="API Index" link="ix01.html"/>
+    <sub name="Index of deprecated API" link="ix02.html"/>
+    <sub name="Index of new API in 1.6" link="ix03.html"/>
+    <sub name="Index of new API in 1.4" link="ix04.html"/>
+    <sub name="Index of new API in 1.2" link="ix05.html"/>
+    <sub name="Index of new API in 1.0.1" link="ix06.html"/>
     <sub name="Annotation Glossary" link="annotation-glossary.html"/>
   </chapters>
   <functions>
+    <keyword type="function" name="gst_base_parse_merge_tags ()" link="GstBaseParse.html#gst-base-parse-merge-tags" since="1.6"/>
     <keyword type="function" name="gst_base_parse_set_duration ()" link="GstBaseParse.html#gst-base-parse-set-duration"/>
     <keyword type="function" name="gst_base_parse_set_average_bitrate ()" link="GstBaseParse.html#gst-base-parse-set-average-bitrate"/>
     <keyword type="function" name="gst_base_parse_set_min_frame_size ()" link="GstBaseParse.html#gst-base-parse-set-min-frame-size"/>
@@ -76,7 +83,6 @@
     <keyword type="enum" name="enum GstBaseParseFrameFlags" link="GstBaseParse.html#GstBaseParseFrameFlags"/>
     <keyword type="macro" name="GST_BASE_PARSE_FLOW_DROPPED" link="GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS"/>
     <keyword type="property" name="The “disable-passthrough” property" link="GstBaseParse.html#GstBaseParse--disable-passthrough"/>
-    <keyword type="" name="Controlled shutdown of live sources in applications" link="GstBaseSrc.html#id-1.2.4.4.8.19"/>
     <keyword type="function" name="gst_base_src_wait_playing ()" link="GstBaseSrc.html#gst-base-src-wait-playing"/>
     <keyword type="function" name="gst_base_src_start_wait ()" link="GstBaseSrc.html#gst-base-src-start-wait"/>
     <keyword type="function" name="gst_base_src_start_complete ()" link="GstBaseSrc.html#gst-base-src-start-complete"/>
@@ -156,8 +162,6 @@
     <keyword type="property" name="The “sync” property" link="GstBaseSink.html#GstBaseSink--sync"/>
     <keyword type="property" name="The “throttle-time” property" link="GstBaseSink.html#GstBaseSink--throttle-time"/>
     <keyword type="property" name="The “ts-offset” property" link="GstBaseSink.html#GstBaseSink--ts-offset"/>
-    <keyword type="" name="Use Cases" link="GstBaseTransform.html#id-1.2.4.6.8.5"/>
-    <keyword type="" name="Sub-class settable flags on GstBaseTransform" link="GstBaseTransform.html#id-1.2.4.6.8.6"/>
     <keyword type="function" name="gst_base_transform_is_passthrough ()" link="GstBaseTransform.html#gst-base-transform-is-passthrough"/>
     <keyword type="function" name="gst_base_transform_set_passthrough ()" link="GstBaseTransform.html#gst-base-transform-set-passthrough"/>
     <keyword type="function" name="gst_base_transform_set_prefer_passthrough ()" link="GstBaseTransform.html#gst-base-transform-set-prefer-passthrough" since="1.0.1"/>
@@ -171,6 +175,7 @@
     <keyword type="function" name="gst_base_transform_get_buffer_pool ()" link="GstBaseTransform.html#gst-base-transform-get-buffer-pool"/>
     <keyword type="function" name="gst_base_transform_reconfigure_sink ()" link="GstBaseTransform.html#gst-base-transform-reconfigure-sink"/>
     <keyword type="function" name="gst_base_transform_reconfigure_src ()" link="GstBaseTransform.html#gst-base-transform-reconfigure-src"/>
+    <keyword type="function" name="gst_base_transform_update_src_caps ()" link="GstBaseTransform.html#gst-base-transform-update-src-caps" since="1.6"/>
     <keyword type="macro" name="GST_BASE_TRANSFORM_SINK_PAD()" link="GstBaseTransform.html#GST-BASE-TRANSFORM-SINK-PAD:CAPS"/>
     <keyword type="macro" name="GST_BASE_TRANSFORM_SRC_PAD()" link="GstBaseTransform.html#GST-BASE-TRANSFORM-SRC-PAD:CAPS"/>
     <keyword type="struct" name="struct GstBaseTransform" link="GstBaseTransform.html#GstBaseTransform-struct"/>
@@ -193,8 +198,13 @@
     <keyword type="function" name="gst_adapter_available_fast ()" link="GstAdapter.html#gst-adapter-available-fast"/>
     <keyword type="function" name="gst_adapter_take ()" link="GstAdapter.html#gst-adapter-take"/>
     <keyword type="function" name="gst_adapter_take_buffer ()" link="GstAdapter.html#gst-adapter-take-buffer"/>
+    <keyword type="function" name="gst_adapter_get_buffer ()" link="GstAdapter.html#gst-adapter-get-buffer" since="1.6"/>
     <keyword type="function" name="gst_adapter_take_buffer_fast ()" link="GstAdapter.html#gst-adapter-take-buffer-fast" since="1.2"/>
+    <keyword type="function" name="gst_adapter_get_buffer_fast ()" link="GstAdapter.html#gst-adapter-get-buffer-fast" since="1.6"/>
     <keyword type="function" name="gst_adapter_take_list ()" link="GstAdapter.html#gst-adapter-take-list"/>
+    <keyword type="function" name="gst_adapter_get_list ()" link="GstAdapter.html#gst-adapter-get-list" since="1.6"/>
+    <keyword type="function" name="gst_adapter_take_buffer_list ()" link="GstAdapter.html#gst-adapter-take-buffer-list" since="1.6"/>
+    <keyword type="function" name="gst_adapter_get_buffer_list ()" link="GstAdapter.html#gst-adapter-get-buffer-list" since="1.6"/>
     <keyword type="function" name="gst_adapter_prev_pts ()" link="GstAdapter.html#gst-adapter-prev-pts"/>
     <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"/>
@@ -235,6 +245,8 @@
     <keyword type="function" name="gst_byte_reader_new ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-new"/>
     <keyword type="function" name="gst_byte_reader_free ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-free"/>
     <keyword type="function" name="gst_byte_reader_init ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-init"/>
+    <keyword type="function" name="gst_byte_reader_peek_sub_reader ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-sub-reader" since="1.6"/>
+    <keyword type="function" name="gst_byte_reader_get_sub_reader ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-sub-reader" since="1.6"/>
     <keyword type="function" name="gst_byte_reader_get_pos ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-pos"/>
     <keyword type="function" name="gst_byte_reader_get_remaining ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-remaining"/>
     <keyword type="function" name="gst_byte_reader_set_pos ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-set-pos"/>
@@ -288,6 +300,7 @@
     <keyword type="function" name="gst_byte_reader_dup_data ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-dup-data"/>
     <keyword type="function" name="gst_byte_reader_peek_data ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-data"/>
     <keyword type="function" name="gst_byte_reader_masked_scan_uint32 ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32"/>
+    <keyword type="function" name="gst_byte_reader_masked_scan_uint32_peek ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32-peek" since="1.6"/>
     <keyword type="macro" name="gst_byte_reader_get_string()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-string"/>
     <keyword type="function" name="gst_byte_reader_get_string_utf8 ()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-string-utf8"/>
     <keyword type="macro" name="gst_byte_reader_peek_string()" link="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-string"/>
@@ -436,6 +449,8 @@
     <keyword type="macro" name="GST_COLLECT_PADS_GET_STREAM_LOCK()" link="GstCollectPads.html#GST-COLLECT-PADS-GET-STREAM-LOCK:CAPS"/>
     <keyword type="macro" name="GST_COLLECT_PADS_STREAM_LOCK()" link="GstCollectPads.html#GST-COLLECT-PADS-STREAM-LOCK:CAPS"/>
     <keyword type="macro" name="GST_COLLECT_PADS_STREAM_UNLOCK()" link="GstCollectPads.html#GST-COLLECT-PADS-STREAM-UNLOCK:CAPS"/>
+    <keyword type="macro" name="GST_COLLECT_PADS_DTS()" link="GstCollectPads.html#GST-COLLECT-PADS-DTS:CAPS" since="1.6"/>
+    <keyword type="macro" name="GST_COLLECT_PADS_DTS_IS_VALID()" link="GstCollectPads.html#GST-COLLECT-PADS-DTS-IS-VALID:CAPS" since="1.6"/>
     <keyword type="function" name="gst_collect_pads_new ()" link="GstCollectPads.html#gst-collect-pads-new"/>
     <keyword type="function" name="gst_collect_pads_add_pad ()" link="GstCollectPads.html#gst-collect-pads-add-pad"/>
     <keyword type="function" name="gst_collect_pads_remove_pad ()" link="GstCollectPads.html#gst-collect-pads-remove-pad"/>
@@ -468,6 +483,8 @@
     <keyword type="function" name="gst_flow_combiner_update_flow ()" link="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-update-flow" since="1.4"/>
     <keyword type="function" name="gst_flow_combiner_add_pad ()" link="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-add-pad" since="1.4"/>
     <keyword type="function" name="gst_flow_combiner_remove_pad ()" link="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-remove-pad" since="1.4"/>
+    <keyword type="function" name="gst_flow_combiner_clear ()" link="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-clear" since="1.6"/>
+    <keyword type="struct" name="GstFlowCombiner" link="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" since="1.4"/>
     <keyword type="function" name="gst_type_find_helper ()" link="gstreamer-libs-GstTypeFindHelper.html#gst-type-find-helper"/>
     <keyword type="function" name="gst_type_find_helper_for_buffer ()" link="gstreamer-libs-GstTypeFindHelper.html#gst-type-find-helper-for-buffer"/>
     <keyword type="function" name="gst_type_find_helper_for_extension ()" link="gstreamer-libs-GstTypeFindHelper.html#gst-type-find-helper-for-extension"/>
@@ -501,6 +518,11 @@
     <keyword type="function" name="gst_queue_array_is_empty ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-is-empty" since="1.2"/>
     <keyword type="function" name="gst_queue_array_drop_element ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-element" since="1.2"/>
     <keyword type="function" name="gst_queue_array_find ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-find" since="1.2"/>
+    <keyword type="function" name="gst_queue_array_new_for_struct ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-new-for-struct" since="1.6"/>
+    <keyword type="function" name="gst_queue_array_push_tail_struct ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-push-tail-struct"/>
+    <keyword type="function" name="gst_queue_array_peek_head_struct ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head-struct" since="1.6"/>
+    <keyword type="function" name="gst_queue_array_pop_head_struct ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head-struct" since="1.6"/>
+    <keyword type="function" name="gst_queue_array_drop_struct ()" link="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-struct" since="1.6"/>
     <keyword type="struct" name="GstQueueArray" link="gstreamer-libs-GstQueueArray.html#GstQueueArray"/>
     <keyword type="function" name="gst_argb_control_binding_new ()" link="GstARGBControlBinding.html#gst-argb-control-binding-new"/>
     <keyword type="property" name="The “control-source-a” property" link="GstARGBControlBinding.html#GstARGBControlBinding--control-source-a"/>
@@ -508,6 +530,8 @@
     <keyword type="property" name="The “control-source-g” property" link="GstARGBControlBinding.html#GstARGBControlBinding--control-source-g"/>
     <keyword type="property" name="The “control-source-r” property" link="GstARGBControlBinding.html#GstARGBControlBinding--control-source-r"/>
     <keyword type="function" name="gst_direct_control_binding_new ()" link="GstDirectControlBinding.html#gst-direct-control-binding-new"/>
+    <keyword type="function" name="gst_direct_control_binding_new_absolute ()" link="GstDirectControlBinding.html#gst-direct-control-binding-new-absolute" since="1.6"/>
+    <keyword type="property" name="The “absolute” property" link="GstDirectControlBinding.html#GstDirectControlBinding--absolute"/>
     <keyword type="property" name="The “control-source” property" link="GstDirectControlBinding.html#GstDirectControlBinding--control-source"/>
     <keyword type="function" name="gst_timed_value_control_source_find_control_point_iter ()" link="GstTimedValueControlSource.html#gst-timed-value-control-source-find-control-point-iter"/>
     <keyword type="function" name="gst_timed_value_control_source_set ()" link="GstTimedValueControlSource.html#gst-timed-value-control-source-set"/>
@@ -518,6 +542,10 @@
     <keyword type="function" name="gst_timed_value_control_source_get_count ()" link="GstTimedValueControlSource.html#gst-timed-value-control-source-get-count"/>
     <keyword type="function" name="gst_timed_value_control_invalidate_cache ()" link="GstTimedValueControlSource.html#gst-timed-value-control-invalidate-cache"/>
     <keyword type="struct" name="struct GstTimedValueControlSource" link="GstTimedValueControlSource.html#GstTimedValueControlSource-struct"/>
+    <keyword type="struct" name="struct GstControlPoint" link="GstTimedValueControlSource.html#GstControlPoint"/>
+    <keyword type="signal" name="The “value-added” signal" link="GstTimedValueControlSource.html#GstTimedValueControlSource-value-added"/>
+    <keyword type="signal" name="The “value-changed” signal" link="GstTimedValueControlSource.html#GstTimedValueControlSource-value-changed"/>
+    <keyword type="signal" name="The “value-removed” signal" link="GstTimedValueControlSource.html#GstTimedValueControlSource-value-removed"/>
     <keyword type="function" name="gst_interpolation_control_source_new ()" link="GstInterpolationControlSource.html#gst-interpolation-control-source-new"/>
     <keyword type="struct" name="struct GstInterpolationControlSource" link="GstInterpolationControlSource.html#GstInterpolationControlSource-struct"/>
     <keyword type="enum" name="enum GstInterpolationMode" link="GstInterpolationControlSource.html#GstInterpolationMode"/>
@@ -539,10 +567,20 @@
     <keyword type="function" name="gst_net_address_meta_get_info ()" link="gstreamer-libs-GstNetAddressMeta.html#gst-net-address-meta-get-info"/>
     <keyword type="struct" name="struct GstNetAddressMeta" link="gstreamer-libs-GstNetAddressMeta.html#GstNetAddressMeta"/>
     <keyword type="function" name="gst_net_client_clock_new ()" link="GstNetClientClock.html#gst-net-client-clock-new"/>
+    <keyword type="function" name="gst_ntp_clock_new ()" link="GstNetClientClock.html#gst-ntp-clock-new" since="1.6"/>
     <keyword type="struct" name="struct GstNetClientClock" link="GstNetClientClock.html#GstNetClientClock-struct"/>
+    <keyword type="typedef" name="GstNtpClock" link="GstNetClientClock.html#GstNtpClock"/>
     <keyword type="property" name="The “address” property" link="GstNetClientClock.html#GstNetClientClock--address"/>
+    <keyword type="property" name="The “base-time” property" link="GstNetClientClock.html#GstNetClientClock--base-time"/>
+    <keyword type="property" name="The “bus” property" link="GstNetClientClock.html#GstNetClientClock--bus"/>
+    <keyword type="property" name="The “internal-clock” property" link="GstNetClientClock.html#GstNetClientClock--internal-clock"/>
+    <keyword type="property" name="The “minimum-update-interval” property" link="GstNetClientClock.html#GstNetClientClock--minimum-update-interval"/>
     <keyword type="property" name="The “port” property" link="GstNetClientClock.html#GstNetClientClock--port"/>
     <keyword type="property" name="The “round-trip-limit” property" link="GstNetClientClock.html#GstNetClientClock--round-trip-limit"/>
+    <keyword type="function" name="gst_buffer_add_net_control_message_meta ()" link="gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-add-net-control-message-meta"/>
+    <keyword type="macro" name="gst_buffer_get_net_control_message_meta()" link="gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-get-net-control-message-meta"/>
+    <keyword type="function" name="gst_net_control_message_meta_get_info ()" link="gstreamer-libs-GstNetControlMessageMeta.html#gst-net-control-message-meta-get-info"/>
+    <keyword type="struct" name="struct GstNetControlMessageMeta" link="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta"/>
     <keyword type="function" name="gst_net_time_packet_new ()" link="gstreamer-libs-GstNetTimePacket.html#gst-net-time-packet-new"/>
     <keyword type="function" name="gst_net_time_packet_copy ()" link="gstreamer-libs-GstNetTimePacket.html#gst-net-time-packet-copy"/>
     <keyword type="function" name="gst_net_time_packet_free ()" link="gstreamer-libs-GstNetTimePacket.html#gst-net-time-packet-free"/>
@@ -557,6 +595,16 @@
     <keyword type="property" name="The “address” property" link="GstNetTimeProvider.html#GstNetTimeProvider--address"/>
     <keyword type="property" name="The “clock” property" link="GstNetTimeProvider.html#GstNetTimeProvider--clock"/>
     <keyword type="property" name="The “port” property" link="GstNetTimeProvider.html#GstNetTimeProvider--port"/>
+    <keyword type="macro" name="GST_PTP_CLOCK_ID_NONE" link="gstreamer-libs-GstPtpClock.html#GST-PTP-CLOCK-ID-NONE:CAPS"/>
+    <keyword type="function" name="gst_ptp_init ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-init" since="1.6"/>
+    <keyword type="function" name="gst_ptp_deinit ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-deinit" since="1.6"/>
+    <keyword type="function" name="gst_ptp_is_initialized ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-is-initialized" since="1.6"/>
+    <keyword type="function" name="gst_ptp_is_supported ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-is-supported" since="1.6"/>
+    <keyword type="function" name="gst_ptp_clock_new ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-clock-new" since="1.6"/>
+    <keyword type="function" name="GstPtpStatisticsCallback ()" link="gstreamer-libs-GstPtpClock.html#GstPtpStatisticsCallback"/>
+    <keyword type="function" name="gst_ptp_statistics_callback_add ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" since="1.6"/>
+    <keyword type="function" name="gst_ptp_statistics_callback_remove ()" link="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-remove" since="1.6"/>
+    <keyword type="struct" name="struct GstPtpClock" link="gstreamer-libs-GstPtpClock.html#GstPtpClock"/>
     <keyword type="macro" name="GST_START_TEST()" link="gstreamer-libs-GstCheck.html#GST-START-TEST:CAPS"/>
     <keyword type="macro" name="ASSERT_BUFFER_REFCOUNT()" link="gstreamer-libs-GstCheck.html#ASSERT-BUFFER-REFCOUNT:CAPS"/>
     <keyword type="macro" name="ASSERT_CAPS_REFCOUNT()" link="gstreamer-libs-GstCheck.html#ASSERT-CAPS-REFCOUNT:CAPS"/>
@@ -609,6 +657,8 @@
     <keyword type="function" name="gst_check_setup_sink_pad_from_template ()" link="gstreamer-libs-GstCheck.html#gst-check-setup-sink-pad-from-template" since="1.4"/>
     <keyword type="function" name="gst_check_setup_src_pad_by_name_from_template ()" link="gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-by-name-from-template" since="1.4"/>
     <keyword type="function" name="gst_check_setup_src_pad_from_template ()" link="gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-from-template" since="1.4"/>
+    <keyword type="function" name="gst_check_objects_destroyed_on_unref ()" link="gstreamer-libs-GstCheck.html#gst-check-objects-destroyed-on-unref" since="1.6"/>
+    <keyword type="function" name="gst_check_object_destroyed_on_unref ()" link="gstreamer-libs-GstCheck.html#gst-check-object-destroyed-on-unref" since="1.6"/>
     <keyword type="macro" name="GST_END_TEST" link="gstreamer-libs-GstCheck.html#GST-END-TEST:CAPS"/>
     <keyword type="function" name="gst_buffer_straw_start_pipeline ()" link="gstreamer-libs-GstBufferStraw.html#gst-buffer-straw-start-pipeline"/>
     <keyword type="function" name="gst_buffer_straw_get_buffer ()" link="gstreamer-libs-GstBufferStraw.html#gst-buffer-straw-get-buffer"/>
@@ -618,6 +668,89 @@
     <keyword type="function" name="gst_consistency_checker_free ()" link="gstreamer-libs-GstStreamConsistency.html#gst-consistency-checker-free"/>
     <keyword type="function" name="gst_consistency_checker_add_pad ()" link="gstreamer-libs-GstStreamConsistency.html#gst-consistency-checker-add-pad"/>
     <keyword type="struct" name="GstStreamConsistency" link="gstreamer-libs-GstStreamConsistency.html#GstStreamConsistency"/>
+    <keyword type="function" name="gst_harness_new_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-new-full" since="1.6"/>
+    <keyword type="function" name="gst_harness_new_with_element ()" link="gstreamer-libs-GstHarness.html#gst-harness-new-with-element" since="1.6"/>
+    <keyword type="function" name="gst_harness_new_with_padnames ()" link="gstreamer-libs-GstHarness.html#gst-harness-new-with-padnames" since="1.6"/>
+    <keyword type="function" name="gst_harness_new_with_templates ()" link="gstreamer-libs-GstHarness.html#gst-harness-new-with-templates" since="1.6"/>
+    <keyword type="function" name="gst_harness_new ()" link="gstreamer-libs-GstHarness.html#gst-harness-new" since="1.6"/>
+    <keyword type="function" name="gst_harness_new_parse ()" link="gstreamer-libs-GstHarness.html#gst-harness-new-parse" since="1.6"/>
+    <keyword type="function" name="gst_harness_teardown ()" link="gstreamer-libs-GstHarness.html#gst-harness-teardown" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_element_src_pad ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-element-src-pad" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_element_sink_pad ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-element-sink-pad" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_src_caps ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-src-caps" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_sink_caps ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_caps ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-caps" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_src_caps_str ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-src-caps-str" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_sink_caps_str ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps-str" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_caps_str ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-caps-str" since="1.6"/>
+    <keyword type="function" name="gst_harness_use_systemclock ()" link="gstreamer-libs-GstHarness.html#gst-harness-use-systemclock" since="1.6"/>
+    <keyword type="function" name="gst_harness_use_testclock ()" link="gstreamer-libs-GstHarness.html#gst-harness-use-testclock" since="1.6"/>
+    <keyword type="function" name="gst_harness_get_testclock ()" link="gstreamer-libs-GstHarness.html#gst-harness-get-testclock" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_time ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-time" since="1.6"/>
+    <keyword type="function" name="gst_harness_wait_for_clock_id_waits ()" link="gstreamer-libs-GstHarness.html#gst-harness-wait-for-clock-id-waits" since="1.6"/>
+    <keyword type="function" name="gst_harness_crank_single_clock_wait ()" link="gstreamer-libs-GstHarness.html#gst-harness-crank-single-clock-wait" since="1.6"/>
+    <keyword type="function" name="gst_harness_crank_multiple_clock_waits ()" link="gstreamer-libs-GstHarness.html#gst-harness-crank-multiple-clock-waits" since="1.6"/>
+    <keyword type="function" name="gst_harness_play ()" link="gstreamer-libs-GstHarness.html#gst-harness-play" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_blocking_push_mode ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-blocking-push-mode" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_forwarding ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-forwarding" since="1.6"/>
+    <keyword type="function" name="gst_harness_create_buffer ()" link="gstreamer-libs-GstHarness.html#gst-harness-create-buffer" since="1.6"/>
+    <keyword type="function" name="gst_harness_push ()" link="gstreamer-libs-GstHarness.html#gst-harness-push" since="1.6"/>
+    <keyword type="function" name="gst_harness_pull ()" link="gstreamer-libs-GstHarness.html#gst-harness-pull" since="1.6"/>
+    <keyword type="function" name="gst_harness_try_pull ()" link="gstreamer-libs-GstHarness.html#gst-harness-try-pull" since="1.6"/>
+    <keyword type="function" name="gst_harness_push_and_pull ()" link="gstreamer-libs-GstHarness.html#gst-harness-push-and-pull" since="1.6"/>
+    <keyword type="function" name="gst_harness_buffers_received ()" link="gstreamer-libs-GstHarness.html#gst-harness-buffers-received" since="1.6"/>
+    <keyword type="function" name="gst_harness_buffers_in_queue ()" link="gstreamer-libs-GstHarness.html#gst-harness-buffers-in-queue" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_drop_buffers ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-drop-buffers" since="1.6"/>
+    <keyword type="function" name="gst_harness_dump_to_file ()" link="gstreamer-libs-GstHarness.html#gst-harness-dump-to-file" since="1.6"/>
+    <keyword type="function" name="gst_harness_get_last_pushed_timestamp ()" link="gstreamer-libs-GstHarness.html#gst-harness-get-last-pushed-timestamp" since="1.6"/>
+    <keyword type="function" name="gst_harness_push_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-push-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_pull_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-pull-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_try_pull_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-try-pull-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_events_received ()" link="gstreamer-libs-GstHarness.html#gst-harness-events-received" since="1.6"/>
+    <keyword type="function" name="gst_harness_events_in_queue ()" link="gstreamer-libs-GstHarness.html#gst-harness-events-in-queue" since="1.6"/>
+    <keyword type="function" name="gst_harness_push_upstream_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-push-upstream-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_pull_upstream_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-pull-upstream-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_try_pull_upstream_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-try-pull-upstream-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_upstream_events_received ()" link="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-received" since="1.6"/>
+    <keyword type="function" name="gst_harness_upstream_events_in_queue ()" link="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-in-queue" since="1.6"/>
+    <keyword type="function" name="gst_harness_query_latency ()" link="gstreamer-libs-GstHarness.html#gst-harness-query-latency" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_upstream_latency ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-upstream-latency" since="1.6"/>
+    <keyword type="function" name="gst_harness_set_propose_allocator ()" link="gstreamer-libs-GstHarness.html#gst-harness-set-propose-allocator" since="1.6"/>
+    <keyword type="function" name="gst_harness_get_allocator ()" link="gstreamer-libs-GstHarness.html#gst-harness-get-allocator" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_src ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-src" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_src_harness ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-src-harness" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_src_parse ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-src-parse" since="1.6"/>
+    <keyword type="function" name="gst_harness_push_from_src ()" link="gstreamer-libs-GstHarness.html#gst-harness-push-from-src" since="1.6"/>
+    <keyword type="function" name="gst_harness_src_crank_and_push_many ()" link="gstreamer-libs-GstHarness.html#gst-harness-src-crank-and-push-many" since="1.6"/>
+    <keyword type="function" name="gst_harness_src_push_event ()" link="gstreamer-libs-GstHarness.html#gst-harness-src-push-event" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_sink ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-sink" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_sink_harness ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-sink-harness" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_sink_parse ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-sink-parse" since="1.6"/>
+    <keyword type="function" name="gst_harness_push_to_sink ()" link="gstreamer-libs-GstHarness.html#gst-harness-push-to-sink" since="1.6"/>
+    <keyword type="function" name="gst_harness_sink_push_many ()" link="gstreamer-libs-GstHarness.html#gst-harness-sink-push-many" since="1.6"/>
+    <keyword type="function" name="gst_harness_find_element ()" link="gstreamer-libs-GstHarness.html#gst-harness-find-element" since="1.6"/>
+    <keyword type="function" name="gst_harness_set ()" link="gstreamer-libs-GstHarness.html#gst-harness-set" since="1.6"/>
+    <keyword type="function" name="gst_harness_get ()" link="gstreamer-libs-GstHarness.html#gst-harness-get" since="1.6"/>
+    <keyword type="function" name="gst_harness_add_probe ()" link="gstreamer-libs-GstHarness.html#gst-harness-add-probe" since="1.6"/>
+    <keyword type="function" name="gst_harness_stress_thread_stop ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-thread-stop" since="1.6"/>
+    <keyword type="function" name="gst_harness_stress_custom_start ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-custom-start" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_statechange_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start"/>
+    <keyword type="function" name="gst_harness_stress_statechange_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start-full" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_push_buffer_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start"/>
+    <keyword type="function" name="gst_harness_stress_push_buffer_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start-full" since="1.6"/>
+    <keyword type="function" name="GstHarnessPrepareBufferFunc ()" link="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_push_buffer_with_cb_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start"/>
+    <keyword type="function" name="gst_harness_stress_push_buffer_with_cb_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start-full" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_push_event_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start"/>
+    <keyword type="function" name="gst_harness_stress_push_event_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start-full" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_send_upstream_event_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-send-upstream-event-start"/>
+    <keyword type="function" name="gst_harness_stress_push_upstream_event_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-push-upstream-event-start-full" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_property_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start"/>
+    <keyword type="function" name="gst_harness_stress_property_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start-full" since="1.6"/>
+    <keyword type="macro" name="gst_harness_stress_requestpad_start()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start"/>
+    <keyword type="function" name="gst_harness_stress_requestpad_start_full ()" link="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start-full" since="1.6"/>
+    <keyword type="struct" name="struct GstHarness" link="gstreamer-libs-GstHarness.html#GstHarness" since="1.6"/>
+    <keyword type="struct" name="GstHarnessThread" link="gstreamer-libs-GstHarness.html#GstHarnessThread" since="1.6"/>
     <keyword type="function" name="gst_test_clock_new ()" link="GstTestClock.html#gst-test-clock-new" since="1.2"/>
     <keyword type="function" name="gst_test_clock_new_with_start_time ()" link="GstTestClock.html#gst-test-clock-new-with-start-time" since="1.2"/>
     <keyword type="function" name="gst_test_clock_set_time ()" link="GstTestClock.html#gst-test-clock-set-time" since="1.2"/>
@@ -635,5 +768,27 @@
     <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 “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"/>
+    <keyword type="constant" name="GST_BASE_PARSE_FRAME_FLAG_NO_FRAME" link="GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-NO-FRAME:CAPS"/>
+    <keyword type="constant" name="GST_BASE_PARSE_FRAME_FLAG_CLIP" link="GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-CLIP:CAPS"/>
+    <keyword type="constant" name="GST_BASE_PARSE_FRAME_FLAG_DROP" link="GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-DROP:CAPS"/>
+    <keyword type="constant" name="GST_BASE_PARSE_FRAME_FLAG_QUEUE" link="GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-QUEUE:CAPS"/>
+    <keyword type="constant" name="GST_BASE_SRC_FLAG_STARTING" link="GstBaseSrc.html#GST-BASE-SRC-FLAG-STARTING:CAPS"/>
+    <keyword type="constant" name="GST_BASE_SRC_FLAG_STARTED" link="GstBaseSrc.html#GST-BASE-SRC-FLAG-STARTED:CAPS"/>
+    <keyword type="constant" name="GST_BASE_SRC_FLAG_LAST" link="GstBaseSrc.html#GST-BASE-SRC-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_COLLECT_PADS_STATE_EOS" link="GstCollectPads.html#GST-COLLECT-PADS-STATE-EOS:CAPS"/>
+    <keyword type="constant" name="GST_COLLECT_PADS_STATE_FLUSHING" link="GstCollectPads.html#GST-COLLECT-PADS-STATE-FLUSHING:CAPS"/>
+    <keyword type="constant" name="GST_COLLECT_PADS_STATE_NEW_SEGMENT" link="GstCollectPads.html#GST-COLLECT-PADS-STATE-NEW-SEGMENT:CAPS"/>
+    <keyword type="constant" name="GST_COLLECT_PADS_STATE_WAITING" link="GstCollectPads.html#GST-COLLECT-PADS-STATE-WAITING:CAPS"/>
+    <keyword type="constant" name="GST_COLLECT_PADS_STATE_LOCKED" link="GstCollectPads.html#GST-COLLECT-PADS-STATE-LOCKED:CAPS"/>
+    <keyword type="constant" name="GST_INTERPOLATION_MODE_NONE" link="GstInterpolationControlSource.html#GST-INTERPOLATION-MODE-NONE:CAPS"/>
+    <keyword type="constant" name="GST_INTERPOLATION_MODE_LINEAR" link="GstInterpolationControlSource.html#GST-INTERPOLATION-MODE-LINEAR:CAPS"/>
+    <keyword type="constant" name="GST_INTERPOLATION_MODE_CUBIC" link="GstInterpolationControlSource.html#GST-INTERPOLATION-MODE-CUBIC:CAPS"/>
+    <keyword type="constant" name="GST_LFO_WAVEFORM_SINE" link="GstLFOControlSource.html#GST-LFO-WAVEFORM-SINE:CAPS"/>
+    <keyword type="constant" name="GST_LFO_WAVEFORM_SQUARE" link="GstLFOControlSource.html#GST-LFO-WAVEFORM-SQUARE:CAPS"/>
+    <keyword type="constant" name="GST_LFO_WAVEFORM_SAW" link="GstLFOControlSource.html#GST-LFO-WAVEFORM-SAW:CAPS"/>
+    <keyword type="constant" name="GST_LFO_WAVEFORM_REVERSE_SAW" link="GstLFOControlSource.html#GST-LFO-WAVEFORM-REVERSE-SAW:CAPS"/>
+    <keyword type="constant" name="GST_LFO_WAVEFORM_TRIANGLE" link="GstLFOControlSource.html#GST-LFO-WAVEFORM-TRIANGLE:CAPS"/>
   </functions>
 </book>
diff --git a/docs/libs/html/gstreamer-libs-GstBitReader.html b/docs/libs/html/gstreamer-libs-GstBitReader.html
index 0ff8044..ca47216 100644
--- a/docs/libs/html/gstreamer-libs-GstBitReader.html
+++ b/docs/libs/html/gstreamer-libs-GstBitReader.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstBitReader</title>
+<title>GstBitReader: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstAdapter.html" title="GstAdapter">
 <link rel="next" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -331,8 +331,9 @@
 <p>Create a new <a class="link" href="gstreamer-libs-GstBitReader.html#GstBitReader" title="GstBitReader"><span class="type">GstBitReader</span></a> instance, which will read from <em class="parameter"><code>data</code></em>
 .</p>
 <p>Free-function: gst_bit_reader_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.9.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.9.7.3.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -356,7 +357,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.9.7.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.9.7.3.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstBitReader.html#GstBitReader" title="GstBitReader"><span class="type">GstBitReader</span></a> instance. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -448,7 +449,6 @@
 <a name="id-1.2.4.9.7.6.6"></a><h4>Returns</h4>
 <p> The current position of <em class="parameter"><code>reader</code></em>
 in bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -476,7 +476,6 @@
 <a name="id-1.2.4.9.7.7.6"></a><h4>Returns</h4>
 <p> The remaining number of bits of <em class="parameter"><code>reader</code></em>
 instance.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -513,7 +512,6 @@
 <a name="id-1.2.4.9.7.8.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the position could be set successfully, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -541,7 +539,6 @@
 <a name="id-1.2.4.9.7.9.6"></a><h4>Returns</h4>
 <p> The total number of bits of <em class="parameter"><code>reader</code></em>
 instance.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -578,7 +575,6 @@
 <a name="id-1.2.4.9.7.10.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>nbits</code></em>
 bits could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -605,7 +601,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.11.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -648,7 +643,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.12.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -691,7 +685,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -734,7 +727,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -777,7 +769,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -820,7 +811,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -863,7 +853,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.17.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -906,7 +895,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -949,7 +937,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.19.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1043,7 +1030,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.22.6"></a><h4>Returns</h4>
 <p> unsigned 16 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1082,7 +1068,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.23.6"></a><h4>Returns</h4>
 <p> unsigned 32 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1121,7 +1106,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.24.6"></a><h4>Returns</h4>
 <p> unsigned 64 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1160,7 +1144,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.25.6"></a><h4>Returns</h4>
 <p> unsigned 8 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1199,7 +1182,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.26.6"></a><h4>Returns</h4>
 <p> unsigned 16 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1238,7 +1220,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.27.6"></a><h4>Returns</h4>
 <p> unsigned 32 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1277,7 +1258,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.28.6"></a><h4>Returns</h4>
 <p> unsigned 64 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1316,7 +1296,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.9.7.29.6"></a><h4>Returns</h4>
 <p> unsigned 8 bit integer with the bits.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -1371,7 +1350,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstBufferStraw.html b/docs/libs/html/gstreamer-libs-GstBufferStraw.html
index 862cb2b..702cfa3 100644
--- a/docs/libs/html/gstreamer-libs-GstBufferStraw.html
+++ b/docs/libs/html/gstreamer-libs-GstBufferStraw.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstBufferStraw</title>
+<title>GstBufferStraw: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
 <link rel="prev" href="gstreamer-libs-GstCheck.html" title="GstCheck">
 <link rel="next" href="gstreamer-libs-GstStreamConsistency.html" title="GstStreamConsistency">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -163,7 +163,6 @@
 <div class="refsect3">
 <a name="id-1.2.7.4.6.3.7"></a><h4>Returns</h4>
 <p> the captured <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -173,7 +172,7 @@
 gst_buffer_straw_stop_pipeline (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *bin</code></em>,
                                 <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *pad</code></em>);</pre>
 <p>Set <em class="parameter"><code>bin</code></em>
- to <span class="type">GST_STATE_NULL</span> and release resource allocated in
+ to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-NULL:CAPS"><span class="type">GST_STATE_NULL</span></a> and release resource allocated in
 <a class="link" href="gstreamer-libs-GstBufferStraw.html#gst-buffer-straw-start-pipeline" title="gst_buffer_straw_start_pipeline ()"><code class="function">gst_buffer_straw_start_pipeline()</code></a>.</p>
 <p>You must have previously called <a class="link" href="gstreamer-libs-GstBufferStraw.html#gst-buffer-straw-start-pipeline" title="gst_buffer_straw_start_pipeline ()"><code class="function">gst_buffer_straw_start_pipeline()</code></a> on
 <em class="parameter"><code>pipeline</code></em>
@@ -208,7 +207,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstByteReader.html b/docs/libs/html/gstreamer-libs-GstByteReader.html
index 4e03826..1ff2e69 100644
--- a/docs/libs/html/gstreamer-libs-GstByteReader.html
+++ b/docs/libs/html/gstreamer-libs-GstByteReader.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstByteReader</title>
+<title>GstByteReader: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">
 <link rel="next" href="gstreamer-libs-GstByteWriter.html" title="GstByteWriter">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -72,6 +72,22 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-sub-reader" title="gst_byte_reader_peek_sub_reader ()">gst_byte_reader_peek_sub_reader</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-sub-reader" title="gst_byte_reader_get_sub_reader ()">gst_byte_reader_get_sub_reader</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 </td>
 <td class="function_name">
@@ -495,6 +511,14 @@
 </td>
 </tr>
 <tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32-peek" title="gst_byte_reader_masked_scan_uint32_peek ()">gst_byte_reader_masked_scan_uint32_peek</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
 <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-string" title="gst_byte_reader_get_string()">gst_byte_reader_get_string</a><span class="c_punctuation">()</span>
@@ -1037,8 +1061,9 @@
 <p>Create a new <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance, which will read from <em class="parameter"><code>data</code></em>
 .</p>
 <p>Free-function: gst_byte_reader_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.3.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1062,7 +1087,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.3.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1132,12 +1157,119 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-byte-reader-peek-sub-reader"></a><h3>gst_byte_reader_peek_sub_reader ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_peek_sub_reader (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                 <em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *sub_reader</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>);</pre>
+<p>Initializes a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> sub-reader instance to contain <em class="parameter"><code>size</code></em>
+ bytes of
+data from the current position of <em class="parameter"><code>reader</code></em>
+. This is useful to read chunked
+formats and make sure that one doesn't read beyond the size of the sub-chunk.</p>
+<p>Unlike <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-sub-reader" title="gst_byte_reader_get_sub_reader ()"><code class="function">gst_byte_reader_get_sub_reader()</code></a>, this function does not modify the
+current position of <em class="parameter"><code>reader</code></em>
+.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.6.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>an existing and initialized <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sub_reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance to initialize as sub-reader</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>size of <em class="parameter"><code>sub_reader</code></em>
+in bytes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.6.8"></a><h4>Returns</h4>
+<p> FALSE on error or if <em class="parameter"><code>reader</code></em>
+does not contain <em class="parameter"><code>size</code></em>
+more bytes from
+the current position, and otherwise TRUE</p>
+</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-byte-reader-get-sub-reader"></a><h3>gst_byte_reader_get_sub_reader ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_get_sub_reader (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *sub_reader</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>);</pre>
+<p>Initializes a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> sub-reader instance to contain <em class="parameter"><code>size</code></em>
+ bytes of
+data from the current position of <em class="parameter"><code>reader</code></em>
+. This is useful to read chunked
+formats and make sure that one doesn't read beyond the size of the sub-chunk.</p>
+<p>Unlike <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-sub-reader" title="gst_byte_reader_peek_sub_reader ()"><code class="function">gst_byte_reader_peek_sub_reader()</code></a>, this function also modifies the
+position of <em class="parameter"><code>reader</code></em>
+ and moves it forward by <em class="parameter"><code>size</code></em>
+ bytes.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.7.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>an existing and initialized <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sub_reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance to initialize as sub-reader</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>size of <em class="parameter"><code>sub_reader</code></em>
+in bytes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.7.8"></a><h4>Returns</h4>
+<p> FALSE on error or if <em class="parameter"><code>reader</code></em>
+does not contain <em class="parameter"><code>size</code></em>
+more bytes from
+the current position, and otherwise TRUE</p>
+</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-byte-reader-get-pos"></a><h3>gst_byte_reader_get_pos ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_byte_reader_get_pos (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
 <p>Returns the current position of a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance in bytes.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1152,10 +1284,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.8.6"></a><h4>Returns</h4>
 <p> The current position of <em class="parameter"><code>reader</code></em>
 in bytes.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1165,7 +1296,7 @@
 gst_byte_reader_get_remaining (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
 <p>Returns the remaining number of bytes of a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1180,10 +1311,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.9.6"></a><h4>Returns</h4>
 <p> The remaining number of bytes of <em class="parameter"><code>reader</code></em>
 instance.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1195,7 +1325,7 @@
 <p>Sets the new position of a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance to <em class="parameter"><code>pos</code></em>
  in bytes.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1217,10 +1347,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.10.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the position could be set successfully, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1230,7 +1359,7 @@
 gst_byte_reader_get_size (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
 <p>Returns the total number of bytes of a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1245,10 +1374,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.11.6"></a><h4>Returns</h4>
 <p> The total number of bytes of <em class="parameter"><code>reader</code></em>
 instance.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1260,7 +1388,7 @@
 <p>Skips <em class="parameter"><code>nbytes</code></em>
  bytes of the <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1282,10 +1410,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.12.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>nbytes</code></em>
 bytes could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1297,7 +1424,7 @@
 <p>Read a signed 8 bit integer into <em class="parameter"><code>val</code></em>
  and update the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1319,9 +1446,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.11.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1334,80 +1460,6 @@
 
 and update the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.12.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.12.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-int16-le"></a><h3>gst_byte_reader_get_int16_le ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int16_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                              <em class="parameter"><code><span class="type">gint16</span> *val</code></em>);</pre>
-<p>Read a signed 16 bit little endian integer into <em class="parameter"><code>val</code></em>
-
-and update the current position.</p>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.13.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-int24-be"></a><h3>gst_byte_reader_get_int24_be ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int24_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                              <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 24 bit big endian integer into <em class="parameter"><code>val</code></em>
-
-and update the current position.</p>
-<div class="refsect3">
 <a name="id-1.2.4.10.7.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -1423,7 +1475,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
@@ -1432,16 +1484,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.14.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int24-le"></a><h3>gst_byte_reader_get_int24_le ()</h3>
+<a name="gst-byte-reader-get-int16-le"></a><h3>gst_byte_reader_get_int16_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int24_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                              <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 24 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_int16_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                              <em class="parameter"><code><span class="type">gint16</span> *val</code></em>);</pre>
+<p>Read a signed 16 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1460,7 +1511,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
@@ -1469,16 +1520,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int32-be"></a><h3>gst_byte_reader_get_int32_be ()</h3>
+<a name="gst-byte-reader-get-int24-be"></a><h3>gst_byte_reader_get_int24_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int32_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_get_int24_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                               <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 32 bit big endian integer into <em class="parameter"><code>val</code></em>
+<p>Read a signed 24 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1506,16 +1556,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.16.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int32-le"></a><h3>gst_byte_reader_get_int32_le ()</h3>
+<a name="gst-byte-reader-get-int24-le"></a><h3>gst_byte_reader_get_int24_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int32_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_get_int24_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                               <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 32 bit little endian integer into <em class="parameter"><code>val</code></em>
+<p>Read a signed 24 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1543,16 +1592,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.17.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int64-be"></a><h3>gst_byte_reader_get_int64_be ()</h3>
+<a name="gst-byte-reader-get-int32-be"></a><h3>gst_byte_reader_get_int32_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int64_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                              <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
-<p>Read a signed 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_int32_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                              <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
+<p>Read a signed 32 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1571,7 +1619,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint64</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </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>
@@ -1580,16 +1628,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int64-le"></a><h3>gst_byte_reader_get_int64_le ()</h3>
+<a name="gst-byte-reader-get-int32-le"></a><h3>gst_byte_reader_get_int32_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_int64_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                              <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
-<p>Read a signed 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_int32_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                              <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
+<p>Read a signed 32 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1608,6 +1655,42 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </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>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.19.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-get-int64-be"></a><h3>gst_byte_reader_get_int64_be ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_get_int64_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                              <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
+<p>Read a signed 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+
+and update the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.20.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
 <td class="parameter_description"><p> Pointer to a <span class="type">gint64</span> to store the result. </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>
@@ -1615,9 +1698,44 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.19.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.20.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-get-int64-le"></a><h3>gst_byte_reader_get_int64_le ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_get_int64_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                              <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
+<p>Read a signed 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+
+and update the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.21.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint64</span> to store the result. </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>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.21.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -1629,7 +1747,7 @@
 <p>Read an unsigned 8 bit integer into <em class="parameter"><code>val</code></em>
  and update the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1651,9 +1769,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.20.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.22.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1666,80 +1783,6 @@
 
 and update the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.21.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.21.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-uint16-le"></a><h3>gst_byte_reader_get_uint16_le ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint16_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">guint16</span> *val</code></em>);</pre>
-<p>Read an unsigned 16 bit little endian integer into <em class="parameter"><code>val</code></em>
-
-and update the current position.</p>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.22.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.22.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-uint24-be"></a><h3>gst_byte_reader_get_uint24_be ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint24_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 24 bit big endian integer into <em class="parameter"><code>val</code></em>
-
-and update the current position.</p>
-<div class="refsect3">
 <a name="id-1.2.4.10.7.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -1755,7 +1798,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
@@ -1764,16 +1807,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.23.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint24-le"></a><h3>gst_byte_reader_get_uint24_le ()</h3>
+<a name="gst-byte-reader-get-uint16-le"></a><h3>gst_byte_reader_get_uint16_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint24_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 24 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_uint16_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">guint16</span> *val</code></em>);</pre>
+<p>Read an unsigned 16 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1792,7 +1834,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
@@ -1801,16 +1843,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.24.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint32-be"></a><h3>gst_byte_reader_get_uint32_be ()</h3>
+<a name="gst-byte-reader-get-uint24-be"></a><h3>gst_byte_reader_get_uint24_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint32_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_get_uint24_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                                <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 32 bit big endian integer into <em class="parameter"><code>val</code></em>
+<p>Read an unsigned 24 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1838,16 +1879,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.25.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint32-le"></a><h3>gst_byte_reader_get_uint32_le ()</h3>
+<a name="gst-byte-reader-get-uint24-le"></a><h3>gst_byte_reader_get_uint24_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint32_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_get_uint24_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                                <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 32 bit little endian integer into <em class="parameter"><code>val</code></em>
+<p>Read an unsigned 24 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1875,16 +1915,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.26.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint64-be"></a><h3>gst_byte_reader_get_uint64_be ()</h3>
+<a name="gst-byte-reader-get-uint32-be"></a><h3>gst_byte_reader_get_uint32_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint64_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
-<p>Read an unsigned 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_uint32_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
+<p>Read an unsigned 32 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1903,7 +1942,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </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>
@@ -1912,16 +1951,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.27.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint64-le"></a><h3>gst_byte_reader_get_uint64_le ()</h3>
+<a name="gst-byte-reader-get-uint32-le"></a><h3>gst_byte_reader_get_uint32_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_uint64_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
-<p>Read an unsigned 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_uint32_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
+<p>Read an unsigned 32 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -1940,6 +1978,42 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </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>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.28.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-get-uint64-be"></a><h3>gst_byte_reader_get_uint64_be ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_get_uint64_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
+<p>Read an unsigned 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+
+and update the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.29.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
 <td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </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>
@@ -1947,9 +2021,44 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.28.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.29.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-get-uint64-le"></a><h3>gst_byte_reader_get_uint64_le ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_get_uint64_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
+<p>Read an unsigned 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+
+and update the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.30.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </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>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.30.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -1961,7 +2070,7 @@
 <p>Read a signed 8 bit integer into <em class="parameter"><code>val</code></em>
  but keep the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.29.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1983,9 +2092,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.29.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.31.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1998,80 +2106,6 @@
 
 but keep the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.30.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.30.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-peek-int16-le"></a><h3>gst_byte_reader_peek_int16_le ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int16_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">gint16</span> *val</code></em>);</pre>
-<p>Read a signed 16 bit little endian integer into <em class="parameter"><code>val</code></em>
-
-but keep the current position.</p>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.31.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.31.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-peek-int24-be"></a><h3>gst_byte_reader_peek_int24_be ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int24_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 24 bit big endian integer into <em class="parameter"><code>val</code></em>
-
-but keep the current position.</p>
-<div class="refsect3">
 <a name="id-1.2.4.10.7.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -2087,7 +2121,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
@@ -2096,16 +2130,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.32.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int24-le"></a><h3>gst_byte_reader_peek_int24_le ()</h3>
+<a name="gst-byte-reader-peek-int16-le"></a><h3>gst_byte_reader_peek_int16_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int24_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 24 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_int16_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">gint16</span> *val</code></em>);</pre>
+<p>Read a signed 16 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2124,7 +2157,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint16</span> to store the result. </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>
@@ -2133,16 +2166,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.33.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int32-be"></a><h3>gst_byte_reader_peek_int32_be ()</h3>
+<a name="gst-byte-reader-peek-int24-be"></a><h3>gst_byte_reader_peek_int24_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int32_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_peek_int24_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                                <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 32 bit big endian integer into <em class="parameter"><code>val</code></em>
+<p>Read a signed 24 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2170,16 +2202,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.34.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int32-le"></a><h3>gst_byte_reader_peek_int32_le ()</h3>
+<a name="gst-byte-reader-peek-int24-le"></a><h3>gst_byte_reader_peek_int24_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int32_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_peek_int24_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                                <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
-<p>Read a signed 32 bit little endian integer into <em class="parameter"><code>val</code></em>
+<p>Read a signed 24 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2207,16 +2238,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.35.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int64-be"></a><h3>gst_byte_reader_peek_int64_be ()</h3>
+<a name="gst-byte-reader-peek-int32-be"></a><h3>gst_byte_reader_peek_int32_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int64_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
-<p>Read a signed 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_int32_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
+<p>Read a signed 32 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2235,7 +2265,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">gint64</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </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>
@@ -2244,16 +2274,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.36.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int64-le"></a><h3>gst_byte_reader_peek_int64_le ()</h3>
+<a name="gst-byte-reader-peek-int32-le"></a><h3>gst_byte_reader_peek_int32_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_int64_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                               <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
-<p>Read a signed 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_int32_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">gint32</span> *val</code></em>);</pre>
+<p>Read a signed 32 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2272,6 +2301,42 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint32</span> to store the result. </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>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.37.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-peek-int64-be"></a><h3>gst_byte_reader_peek_int64_be ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_peek_int64_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
+<p>Read a signed 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+
+but keep the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.38.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
 <td class="parameter_description"><p> Pointer to a <span class="type">gint64</span> to store the result. </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>
@@ -2279,9 +2344,44 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.37.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.38.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-peek-int64-le"></a><h3>gst_byte_reader_peek_int64_le ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_peek_int64_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                               <em class="parameter"><code><span class="type">gint64</span> *val</code></em>);</pre>
+<p>Read a signed 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+
+but keep the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.39.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">gint64</span> to store the result. </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>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.39.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -2293,7 +2393,7 @@
 <p>Read an unsigned 8 bit integer into <em class="parameter"><code>val</code></em>
  but keep the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.38.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.40.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2315,9 +2415,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.38.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.40.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2330,80 +2429,6 @@
 
 but keep the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.39.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.39.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-peek-uint16-le"></a><h3>gst_byte_reader_peek_uint16_le ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint16_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><span class="type">guint16</span> *val</code></em>);</pre>
-<p>Read an unsigned 16 bit little endian integer into <em class="parameter"><code>val</code></em>
-
-but keep the current position.</p>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.40.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.40.6"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-peek-uint24-be"></a><h3>gst_byte_reader_peek_uint24_be ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint24_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 24 bit big endian integer into <em class="parameter"><code>val</code></em>
-
-but keep the current position.</p>
-<div class="refsect3">
 <a name="id-1.2.4.10.7.41.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -2419,7 +2444,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
@@ -2428,16 +2453,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.41.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint24-le"></a><h3>gst_byte_reader_peek_uint24_le ()</h3>
+<a name="gst-byte-reader-peek-uint16-le"></a><h3>gst_byte_reader_peek_uint16_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint24_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 24 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_uint16_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><span class="type">guint16</span> *val</code></em>);</pre>
+<p>Read an unsigned 16 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2456,7 +2480,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint16</span> to store the result. </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>
@@ -2465,16 +2489,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.42.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint32-be"></a><h3>gst_byte_reader_peek_uint32_be ()</h3>
+<a name="gst-byte-reader-peek-uint24-be"></a><h3>gst_byte_reader_peek_uint24_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint32_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_peek_uint24_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                                 <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 32 bit big endian integer into <em class="parameter"><code>val</code></em>
+<p>Read an unsigned 24 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2502,16 +2525,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.43.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint32-le"></a><h3>gst_byte_reader_peek_uint32_le ()</h3>
+<a name="gst-byte-reader-peek-uint24-le"></a><h3>gst_byte_reader_peek_uint24_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint32_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+gst_byte_reader_peek_uint24_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
                                 <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
-<p>Read an unsigned 32 bit little endian integer into <em class="parameter"><code>val</code></em>
+<p>Read an unsigned 24 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2539,16 +2561,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.44.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint64-be"></a><h3>gst_byte_reader_peek_uint64_be ()</h3>
+<a name="gst-byte-reader-peek-uint32-be"></a><h3>gst_byte_reader_peek_uint32_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint64_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
-<p>Read an unsigned 64 bit big endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_uint32_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
+<p>Read an unsigned 32 bit big endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2567,7 +2588,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </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>
@@ -2576,16 +2597,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.45.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint64-le"></a><h3>gst_byte_reader_peek_uint64_le ()</h3>
+<a name="gst-byte-reader-peek-uint32-le"></a><h3>gst_byte_reader_peek_uint32_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_uint64_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
-<p>Read an unsigned 64 bit little endian integer into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_uint32_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><span class="type">guint32</span> *val</code></em>);</pre>
+<p>Read an unsigned 32 bit little endian integer into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2604,7 +2624,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint32</span> to store the result. </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>
@@ -2613,18 +2633,17 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.46.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float32-le"></a><h3>gst_byte_reader_get_float32_le ()</h3>
+<a name="gst-byte-reader-peek-uint64-be"></a><h3>gst_byte_reader_peek_uint64_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_float32_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
-<p>Read a 32 bit little endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_uint64_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
+<p>Read an unsigned 64 bit big endian integer into <em class="parameter"><code>val</code></em>
 
-and update the current position.</p>
+but keep the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -2641,7 +2660,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </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>
@@ -2650,18 +2669,17 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float32-be"></a><h3>gst_byte_reader_get_float32_be ()</h3>
+<a name="gst-byte-reader-peek-uint64-le"></a><h3>gst_byte_reader_peek_uint64_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_float32_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
-<p>Read a 32 bit big endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_uint64_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><span class="type">guint64</span> *val</code></em>);</pre>
+<p>Read an unsigned 64 bit little endian integer into <em class="parameter"><code>val</code></em>
 
-and update the current position.</p>
+but keep the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -2678,7 +2696,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <span class="type">guint64</span> to store the result. </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>
@@ -2687,16 +2705,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.48.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float64-le"></a><h3>gst_byte_reader_get_float64_le ()</h3>
+<a name="gst-byte-reader-get-float32-le"></a><h3>gst_byte_reader_get_float32_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_float64_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
-<p>Read a 64 bit little endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_float32_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
+<p>Read a 32 bit little endian floating point value into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -2715,7 +2732,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </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>
@@ -2724,16 +2741,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.49.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float64-be"></a><h3>gst_byte_reader_get_float64_be ()</h3>
+<a name="gst-byte-reader-get-float32-be"></a><h3>gst_byte_reader_get_float32_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_float64_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
-<p>Read a 64 bit big endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_float32_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
+<p>Read a 32 bit big endian floating point value into <em class="parameter"><code>val</code></em>
 
 and update the current position.</p>
 <div class="refsect3">
@@ -2752,7 +2768,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </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>
@@ -2761,18 +2777,17 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.50.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float32-le"></a><h3>gst_byte_reader_peek_float32_le ()</h3>
+<a name="gst-byte-reader-get-float64-le"></a><h3>gst_byte_reader_get_float64_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_float32_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
-<p>Read a 32 bit little endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_float64_le (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
+<p>Read a 64 bit little endian floating point value into <em class="parameter"><code>val</code></em>
 
-but keep the current position.</p>
+and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.51.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -2789,7 +2804,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </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>
@@ -2798,18 +2813,17 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.51.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float32-be"></a><h3>gst_byte_reader_peek_float32_be ()</h3>
+<a name="gst-byte-reader-get-float64-be"></a><h3>gst_byte_reader_get_float64_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_float32_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
-<p>Read a 32 bit big endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_get_float64_be (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
+<p>Read a 64 bit big endian floating point value into <em class="parameter"><code>val</code></em>
 
-but keep the current position.</p>
+and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -2826,7 +2840,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </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>
@@ -2835,16 +2849,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.52.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float64-le"></a><h3>gst_byte_reader_peek_float64_le ()</h3>
+<a name="gst-byte-reader-peek-float32-le"></a><h3>gst_byte_reader_peek_float32_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_float64_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
-<p>Read a 64 bit little endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_float32_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
+<p>Read a 32 bit little endian floating point value into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2863,7 +2876,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </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>
@@ -2872,16 +2885,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.53.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float64-be"></a><h3>gst_byte_reader_peek_float64_be ()</h3>
+<a name="gst-byte-reader-peek-float32-be"></a><h3>gst_byte_reader_peek_float32_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_float64_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
-<p>Read a 64 bit big endian floating point value into <em class="parameter"><code>val</code></em>
+gst_byte_reader_peek_float32_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *val</code></em>);</pre>
+<p>Read a 32 bit big endian floating point value into <em class="parameter"><code>val</code></em>
 
 but keep the current position.</p>
 <div class="refsect3">
@@ -2900,7 +2912,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </p></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> to store the result. </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>
@@ -2909,20 +2921,17 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.54.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-data"></a><h3>gst_byte_reader_get_data ()</h3>
+<a name="gst-byte-reader-peek-float64-le"></a><h3>gst_byte_reader_peek_float64_le ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_get_data (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                          <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
-                          <em class="parameter"><code>const <span class="type">guint8</span> **val</code></em>);</pre>
-<p>Returns a constant pointer to the current data
-position if at least <em class="parameter"><code>size</code></em>
- bytes are left and
-updates the current position.</p>
+gst_byte_reader_peek_float64_le (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
+<p>Read a 64 bit little endian floating point value into <em class="parameter"><code>val</code></em>
+
+but keep the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -2938,15 +2947,9 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>Size in bytes</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> address of a
-<span class="type">guint8</span> pointer variable in which to store the result. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </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>
@@ -2954,23 +2957,19 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.55.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-dup-data"></a><h3>gst_byte_reader_dup_data ()</h3>
+<a name="gst-byte-reader-peek-float64-be"></a><h3>gst_byte_reader_peek_float64_be ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_dup_data (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                          <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
-                          <em class="parameter"><code><span class="type">guint8</span> **val</code></em>);</pre>
-<p>Free-function: g_free</p>
-<p>Returns a newly-allocated copy of the current data
-position if at least <em class="parameter"><code>size</code></em>
- bytes are left and
-updates the current position. Free with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed.</p>
+gst_byte_reader_peek_float64_be (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> *val</code></em>);</pre>
+<p>Read a 64 bit big endian floating point value into <em class="parameter"><code>val</code></em>
+
+but keep the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.56.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2984,36 +2983,29 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>Size in bytes</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
 <td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p> address of a
-<span class="type">guint8</span> pointer variable in which to store the result. </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>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
+<td class="parameter_description"><p> Pointer to a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> to store the result. </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>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.56.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.56.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-data"></a><h3>gst_byte_reader_peek_data ()</h3>
+<a name="gst-byte-reader-get-data"></a><h3>gst_byte_reader_get_data ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_byte_reader_peek_data (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
-                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
-                           <em class="parameter"><code>const <span class="type">guint8</span> **val</code></em>);</pre>
+gst_byte_reader_get_data (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                          <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
+                          <em class="parameter"><code>const <span class="type">guint8</span> **val</code></em>);</pre>
 <p>Returns a constant pointer to the current data
 position if at least <em class="parameter"><code>size</code></em>
  bytes are left and
-keeps the current position.</p>
+updates the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.57.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -3045,7 +3037,95 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.57.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-dup-data"></a><h3>gst_byte_reader_dup_data ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_dup_data (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                          <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
+                          <em class="parameter"><code><span class="type">guint8</span> **val</code></em>);</pre>
+<p>Free-function: g_free</p>
+<p>Returns a newly-allocated copy of the current data
+position if at least <em class="parameter"><code>size</code></em>
+ bytes are left and
+updates the current position. Free with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.58.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>Size in bytes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> address of a
+<span class="type">guint8</span> pointer variable in which to store the result. </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>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.58.7"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-peek-data"></a><h3>gst_byte_reader_peek_data ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_byte_reader_peek_data (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
+                           <em class="parameter"><code>const <span class="type">guint8</span> **val</code></em>);</pre>
+<p>Returns a constant pointer to the current data
+position if at least <em class="parameter"><code>size</code></em>
+ bytes are left and
+keeps the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.59.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>Size in bytes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> address of a
+<span class="type">guint8</span> pointer variable in which to store the result. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.59.6"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -3071,7 +3151,7 @@
 <p>It is an error to call this function without making sure that there is
 enough data (offset+size bytes) in the byte reader.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.58.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.60.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3110,7 +3190,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.58.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.60.8"></a><h4>Returns</h4>
 <p> offset of the first match, or -1 if no match was found.</p>
 <p>Example:</p>
 <pre class="programlisting">
@@ -3130,11 +3210,84 @@
 gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
 // -&gt; returns -1
 </pre>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-byte-reader-masked-scan-uint32-peek"></a><h3>gst_byte_reader_masked_scan_uint32_peek ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_byte_reader_masked_scan_uint32_peek
+                               (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>,
+                                <em class="parameter"><code><span class="type">guint32</span> mask</code></em>,
+                                <em class="parameter"><code><span class="type">guint32</span> pattern</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
+                                <em class="parameter"><code><span class="type">guint32</span> *value</code></em>);</pre>
+<p>Scan for pattern <em class="parameter"><code>pattern</code></em>
+ with applied mask <em class="parameter"><code>mask</code></em>
+ in the byte reader data,
+starting from offset <em class="parameter"><code>offset</code></em>
+ relative to the current position.</p>
+<p>The bytes in <em class="parameter"><code>pattern</code></em>
+ and <em class="parameter"><code>mask</code></em>
+ are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+byte reader data for it to match, even if the first or last bytes are masked
+out.</p>
+<p>It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the byte reader.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.61.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>mask to apply to data before matching against <em class="parameter"><code>pattern</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pattern</p></td>
+<td class="parameter_description"><p>pattern to match (after mask is applied)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>offset</p></td>
+<td class="parameter_description"><p>offset from which to start scanning, relative to the current
+position</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>number of bytes to scan from offset</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>pointer to uint32 to return matching data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.61.8"></a><h4>Returns</h4>
+<p> offset of the first match, or -1 if no match was found.</p>
+</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-byte-reader-get-string"></a><h3>gst_byte_reader_get_string()</h3>
 <pre class="programlisting">#define             gst_byte_reader_get_string(reader,str)</pre>
 </div>
@@ -3152,7 +3305,7 @@
 <p>No input checking for valid UTF-8 is done.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.60.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.63.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3175,9 +3328,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.60.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.63.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be found, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3191,7 +3343,7 @@
 UTF-8, ISO-8859-N etc.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.61.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.64.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3214,9 +3366,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.61.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.64.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3233,7 +3384,7 @@
 <p>No input checking for valid UTF-8 is done.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.62.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.65.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3256,9 +3407,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.62.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.65.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3279,7 +3429,7 @@
 UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.64.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.67.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3302,12 +3452,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.64.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.67.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be read into <em class="parameter"><code>str</code></em>
 , <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise. The
 string put into <em class="parameter"><code>str</code></em>
 must be freed with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3327,7 +3476,7 @@
 <p>Note: there is no peek or get variant of this function to ensure correct
 byte alignment of the UTF-16 string.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.65.9"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.68.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3350,11 +3499,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.65.10"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.68.10"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be read, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise. The
 string put into <em class="parameter"><code>str</code></em>
 must be freed with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3374,7 +3522,7 @@
 <p>Note: there is no peek or get variant of this function to ensure correct
 byte alignment of the UTF-32 string.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.66.9"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.69.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3397,11 +3545,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.66.10"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.69.10"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be read, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise. The
 string put into <em class="parameter"><code>str</code></em>
 must be freed with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3414,7 +3561,7 @@
 UTF-8, ISO-8859-N etc.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.67.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.70.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3429,9 +3576,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.67.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.70.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3445,7 +3591,7 @@
 UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.68.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.71.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3460,9 +3606,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.68.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.71.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3475,7 +3620,7 @@
 <p>No input checking for valid UTF-16 is done.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.69.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.72.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3490,9 +3635,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.69.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.72.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3505,7 +3649,7 @@
 <p>No input checking for valid UTF-32 is done.</p>
 <p>This function will fail if no NUL-terminator was found in in the data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.70.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.73.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3520,9 +3664,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.70.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.73.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a string could be skipped, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3535,7 +3678,7 @@
  bytes of the <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance without checking if
 there are enough bytes available in the byte reader.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.71.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.74.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -3565,96 +3708,6 @@
 <p>Read an signed 8 bit integer without checking if there are enough bytes
 available in the byte reader and update the current position.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.72.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.72.6"></a><h4>Returns</h4>
-<p> signed 8 bit integer.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-int16-be-unchecked"></a><h3>gst_byte_reader_get_int16_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint16</span>
-gst_byte_reader_get_int16_be_unchecked
-                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 16 bit integer in big endian format without checking
-if there are enough bytes available in the byte reader and update the
-current position.</p>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.73.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.73.6"></a><h4>Returns</h4>
-<p> signed 16 bit integer.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-int16-le-unchecked"></a><h3>gst_byte_reader_get_int16_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint16</span>
-gst_byte_reader_get_int16_le_unchecked
-                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 16 bit integer in little endian format without checking
-if there are enough bytes available in the byte reader and update the
-current position.</p>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.74.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>reader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.4.10.7.74.6"></a><h4>Returns</h4>
-<p> signed 16 bit integer.</p>
-<p></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-byte-reader-get-int24-be-unchecked"></a><h3>gst_byte_reader_get_int24_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_get_int24_be_unchecked
-                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 24 bit integer in big endian format without checking
-if there are enough bytes available in the byte reader and update the
-current position.</p>
-<div class="refsect3">
 <a name="id-1.2.4.10.7.75.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -3671,17 +3724,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.75.6"></a><h4>Returns</h4>
-<p> signed 24 bit integer (as gint32)</p>
-<p></p>
+<p> signed 8 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int24-le-unchecked"></a><h3>gst_byte_reader_get_int24_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_get_int24_le_unchecked
+<a name="gst-byte-reader-get-int16-be-unchecked"></a><h3>gst_byte_reader_get_int16_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint16</span>
+gst_byte_reader_get_int16_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 24 bit integer in little endian format without checking
+<p>Read a signed 16 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3701,17 +3753,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.76.6"></a><h4>Returns</h4>
-<p> signed 24 bit integer (as gint32)</p>
-<p></p>
+<p> signed 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int32-be-unchecked"></a><h3>gst_byte_reader_get_int32_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_get_int32_be_unchecked
+<a name="gst-byte-reader-get-int16-le-unchecked"></a><h3>gst_byte_reader_get_int16_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint16</span>
+gst_byte_reader_get_int16_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 32 bit integer in big endian format without checking
+<p>Read a signed 16 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3731,17 +3782,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.77.6"></a><h4>Returns</h4>
-<p> signed 32 bit integer.</p>
-<p></p>
+<p> signed 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int32-le-unchecked"></a><h3>gst_byte_reader_get_int32_le_unchecked ()</h3>
+<a name="gst-byte-reader-get-int24-be-unchecked"></a><h3>gst_byte_reader_get_int24_be_unchecked ()</h3>
 <pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_get_int32_le_unchecked
+gst_byte_reader_get_int24_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 32 bit integer in little endian format without checking
+<p>Read a signed 24 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3761,17 +3811,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.78.6"></a><h4>Returns</h4>
-<p> signed 32 bit integer.</p>
-<p></p>
+<p> signed 24 bit integer (as gint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int64-be-unchecked"></a><h3>gst_byte_reader_get_int64_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint64</span>
-gst_byte_reader_get_int64_be_unchecked
+<a name="gst-byte-reader-get-int24-le-unchecked"></a><h3>gst_byte_reader_get_int24_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint32</span>
+gst_byte_reader_get_int24_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 64 bit integer in big endian format without checking
+<p>Read a signed 24 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3791,17 +3840,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.79.6"></a><h4>Returns</h4>
-<p> signed 64 bit integer.</p>
-<p></p>
+<p> signed 24 bit integer (as gint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-int64-le-unchecked"></a><h3>gst_byte_reader_get_int64_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint64</span>
-gst_byte_reader_get_int64_le_unchecked
+<a name="gst-byte-reader-get-int32-be-unchecked"></a><h3>gst_byte_reader_get_int32_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint32</span>
+gst_byte_reader_get_int32_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 64 bit integer in little endian format without checking
+<p>Read a signed 32 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3821,17 +3869,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.80.6"></a><h4>Returns</h4>
-<p> signed 64 bit integer.</p>
-<p></p>
+<p> signed 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint8-unchecked"></a><h3>gst_byte_reader_get_uint8_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint8</span>
-gst_byte_reader_get_uint8_unchecked (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 8 bit integer without checking if there are enough bytes
-available in the byte reader and update the current position.</p>
+<a name="gst-byte-reader-get-int32-le-unchecked"></a><h3>gst_byte_reader_get_int32_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint32</span>
+gst_byte_reader_get_int32_le_unchecked
+                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read a signed 32 bit integer in little endian format without checking
+if there are enough bytes available in the byte reader and update the
+current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.81.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -3849,17 +3898,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.81.6"></a><h4>Returns</h4>
-<p> unsigned 8 bit integer.</p>
-<p></p>
+<p> signed 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint16-be-unchecked"></a><h3>gst_byte_reader_get_uint16_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint16</span>
-gst_byte_reader_get_uint16_be_unchecked
+<a name="gst-byte-reader-get-int64-be-unchecked"></a><h3>gst_byte_reader_get_int64_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint64</span>
+gst_byte_reader_get_int64_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 16 bit integer in big endian format without checking
+<p>Read a signed 64 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3879,17 +3927,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.82.6"></a><h4>Returns</h4>
-<p> unsigned 16 bit integer.</p>
-<p></p>
+<p> signed 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint16-le-unchecked"></a><h3>gst_byte_reader_get_uint16_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint16</span>
-gst_byte_reader_get_uint16_le_unchecked
+<a name="gst-byte-reader-get-int64-le-unchecked"></a><h3>gst_byte_reader_get_int64_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint64</span>
+gst_byte_reader_get_int64_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 16 bit integer in little endian format without checking
+<p>Read a signed 64 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3909,19 +3956,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.83.6"></a><h4>Returns</h4>
-<p> unsigned 16 bit integer.</p>
-<p></p>
+<p> signed 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint24-be-unchecked"></a><h3>gst_byte_reader_get_uint24_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_get_uint24_be_unchecked
-                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 24 bit integer in big endian format without checking
-if there are enough bytes available in the byte reader and update the
-current position.</p>
+<a name="gst-byte-reader-get-uint8-unchecked"></a><h3>gst_byte_reader_get_uint8_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint8</span>
+gst_byte_reader_get_uint8_unchecked (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read an unsigned 8 bit integer without checking if there are enough bytes
+available in the byte reader and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.84.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -3939,17 +3983,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.84.6"></a><h4>Returns</h4>
-<p> unsigned 24 bit integer (as guint32)</p>
-<p></p>
+<p> unsigned 8 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint24-le-unchecked"></a><h3>gst_byte_reader_get_uint24_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_get_uint24_le_unchecked
+<a name="gst-byte-reader-get-uint16-be-unchecked"></a><h3>gst_byte_reader_get_uint16_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint16</span>
+gst_byte_reader_get_uint16_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 24 bit integer in little endian format without checking
+<p>Read an unsigned 16 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3969,17 +4012,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.85.6"></a><h4>Returns</h4>
-<p> unsigned 24 bit integer (as guint32)</p>
-<p></p>
+<p> unsigned 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint32-be-unchecked"></a><h3>gst_byte_reader_get_uint32_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_get_uint32_be_unchecked
+<a name="gst-byte-reader-get-uint16-le-unchecked"></a><h3>gst_byte_reader_get_uint16_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint16</span>
+gst_byte_reader_get_uint16_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 32 bit integer in big endian format without checking
+<p>Read an unsigned 16 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -3999,17 +4041,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.86.6"></a><h4>Returns</h4>
-<p> unsigned 32 bit integer.</p>
-<p></p>
+<p> unsigned 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint32-le-unchecked"></a><h3>gst_byte_reader_get_uint32_le_unchecked ()</h3>
+<a name="gst-byte-reader-get-uint24-be-unchecked"></a><h3>gst_byte_reader_get_uint24_be_unchecked ()</h3>
 <pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_get_uint32_le_unchecked
+gst_byte_reader_get_uint24_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 32 bit integer in little endian format without checking
+<p>Read an unsigned 24 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -4029,17 +4070,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.87.6"></a><h4>Returns</h4>
-<p> unsigned 32 bit integer.</p>
-<p></p>
+<p> unsigned 24 bit integer (as guint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint64-be-unchecked"></a><h3>gst_byte_reader_get_uint64_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint64</span>
-gst_byte_reader_get_uint64_be_unchecked
+<a name="gst-byte-reader-get-uint24-le-unchecked"></a><h3>gst_byte_reader_get_uint24_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint32</span>
+gst_byte_reader_get_uint24_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 64 bit integer in big endian format without checking
+<p>Read an unsigned 24 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -4059,17 +4099,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.88.6"></a><h4>Returns</h4>
-<p> unsigned 64 bit integer.</p>
-<p></p>
+<p> unsigned 24 bit integer (as guint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-uint64-le-unchecked"></a><h3>gst_byte_reader_get_uint64_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint64</span>
-gst_byte_reader_get_uint64_le_unchecked
+<a name="gst-byte-reader-get-uint32-be-unchecked"></a><h3>gst_byte_reader_get_uint32_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint32</span>
+gst_byte_reader_get_uint32_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 64 bit integer in little endian format without checking
+<p>Read an unsigned 32 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader and update the
 current position.</p>
 <div class="refsect3">
@@ -4089,17 +4128,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.89.6"></a><h4>Returns</h4>
-<p> unsigned 64 bit integer.</p>
-<p></p>
+<p> unsigned 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int8-unchecked"></a><h3>gst_byte_reader_peek_int8_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint8</span>
-gst_byte_reader_peek_int8_unchecked (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an signed 8 bit integer without checking if there are enough bytes
-available in the byte reader, but do not advance the current read position.</p>
+<a name="gst-byte-reader-get-uint32-le-unchecked"></a><h3>gst_byte_reader_get_uint32_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint32</span>
+gst_byte_reader_get_uint32_le_unchecked
+                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read an unsigned 32 bit integer in little endian format without checking
+if there are enough bytes available in the byte reader and update the
+current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.90.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4117,19 +4157,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.90.6"></a><h4>Returns</h4>
-<p> signed 8 bit integer.</p>
-<p></p>
+<p> unsigned 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int16-be-unchecked"></a><h3>gst_byte_reader_peek_int16_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint16</span>
-gst_byte_reader_peek_int16_be_unchecked
+<a name="gst-byte-reader-get-uint64-be-unchecked"></a><h3>gst_byte_reader_get_uint64_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint64</span>
+gst_byte_reader_get_uint64_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 16 bit integer in big endian format without checking
-if there are enough bytes available in the byte reader, but do not advance
-the current position.</p>
+<p>Read an unsigned 64 bit integer in big endian format without checking
+if there are enough bytes available in the byte reader and update the
+current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.91.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4147,19 +4186,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.91.6"></a><h4>Returns</h4>
-<p> signed 16 bit integer.</p>
-<p></p>
+<p> unsigned 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int16-le-unchecked"></a><h3>gst_byte_reader_peek_int16_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint16</span>
-gst_byte_reader_peek_int16_le_unchecked
+<a name="gst-byte-reader-get-uint64-le-unchecked"></a><h3>gst_byte_reader_get_uint64_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint64</span>
+gst_byte_reader_get_uint64_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 16 bit integer in little endian format without checking
-if there are enough bytes available in the byte reader, but do not advance
-the current position.</p>
+<p>Read an unsigned 64 bit integer in little endian format without checking
+if there are enough bytes available in the byte reader and update the
+current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.92.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4177,19 +4215,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.92.6"></a><h4>Returns</h4>
-<p> signed 16 bit integer.</p>
-<p></p>
+<p> unsigned 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int24-be-unchecked"></a><h3>gst_byte_reader_peek_int24_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_peek_int24_be_unchecked
-                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 24 bit integer in big endian format without checking
-if there are enough bytes available in the byte reader, but do not advance
-the current position.</p>
+<a name="gst-byte-reader-peek-int8-unchecked"></a><h3>gst_byte_reader_peek_int8_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint8</span>
+gst_byte_reader_peek_int8_unchecked (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read an signed 8 bit integer without checking if there are enough bytes
+available in the byte reader, but do not advance the current read position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.93.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4207,17 +4242,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.93.6"></a><h4>Returns</h4>
-<p> signed 24 bit integer (as gint32)</p>
-<p></p>
+<p> signed 8 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int24-le-unchecked"></a><h3>gst_byte_reader_peek_int24_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_peek_int24_le_unchecked
+<a name="gst-byte-reader-peek-int16-be-unchecked"></a><h3>gst_byte_reader_peek_int16_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint16</span>
+gst_byte_reader_peek_int16_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 24 bit integer in little endian format without checking
+<p>Read a signed 16 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4237,17 +4271,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.94.6"></a><h4>Returns</h4>
-<p> signed 24 bit integer (as gint32)</p>
-<p></p>
+<p> signed 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int32-be-unchecked"></a><h3>gst_byte_reader_peek_int32_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_peek_int32_be_unchecked
+<a name="gst-byte-reader-peek-int16-le-unchecked"></a><h3>gst_byte_reader_peek_int16_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint16</span>
+gst_byte_reader_peek_int16_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 32 bit integer in big endian format without checking
+<p>Read a signed 16 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4267,17 +4300,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.95.6"></a><h4>Returns</h4>
-<p> signed 32 bit integer.</p>
-<p></p>
+<p> signed 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int32-le-unchecked"></a><h3>gst_byte_reader_peek_int32_le_unchecked ()</h3>
+<a name="gst-byte-reader-peek-int24-be-unchecked"></a><h3>gst_byte_reader_peek_int24_be_unchecked ()</h3>
 <pre class="programlisting"><span class="returnvalue">gint32</span>
-gst_byte_reader_peek_int32_le_unchecked
+gst_byte_reader_peek_int24_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 32 bit integer in little endian format without checking
+<p>Read a signed 24 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4297,17 +4329,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.96.6"></a><h4>Returns</h4>
-<p> signed 32 bit integer.</p>
-<p></p>
+<p> signed 24 bit integer (as gint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int64-be-unchecked"></a><h3>gst_byte_reader_peek_int64_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint64</span>
-gst_byte_reader_peek_int64_be_unchecked
+<a name="gst-byte-reader-peek-int24-le-unchecked"></a><h3>gst_byte_reader_peek_int24_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint32</span>
+gst_byte_reader_peek_int24_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 64 bit integer in big endian format without checking
+<p>Read a signed 24 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4327,17 +4358,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.97.6"></a><h4>Returns</h4>
-<p> signed 64 bit integer.</p>
-<p></p>
+<p> signed 24 bit integer (as gint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-int64-le-unchecked"></a><h3>gst_byte_reader_peek_int64_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">gint64</span>
-gst_byte_reader_peek_int64_le_unchecked
+<a name="gst-byte-reader-peek-int32-be-unchecked"></a><h3>gst_byte_reader_peek_int32_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint32</span>
+gst_byte_reader_peek_int32_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a signed 64 bit integer in little endian format without checking
+<p>Read a signed 32 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4357,17 +4387,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.98.6"></a><h4>Returns</h4>
-<p> signed 64 bit integer.</p>
-<p></p>
+<p> signed 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint8-unchecked"></a><h3>gst_byte_reader_peek_uint8_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint8</span>
-gst_byte_reader_peek_uint8_unchecked (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 8 bit integer without checking if there are enough bytes
-available in the byte reader, but do not advance the current read position.</p>
+<a name="gst-byte-reader-peek-int32-le-unchecked"></a><h3>gst_byte_reader_peek_int32_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint32</span>
+gst_byte_reader_peek_int32_le_unchecked
+                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read a signed 32 bit integer in little endian format without checking
+if there are enough bytes available in the byte reader, but do not advance
+the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.99.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4385,17 +4416,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.99.6"></a><h4>Returns</h4>
-<p> unsigned 8 bit integer.</p>
-<p></p>
+<p> signed 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint16-be-unchecked"></a><h3>gst_byte_reader_peek_uint16_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint16</span>
-gst_byte_reader_peek_uint16_be_unchecked
+<a name="gst-byte-reader-peek-int64-be-unchecked"></a><h3>gst_byte_reader_peek_int64_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint64</span>
+gst_byte_reader_peek_int64_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 16 bit integer in big endian format without checking
+<p>Read a signed 64 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4415,17 +4445,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.100.6"></a><h4>Returns</h4>
-<p> unsigned 16 bit integer.</p>
-<p></p>
+<p> signed 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint16-le-unchecked"></a><h3>gst_byte_reader_peek_uint16_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint16</span>
-gst_byte_reader_peek_uint16_le_unchecked
+<a name="gst-byte-reader-peek-int64-le-unchecked"></a><h3>gst_byte_reader_peek_int64_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint64</span>
+gst_byte_reader_peek_int64_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 16 bit integer in little endian format without checking
+<p>Read a signed 64 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4445,19 +4474,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.101.6"></a><h4>Returns</h4>
-<p> unsigned 16 bit integer.</p>
-<p></p>
+<p> signed 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint24-be-unchecked"></a><h3>gst_byte_reader_peek_uint24_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_peek_uint24_be_unchecked
-                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 24 bit integer in big endian format without checking
-if there are enough bytes available in the byte reader, but do not advance
-the current position.</p>
+<a name="gst-byte-reader-peek-uint8-unchecked"></a><h3>gst_byte_reader_peek_uint8_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint8</span>
+gst_byte_reader_peek_uint8_unchecked (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read an unsigned 8 bit integer without checking if there are enough bytes
+available in the byte reader, but do not advance the current read position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.102.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4475,17 +4501,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.102.6"></a><h4>Returns</h4>
-<p> unsigned 24 bit integer (as guint32)</p>
-<p></p>
+<p> unsigned 8 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint24-le-unchecked"></a><h3>gst_byte_reader_peek_uint24_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_peek_uint24_le_unchecked
+<a name="gst-byte-reader-peek-uint16-be-unchecked"></a><h3>gst_byte_reader_peek_uint16_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint16</span>
+gst_byte_reader_peek_uint16_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 24 bit integer in little endian format without checking
+<p>Read an unsigned 16 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4505,17 +4530,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.103.6"></a><h4>Returns</h4>
-<p> unsigned 24 bit integer (as guint32)</p>
-<p></p>
+<p> unsigned 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint32-be-unchecked"></a><h3>gst_byte_reader_peek_uint32_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_peek_uint32_be_unchecked
+<a name="gst-byte-reader-peek-uint16-le-unchecked"></a><h3>gst_byte_reader_peek_uint16_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint16</span>
+gst_byte_reader_peek_uint16_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 32 bit integer in big endian format without checking
+<p>Read an unsigned 16 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4535,17 +4559,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.104.6"></a><h4>Returns</h4>
-<p> unsigned 32 bit integer.</p>
-<p></p>
+<p> unsigned 16 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint32-le-unchecked"></a><h3>gst_byte_reader_peek_uint32_le_unchecked ()</h3>
+<a name="gst-byte-reader-peek-uint24-be-unchecked"></a><h3>gst_byte_reader_peek_uint24_be_unchecked ()</h3>
 <pre class="programlisting"><span class="returnvalue">guint32</span>
-gst_byte_reader_peek_uint32_le_unchecked
+gst_byte_reader_peek_uint24_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 32 bit integer in little endian format without checking
+<p>Read an unsigned 24 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4565,17 +4588,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.105.6"></a><h4>Returns</h4>
-<p> unsigned 32 bit integer.</p>
-<p></p>
+<p> unsigned 24 bit integer (as guint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint64-be-unchecked"></a><h3>gst_byte_reader_peek_uint64_be_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint64</span>
-gst_byte_reader_peek_uint64_be_unchecked
+<a name="gst-byte-reader-peek-uint24-le-unchecked"></a><h3>gst_byte_reader_peek_uint24_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint32</span>
+gst_byte_reader_peek_uint24_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 64 bit integer in big endian format without checking
+<p>Read an unsigned 24 bit integer in little endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4595,17 +4617,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.106.6"></a><h4>Returns</h4>
-<p> unsigned 64 bit integer.</p>
-<p></p>
+<p> unsigned 24 bit integer (as guint32)</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-uint64-le-unchecked"></a><h3>gst_byte_reader_peek_uint64_le_unchecked ()</h3>
-<pre class="programlisting"><span class="returnvalue">guint64</span>
-gst_byte_reader_peek_uint64_le_unchecked
+<a name="gst-byte-reader-peek-uint32-be-unchecked"></a><h3>gst_byte_reader_peek_uint32_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint32</span>
+gst_byte_reader_peek_uint32_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read an unsigned 64 bit integer in little endian format without checking
+<p>Read an unsigned 32 bit integer in big endian format without checking
 if there are enough bytes available in the byte reader, but do not advance
 the current position.</p>
 <div class="refsect3">
@@ -4625,18 +4646,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.107.6"></a><h4>Returns</h4>
-<p> unsigned 64 bit integer.</p>
-<p></p>
+<p> unsigned 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float32-le-unchecked"></a><h3>gst_byte_reader_get_float32_le_unchecked ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
-gst_byte_reader_get_float32_le_unchecked
+<a name="gst-byte-reader-peek-uint32-le-unchecked"></a><h3>gst_byte_reader_peek_uint32_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint32</span>
+gst_byte_reader_peek_uint32_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 32 bit little endian float without checking if there is enough
-data available and update the current position.</p>
+<p>Read an unsigned 32 bit integer in little endian format without checking
+if there are enough bytes available in the byte reader, but do not advance
+the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.108.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4654,18 +4675,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.108.6"></a><h4>Returns</h4>
-<p> floating point value read</p>
-<p></p>
+<p> unsigned 32 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float32-be-unchecked"></a><h3>gst_byte_reader_get_float32_be_unchecked ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
-gst_byte_reader_get_float32_be_unchecked
+<a name="gst-byte-reader-peek-uint64-be-unchecked"></a><h3>gst_byte_reader_peek_uint64_be_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint64</span>
+gst_byte_reader_peek_uint64_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 32 bit big endian float without checking if there is enough
-data available and update the current position.</p>
+<p>Read an unsigned 64 bit integer in big endian format without checking
+if there are enough bytes available in the byte reader, but do not advance
+the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.109.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4683,18 +4704,18 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.109.6"></a><h4>Returns</h4>
-<p> floating point value read</p>
-<p></p>
+<p> unsigned 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float64-le-unchecked"></a><h3>gst_byte_reader_get_float64_le_unchecked ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
-gst_byte_reader_get_float64_le_unchecked
+<a name="gst-byte-reader-peek-uint64-le-unchecked"></a><h3>gst_byte_reader_peek_uint64_le_unchecked ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint64</span>
+gst_byte_reader_peek_uint64_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 64 bit little endian float without checking if there is enough
-data available and update the current position.</p>
+<p>Read an unsigned 64 bit integer in little endian format without checking
+if there are enough bytes available in the byte reader, but do not advance
+the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.110.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4712,17 +4733,16 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.110.6"></a><h4>Returns</h4>
-<p> double precision floating point value read</p>
-<p></p>
+<p> unsigned 64 bit integer.</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-get-float64-be-unchecked"></a><h3>gst_byte_reader_get_float64_be_unchecked ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
-gst_byte_reader_get_float64_be_unchecked
+<a name="gst-byte-reader-get-float32-le-unchecked"></a><h3>gst_byte_reader_get_float32_le_unchecked ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
+gst_byte_reader_get_float32_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 64 bit big endian float without checking if there is enough
+<p>Read a 32 bit little endian float without checking if there is enough
 data available and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.111.5"></a><h4>Parameters</h4>
@@ -4741,18 +4761,17 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.111.6"></a><h4>Returns</h4>
-<p> double precision floating point value read</p>
-<p></p>
+<p> floating point value read</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float32-le-unchecked"></a><h3>gst_byte_reader_peek_float32_le_unchecked ()</h3>
+<a name="gst-byte-reader-get-float32-be-unchecked"></a><h3>gst_byte_reader_get_float32_be_unchecked ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
-gst_byte_reader_peek_float32_le_unchecked
+gst_byte_reader_get_float32_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 32 bit little endian float without checking if there is enough
-data available, but keep the current position.</p>
+<p>Read a 32 bit big endian float without checking if there is enough
+data available and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.112.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4771,17 +4790,16 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.112.6"></a><h4>Returns</h4>
 <p> floating point value read</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float32-be-unchecked"></a><h3>gst_byte_reader_peek_float32_be_unchecked ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
-gst_byte_reader_peek_float32_be_unchecked
+<a name="gst-byte-reader-get-float64-le-unchecked"></a><h3>gst_byte_reader_get_float64_le_unchecked ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
+gst_byte_reader_get_float64_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 32 bit big endian float without checking if there is enough
-data available, but keep the current position.</p>
+<p>Read a 64 bit little endian float without checking if there is enough
+data available and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.113.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4799,18 +4817,17 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.113.6"></a><h4>Returns</h4>
-<p> floating point value read</p>
-<p></p>
+<p> double precision floating point value read</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float64-le-unchecked"></a><h3>gst_byte_reader_peek_float64_le_unchecked ()</h3>
+<a name="gst-byte-reader-get-float64-be-unchecked"></a><h3>gst_byte_reader_get_float64_be_unchecked ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
-gst_byte_reader_peek_float64_le_unchecked
+gst_byte_reader_get_float64_be_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 64 bit little endian float without checking if there is enough
-data available, but keep the current position.</p>
+<p>Read a 64 bit big endian float without checking if there is enough
+data available and update the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.114.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -4829,16 +4846,15 @@
 <div class="refsect3">
 <a name="id-1.2.4.10.7.114.6"></a><h4>Returns</h4>
 <p> double precision floating point value read</p>
-<p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-byte-reader-peek-float64-be-unchecked"></a><h3>gst_byte_reader_peek_float64_be_unchecked ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
-gst_byte_reader_peek_float64_be_unchecked
+<a name="gst-byte-reader-peek-float32-le-unchecked"></a><h3>gst_byte_reader_peek_float32_le_unchecked ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
+gst_byte_reader_peek_float32_le_unchecked
                                (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
-<p>Read a 64 bit big endian float without checking if there is enough
+<p>Read a 32 bit little endian float without checking if there is enough
 data available, but keep the current position.</p>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.115.5"></a><h4>Parameters</h4>
@@ -4857,8 +4873,91 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.4.10.7.115.6"></a><h4>Returns</h4>
+<p> floating point value read</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-peek-float32-be-unchecked"></a><h3>gst_byte_reader_peek_float32_be_unchecked ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>
+gst_byte_reader_peek_float32_be_unchecked
+                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read a 32 bit big endian float without checking if there is enough
+data available, but keep the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.116.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.116.6"></a><h4>Returns</h4>
+<p> floating point value read</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-peek-float64-le-unchecked"></a><h3>gst_byte_reader_peek_float64_le_unchecked ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
+gst_byte_reader_peek_float64_le_unchecked
+                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read a 64 bit little endian float without checking if there is enough
+data available, but keep the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.117.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.117.6"></a><h4>Returns</h4>
 <p> double precision floating point value read</p>
-<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-byte-reader-peek-float64-be-unchecked"></a><h3>gst_byte_reader_peek_float64_be_unchecked ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
+gst_byte_reader_peek_float64_be_unchecked
+                               (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
+<p>Read a 64 bit big endian float without checking if there is enough
+data available, but keep the current position.</p>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.118.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>reader</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.10.7.118.6"></a><h4>Returns</h4>
+<p> double precision floating point value read</p>
 </div>
 </div>
 <hr>
@@ -4874,7 +4973,7 @@
  bytes.</p>
 <p>Free-function: g_free</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.116.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.119.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4896,7 +4995,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.116.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.119.7"></a><h4>Returns</h4>
 <p> a newly-allocated copy of the
 data <em class="parameter"><code>size</code></em>
 bytes in size. Free with <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when no longer needed. </p>
@@ -4915,7 +5014,7 @@
 <em class="parameter"><code>size</code></em>
  bytes.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.117.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.120.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4937,7 +5036,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.117.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.120.6"></a><h4>Returns</h4>
 <p> a constant pointer to the
 current data position. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></p>
@@ -4949,7 +5048,7 @@
 <pre class="programlisting">const <span class="returnvalue">guint8</span> *
 gst_byte_reader_peek_data_unchecked (<em class="parameter"><code>const <a class="link" href="gstreamer-libs-GstByteReader.html#GstByteReader" title="GstByteReader"><span class="type">GstByteReader</span></a> *reader</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.118.4"></a><h4>Parameters</h4>
+<a name="id-1.2.4.10.7.121.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -4964,7 +5063,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.10.7.118.5"></a><h4>Returns</h4>
+<a name="id-1.2.4.10.7.121.5"></a><h4>Returns</h4>
 <p> a constant pointer to the current data position. </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>
@@ -5015,7 +5114,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstByteWriter.html b/docs/libs/html/gstreamer-libs-GstByteWriter.html
index dfd4ccb..feb6af7 100644
--- a/docs/libs/html/gstreamer-libs-GstByteWriter.html
+++ b/docs/libs/html/gstreamer-libs-GstByteWriter.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstByteWriter</title>
+<title>GstByteWriter: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">
 <link rel="next" href="GstCollectPads.html" title="GstCollectPads">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -644,8 +644,9 @@
 gst_byte_writer_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Creates a new, empty <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> instance</p>
 <p>Free-function: gst_byte_writer_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.11.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.11.7.2.7"></a><h4>Returns</h4>
 <p> a new, empty <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> instance. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -663,8 +664,9 @@
 read <em class="parameter"><code>size</code></em>
  bytes from the <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> from the beginning.</p>
 <p>Free-function: gst_byte_writer_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.11.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.11.7.3.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -692,7 +694,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.11.7.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.11.7.3.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> instance. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -706,8 +708,9 @@
 <p>Creates a new <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> instance with the given
 initial data size.</p>
 <p>Free-function: gst_byte_writer_free</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.11.7.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.11.7.4.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -729,7 +732,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.11.7.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.11.7.4.8"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> instance. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1034,7 +1037,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.14.5"></a><h4>Returns</h4>
 <p> The current position of the read/write cursor</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1071,7 +1073,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.15.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the new position could be set</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1099,7 +1100,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.16.6"></a><h4>Returns</h4>
 <p> the remaining size of data that can still be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1125,7 +1125,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.17.5"></a><h4>Returns</h4>
 <p> The current, initialized size of the data</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1162,7 +1161,6 @@
 <a name="id-1.2.4.11.7.18.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if at least <em class="parameter"><code>size</code></em>
 bytes are still available</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1230,7 +1228,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.20.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1266,7 +1263,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.21.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1302,7 +1298,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.22.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1338,7 +1333,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.23.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1374,7 +1368,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.24.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1410,7 +1403,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.25.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1446,7 +1438,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.26.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1482,7 +1473,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.27.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1518,7 +1508,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.28.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1554,7 +1543,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.29.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1590,7 +1578,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.30.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1626,7 +1613,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.31.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1662,7 +1648,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.32.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1698,7 +1683,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.33.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1734,7 +1718,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.34.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1770,7 +1753,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.35.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1806,7 +1788,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.36.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1842,7 +1823,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.37.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1878,7 +1858,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.38.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1914,7 +1893,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.39.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1950,7 +1928,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.40.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -1986,7 +1963,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.41.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the string could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2022,7 +1998,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.42.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2058,7 +2033,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.43.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2095,7 +2069,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.44.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2140,7 +2113,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.45.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2184,7 +2156,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.46.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -2234,7 +2205,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.11.7.47.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the data could be written</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -3077,7 +3047,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstCheck.html b/docs/libs/html/gstreamer-libs-GstCheck.html
index 680955d..86e1e9b 100644
--- a/docs/libs/html/gstreamer-libs-GstCheck.html
+++ b/docs/libs/html/gstreamer-libs-GstCheck.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstCheck</title>
+<title>GstCheck: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
 <link rel="prev" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
 <link rel="next" href="gstreamer-libs-GstBufferStraw.html" title="GstBufferStraw">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -397,6 +397,22 @@
 <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-from-template" title="gst_check_setup_src_pad_from_template ()">gst_check_setup_src_pad_from_template</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-libs-GstCheck.html#gst-check-objects-destroyed-on-unref" title="gst_check_objects_destroyed_on_unref ()">gst_check_objects_destroyed_on_unref</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-libs-GstCheck.html#gst-check-object-destroyed-on-unref" title="gst_check_object_destroyed_on_unref ()">gst_check_object_destroyed_on_unref</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -422,9 +438,9 @@
 <a name="gstreamer-libs-GstCheck.description"></a><h2>Description</h2>
 <p>These macros and functions are for internal use of the unit tests found
 inside the 'check' directories of various GStreamer packages.</p>
-<p>One notable feature is that one can use the environment variables GST_CHECK
-and GST_CHECK_IGNORE to select which tests to run or skip. Both variables
-can contain a comman separated list of test name globs (e.g. test_*).</p>
+<p>One notable feature is that one can use the environment variables GST_CHECKS
+and GST_CHECKS_IGNORE to select which tests to run or skip. Both variables
+can contain a comma separated list of test name globs (e.g. test_*).</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-libs-GstCheck.functions_details"></a><h2>Functions</h2>
@@ -679,7 +695,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -712,7 +728,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -745,7 +761,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -778,7 +794,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -982,7 +998,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1016,7 +1032,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1050,7 +1066,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1084,7 +1100,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1141,8 +1157,9 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="returnvalue">GstPad</span></a> *
 gst_check_setup_sink_pad (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *element</code></em>,
                           <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *tmpl</code></em>);</pre>
+<p>Does the same as <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-sink-pad-by-name" title="gst_check_setup_sink_pad_by_name ()"><span class="type">gst_check_setup_sink_pad_by_name</span></a> with the <span class="emphasis"><em> name </em></span> parameter equal to "src".</p>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.34.4"></a><h4>Parameters</h4>
+<a name="id-1.2.7.3.7.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1164,8 +1181,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.34.5"></a><h4>Returns</h4>
-<p> a new pad. </p>
+<a name="id-1.2.7.3.7.34.6"></a><h4>Returns</h4>
+<p> a new pad that can be used to check the output of <em class="parameter"><code>element</code></em>
+. </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>
@@ -1175,8 +1193,9 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="returnvalue">GstPad</span></a> *
 gst_check_setup_src_pad (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *element</code></em>,
                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *tmpl</code></em>);</pre>
+<p>Does the same as <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-by-name" title="gst_check_setup_src_pad_by_name ()"><span class="type">gst_check_setup_src_pad_by_name</span></a> with the <span class="emphasis"><em> name </em></span> parameter equal to "sink".</p>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.35.4"></a><h4>Parameters</h4>
+<a name="id-1.2.7.3.7.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1198,8 +1217,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.35.5"></a><h4>Returns</h4>
-<p> a new pad. </p>
+<a name="id-1.2.7.3.7.35.6"></a><h4>Returns</h4>
+<p> A new pad that can be used to inject data on <em class="parameter"><code>element</code></em>
+. </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>
@@ -1210,8 +1230,15 @@
 gst_check_setup_sink_pad_by_name (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *element</code></em>,
                                   <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *tmpl</code></em>,
                                   <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
+<p>Creates a new sink pad (based on the given <em class="parameter"><code>tmpl</code></em>
+) and links it to the given <em class="parameter"><code>element</code></em>
+ src pad 
+(the pad that matches the given <em class="parameter"><code>name</code></em>
+).
+You can set event/chain/query functions on this pad to check the output of the <em class="parameter"><code>element</code></em>
+.</p>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.36.4"></a><h4>Parameters</h4>
+<a name="id-1.2.7.3.7.36.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1231,15 +1258,17 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p>name</p></td>
+<td class="parameter_description"><p>Name of the <em class="parameter"><code>element</code></em>
+src pad that will be linked to the sink pad that will be setup</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.36.5"></a><h4>Returns</h4>
-<p> a new pad. </p>
+<a name="id-1.2.7.3.7.36.6"></a><h4>Returns</h4>
+<p> a new pad that can be used to check the output of <em class="parameter"><code>element</code></em>
+. </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>
@@ -1250,8 +1279,75 @@
 gst_check_setup_src_pad_by_name (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *element</code></em>,
                                  <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *tmpl</code></em>,
                                  <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
+<p>Creates a new src pad (based on the given <em class="parameter"><code>tmpl</code></em>
+) and links it to the given <em class="parameter"><code>element</code></em>
+ sink pad (the pad that matches the given <em class="parameter"><code>name</code></em>
+).
+Before using the src pad to push data on <em class="parameter"><code>element</code></em>
+ you need to call <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-events" title="gst_check_setup_events ()"><span class="type">gst_check_setup_events</span></a> on the created src pad.</p>
+<p>Example of how to push a buffer on <em class="parameter"><code>element</code></em>
+:</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24</pre></td>
+        <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static</span> GstStaticPadTemplate sinktemplate <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GST-STATIC-PAD-TEMPLATE:CAPS">GST_STATIC_PAD_TEMPLATE</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;sink&quot;</span><span class="gtkdoc opt">,</span>
+GST_PAD_SINK<span class="gtkdoc opt">,</span>
+GST_PAD_ALWAYS<span class="gtkdoc opt">,</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html#GST-STATIC-CAPS">GST_STATIC_CAPS</a></span> <span class="gtkdoc opt">(</span>YOUR_CAPS_TEMPLATE_STRING<span class="gtkdoc opt">)</span>
+<span class="gtkdoc opt">);</span>
+<span class="gtkdoc kwb">static</span> GstStaticPadTemplate srctemplate <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GST-STATIC-PAD-TEMPLATE:CAPS">GST_STATIC_PAD_TEMPLATE</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;src&quot;</span><span class="gtkdoc opt">,</span>
+GST_PAD_SRC<span class="gtkdoc opt">,</span>
+GST_PAD_ALWAYS<span class="gtkdoc opt">,</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html#GST-STATIC-CAPS">GST_STATIC_CAPS</a></span> <span class="gtkdoc opt">(</span>YOUR_CAPS_TEMPLATE_STRING<span class="gtkdoc opt">)</span>
+<span class="gtkdoc opt">);</span>
+
+GstElement <span class="gtkdoc opt">*</span> element <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstCheck.html#gst-check-setup-element">gst_check_setup_element</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;element&quot;</span><span class="gtkdoc opt">);</span>
+GstPad <span class="gtkdoc opt">*</span> mysrcpad <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstCheck.html#gst-check-setup-src-pad">gst_check_setup_src_pad</a></span> <span class="gtkdoc opt">(</span>element<span class="gtkdoc opt">, &amp;</span>srctemplate<span class="gtkdoc opt">);</span>
+GstPad <span class="gtkdoc opt">*</span> mysinkpad <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstCheck.html#gst-check-setup-sink-pad">gst_check_setup_sink_pad</a></span> <span class="gtkdoc opt">(</span>element<span class="gtkdoc opt">, &amp;</span>sinktemplate<span class="gtkdoc opt">);</span>
+
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-set-active">gst_pad_set_active</a></span> <span class="gtkdoc opt">(</span>mysrcpad<span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">);</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-set-active">gst_pad_set_active</a></span> <span class="gtkdoc opt">(</span>mysinkpad<span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">);</span>
+<span class="function">fail_unless</span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-set-state">gst_element_set_state</a></span> <span class="gtkdoc opt">(</span>element<span class="gtkdoc opt">,</span> GST_STATE_PLAYING<span class="gtkdoc opt">) ==</span> GST_STATE_CHANGE_SUCCESS<span class="gtkdoc opt">,</span> <span class="string">&quot;could not set to playing&quot;</span><span class="gtkdoc opt">);</span>
+
+GstCaps <span class="gtkdoc opt">*</span> caps <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html#gst-caps-from-string">gst_caps_from_string</a></span> <span class="gtkdoc opt">(</span>YOUR_DESIRED_SINK_CAPS<span class="gtkdoc opt">);</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstCheck.html#gst-check-setup-events">gst_check_setup_events</a></span> <span class="gtkdoc opt">(</span>mysrcpad<span class="gtkdoc opt">,</span> element<span class="gtkdoc opt">,</span> caps<span class="gtkdoc opt">,</span> GST_FORMAT_TIME<span class="gtkdoc opt">);</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html#gst-caps-unref">gst_caps_unref</a></span> <span class="gtkdoc opt">(</span>caps<span class="gtkdoc opt">);</span>
+
+<span class="function">fail_unless</span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-push">gst_pad_push</a></span> <span class="gtkdoc opt">(</span>mysrcpad<span class="gtkdoc opt">,</span> <span class="function">gst_buffer_new_and_alloc</span><span class="gtkdoc opt">(</span><span class="number">2</span><span class="gtkdoc opt">)) ==</span> GST_FLOW_OK<span class="gtkdoc opt">);</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<p></p>
+<p>For very simple input/output test scenarios checkout <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-element-push-buffer-list" title="gst_check_element_push_buffer_list ()"><span class="type">gst_check_element_push_buffer_list</span></a> and <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-element-push-buffer" title="gst_check_element_push_buffer ()"><span class="type">gst_check_element_push_buffer</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.37.4"></a><h4>Parameters</h4>
+<a name="id-1.2.7.3.7.37.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1261,7 +1357,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>element to setup pad on</p></td>
+<td class="parameter_description"><p>element to setup src pad on</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1271,15 +1367,17 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p>name</p></td>
+<td class="parameter_description"><p>Name of the <em class="parameter"><code>element</code></em>
+sink pad that will be linked to the src pad that will be setup</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.3.7.37.5"></a><h4>Returns</h4>
-<p> a new pad. </p>
+<a name="id-1.2.7.3.7.37.10"></a><h4>Returns</h4>
+<p> A new pad that can be used to inject data on <em class="parameter"><code>element</code></em>
+. </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>
@@ -1650,7 +1748,7 @@
 <p> a new pad. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1686,7 +1784,7 @@
 <p> a new pad. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1728,7 +1826,7 @@
 <p> a new pad. </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.4</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1763,7 +1861,76 @@
 <p> a new pad. </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.4</p>
+<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-check-objects-destroyed-on-unref"></a><h3>gst_check_objects_destroyed_on_unref ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_check_objects_destroyed_on_unref (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> object_to_unref</code></em>,
+                                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> first_object</code></em>,
+                                      <em class="parameter"><code>...</code></em>);</pre>
+<p>Unrefs <em class="parameter"><code>object_to_unref</code></em>
+ and checks that is has properly been
+destroyed, also checks that the other objects passed in
+parametter have been destroyed as a concequence of
+unrefing <em class="parameter"><code>object_to_unref</code></em>
+. Last variable argument should be NULL.</p>
+<div class="refsect3">
+<a name="id-1.2.7.3.7.54.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object_to_unref</p></td>
+<td class="parameter_description"><p>The <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> to unref</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>first_object</p></td>
+<td class="parameter_description"><p> The first object that should be destroyed as a
+concequence of unrefing <em class="parameter"><code>object_to_unref</code></em>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>...</p></td>
+<td class="parameter_description"><p>Additional object that should have been destroyed.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-check-object-destroyed-on-unref"></a><h3>gst_check_object_destroyed_on_unref ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_check_object_destroyed_on_unref (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> object_to_unref</code></em>);</pre>
+<p>Unrefs <em class="parameter"><code>object_to_unref</code></em>
+ and checks that is has properly been
+destroyed.</p>
+<div class="refsect3">
+<a name="id-1.2.7.3.7.55.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>object_to_unref</p></td>
+<td class="parameter_description"><p>The <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> to unref</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -1776,7 +1943,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstDataQueue.html b/docs/libs/html/gstreamer-libs-GstDataQueue.html
index c33b5e3..838e8d7 100644
--- a/docs/libs/html/gstreamer-libs-GstDataQueue.html
+++ b/docs/libs/html/gstreamer-libs-GstDataQueue.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstDataQueue</title>
+<title>GstDataQueue: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-libs-GstTypeFindHelper.html" title="GstTypeFindHelper">
 <link rel="next" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -208,8 +208,9 @@
                                   <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> checkdata</code></em>);</pre>
 <p>The prototype of the function used to inform the queue that it should be
 considered as full.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -246,9 +247,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.2.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the queue should be considered full.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -273,14 +273,15 @@
                     <em class="parameter"><code><a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueueFullCallback" title="GstDataQueueFullCallback ()"><span class="type">GstDataQueueFullCallback</span></a> fullcallback</code></em>,
                     <em class="parameter"><code><a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueueEmptyCallback" title="GstDataQueueEmptyCallback ()"><span class="type">GstDataQueueEmptyCallback</span></a> emptycallback</code></em>,
                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> checkdata</code></em>);</pre>
-<p>Creates a new <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a>. The difference with <em class="parameter"><code>gst_data_queue_new</code></em>
- is that it will
-not emit the 'full' and 'empty' signals, but instead calling directly <em class="parameter"><code>fullcallback</code></em>
-
-or <em class="parameter"><code>emptycallback</code></em>
-.</p>
+<p>Creates a new <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a>. If <em class="parameter"><code>fullcallback</code></em>
+ or <em class="parameter"><code>emptycallback</code></em>
+ are supplied, then
+the <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a> will call the respective callback to signal full or empty condition.
+If the callbacks are NULL the <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a> will instead emit 'full' and 'empty'
+signals.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -317,11 +318,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.5.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a>.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -343,8 +343,9 @@
  if the push was successful. If <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 is returned, the caller is responsible for freeing <em class="parameter"><code>item</code></em>
  and its contents.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.6.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -366,13 +367,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.6.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.6.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>item</code></em>
 was successfully pushed on the <em class="parameter"><code>queue</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -394,8 +394,9 @@
  if the push was successful. If <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 is returned, the caller is responsible for freeing <em class="parameter"><code>item</code></em>
  and its contents.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.7.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -417,13 +418,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.7.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.7.8"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>item</code></em>
 was successfully pushed on the <em class="parameter"><code>queue</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -438,8 +438,9 @@
 <em class="parameter"><code>queue</code></em>
  is set to the flushing state.
 MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -461,13 +462,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.8.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if an <em class="parameter"><code>item</code></em>
 was successfully retrieved from the <em class="parameter"><code>queue</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -482,8 +482,9 @@
 one item is available, OR the <em class="parameter"><code>queue</code></em>
  is set to the flushing state.
 MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -505,13 +506,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.9.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if an <em class="parameter"><code>item</code></em>
 was successfully retrieved from the <em class="parameter"><code>queue</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -522,8 +522,9 @@
 . Any call to <a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-push" title="gst_data_queue_push ()"><span class="type">gst_data_queue_push</span></a> and
 <a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-pop" title="gst_data_queue_pop ()"><span class="type">gst_data_queue_pop</span></a> will be released.
 MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -537,7 +538,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -554,8 +555,9 @@
  is in flushing state, 
 all calls to those two functions will return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p>MT Safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.11.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.11.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -576,7 +578,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -585,8 +587,9 @@
 gst_data_queue_drop_head (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a> *queue</code></em>,
                           <em class="parameter"><code><a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> type</code></em>);</pre>
 <p>Pop and unref the head-most <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMiniObject.html#GstMiniObject"><span class="type">GstMiniObject</span></a> with the given <a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a>.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.12.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -608,11 +611,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.12.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.12.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if an element was removed.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -624,8 +626,9 @@
 <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueueCheckFullFunction" title="GstDataQueueCheckFullFunction ()"><span class="type">GstDataQueueCheckFullFunction</span></a> registered with <em class="parameter"><code>queue</code></em>
 .
 MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.13.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -640,12 +643,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.13.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>queue</code></em>
 is full.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -655,8 +657,9 @@
 <p>Queries if there are any items in the <em class="parameter"><code>queue</code></em>
 .
 MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.14.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -671,12 +674,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.15.7.14.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>queue</code></em>
 is empty.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -685,8 +687,9 @@
 gst_data_queue_get_level (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a> *queue</code></em>,
                           <em class="parameter"><code><a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueueSize" title="struct GstDataQueueSize"><span class="type">GstDataQueueSize</span></a> *level</code></em>);</pre>
 <p>Get the current level of the queue.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.15.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -707,7 +710,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -716,8 +719,9 @@
 gst_data_queue_limits_changed (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue"><span class="type">GstDataQueue</span></a> *queue</code></em>);</pre>
 <p>Inform the queue that the limits for the fullness check have changed and that
 any blocking <a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-push" title="gst_data_queue_push ()"><code class="function">gst_data_queue_push()</code></a> should be unblocked to recheck the limits.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.15.7.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.15.7.16.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -731,7 +735,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -858,7 +862,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstFlowCombiner.html b/docs/libs/html/gstreamer-libs-GstFlowCombiner.html
index 47c320b..e318b98 100644
--- a/docs/libs/html/gstreamer-libs-GstFlowCombiner.html
+++ b/docs/libs/html/gstreamer-libs-GstFlowCombiner.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstFlowCombiner</title>
+<title>GstFlowCombiner: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="GstCollectPads.html" title="GstCollectPads">
 <link rel="next" href="gstreamer-libs-GstTypeFindHelper.html" title="GstTypeFindHelper">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -41,7 +41,7 @@
 <tbody>
 <tr>
 <td class="function_type">
-<span class="returnvalue">GstFlowCombiner</span> *
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="returnvalue">GstFlowCombiner</span></a> *
 </td>
 <td class="function_name">
 <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-new" title="gst_flow_combiner_new ()">gst_flow_combiner_new</a> <span class="c_punctuation">()</span>
@@ -79,10 +79,31 @@
 <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-remove-pad" title="gst_flow_combiner_remove_pad ()">gst_flow_combiner_remove_pad</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-libs-GstFlowCombiner.html#gst-flow-combiner-clear" title="gst_flow_combiner_clear ()">gst_flow_combiner_clear</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect1">
+<a name="gstreamer-libs-GstFlowCombiner.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner">GstFlowCombiner</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
 <a name="gstreamer-libs-GstFlowCombiner.includes"></a><h2>Includes</h2>
 <pre class="synopsis">#include &lt;gst/base/gstflowcombiner.h&gt;
 </pre>
@@ -92,53 +113,50 @@
 <p>Utility struct to help handling <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> combination. Useful for
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>s that have multiple source pads and need to combine
 the different <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> for those pads.</p>
-<p><span class="type">GstFlowCombiner</span> works by using the last <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> for all <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>
+<p><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> works by using the last <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> for all <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>
 it has in its list and computes the combined return value and provides
 it to the caller.</p>
-<p>To add a new pad to the <span class="type">GstFlowCombiner</span> use <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-add-pad" title="gst_flow_combiner_add_pad ()"><code class="function">gst_flow_combiner_add_pad()</code></a>.
-The new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> is stored with a default value of <code class="literal">GST_FLOW_OK</code>.</p>
+<p>To add a new pad to the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> use <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-add-pad" title="gst_flow_combiner_add_pad ()"><code class="function">gst_flow_combiner_add_pad()</code></a>.
+The new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> is stored with a default value of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a>.</p>
 <p>In case you want a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> to be removed, use <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-remove-pad" title="gst_flow_combiner_remove_pad ()"><code class="function">gst_flow_combiner_remove_pad()</code></a>.</p>
 <p>Please be aware that this struct isn't thread safe as its designed to be
  used by demuxers, those usually will have a single thread operating it.</p>
-<p>None of these functions will take refs on the passed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>s, it
-is the caller's responsibility to make sure that the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> exists as long
-as this struct exists.</p>
+<p>These functions will take refs on the passed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>s.</p>
 <p>Aside from reducing the user's code size, the main advantage of using this
 helper struct is to follow the standard rules for <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> combination.
 These rules are:</p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p><code class="literal">GST_FLOW_EOS</code>: only if all returns are EOS too</p></li>
-<li class="listitem"><p><code class="literal">GST_FLOW_NOT_LINKED</code>: only if all returns are NOT_LINKED too</p></li>
-<li class="listitem"><p><code class="literal">GST_FLOW_ERROR</code> or below: if at least one returns an error return</p></li>
-<li class="listitem"><p><code class="literal">GST_FLOW_NOT_NEGOTIATED</code>: if at least one returns a not-negotiated return</p></li>
-<li class="listitem"><p><code class="literal">GST_FLOW_FLUSHING</code>: if at least one returns flushing</p></li>
-<li class="listitem"><p><code class="literal">GST_FLOW_OK</code>: otherwise</p></li>
+<li class="listitem"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-EOS:CAPS"><code class="literal">GST_FLOW_EOS</code></a>: only if all returns are EOS too</p></li>
+<li class="listitem"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-NOT-LINKED:CAPS"><code class="literal">GST_FLOW_NOT_LINKED</code></a>: only if all returns are NOT_LINKED too</p></li>
+<li class="listitem"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-ERROR:CAPS"><code class="literal">GST_FLOW_ERROR</code></a> or below: if at least one returns an error return</p></li>
+<li class="listitem"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-NOT-NEGOTIATED:CAPS"><code class="literal">GST_FLOW_NOT_NEGOTIATED</code></a>: if at least one returns a not-negotiated return</p></li>
+<li class="listitem"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-FLUSHING:CAPS"><code class="literal">GST_FLOW_FLUSHING</code></a>: if at least one returns flushing</p></li>
+<li class="listitem"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a>: otherwise</p></li>
 </ul></div>
-<p><code class="literal">GST_FLOW_ERROR</code> or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are
+<p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-ERROR:CAPS"><code class="literal">GST_FLOW_ERROR</code></a> or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are
 returned immediatelly from the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-update-flow" title="gst_flow_combiner_update_flow ()"><code class="function">gst_flow_combiner_update_flow()</code></a> function.</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-libs-GstFlowCombiner.functions_details"></a><h2>Functions</h2>
 <div class="refsect2">
 <a name="gst-flow-combiner-new"></a><h3>gst_flow_combiner_new ()</h3>
-<pre class="programlisting"><span class="returnvalue">GstFlowCombiner</span> *
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="returnvalue">GstFlowCombiner</span></a> *
 gst_flow_combiner_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Creates a new <span class="type">GstFlowCombiner</span>, use <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-free" title="gst_flow_combiner_free ()"><code class="function">gst_flow_combiner_free()</code></a> to free it.</p>
+<p>Creates a new <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a>, use <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-free" title="gst_flow_combiner_free ()"><code class="function">gst_flow_combiner_free()</code></a> to free it.</p>
 <div class="refsect3">
-<a name="id-1.2.4.13.6.2.5"></a><h4>Returns</h4>
-<p> A new <span class="type">GstFlowCombiner</span></p>
-<p></p>
+<a name="id-1.2.4.13.7.2.5"></a><h4>Returns</h4>
+<p> A new <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a></p>
 </div>
-<p class="since">Since 1.4</p>
+<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-flow-combiner-free"></a><h3>gst_flow_combiner_free ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_flow_combiner_free (<em class="parameter"><code><span class="type">GstFlowCombiner</span> *combiner</code></em>);</pre>
-<p>Frees a <span class="type">GstFlowCombiner</span> struct and all its internal data.</p>
+gst_flow_combiner_free (<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>Frees a <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> struct and all its internal data.</p>
 <div class="refsect3">
-<a name="id-1.2.4.13.6.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.13.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -147,26 +165,26 @@
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>combiner</p></td>
-<td class="parameter_description"><p>the <span class="type">GstFlowCombiner</span> to free</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> to free</p></td>
 <td class="parameter_annotations"> </td>
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<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-flow-combiner-update-flow"></a><h3>gst_flow_combiner_update_flow ()</h3>
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
-gst_flow_combiner_update_flow (<em class="parameter"><code><span class="type">GstFlowCombiner</span> *combiner</code></em>,
+gst_flow_combiner_update_flow (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> *combiner</code></em>,
                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> fret</code></em>);</pre>
 <p>Computes the combined flow return for the pads in it.</p>
-<p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> paramter should be the last flow return update for a pad
-in this <span class="type">GstFlowCombiner</span>. It will use this value to be able to shortcut some
+<p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> parameter should be the last flow return update for a pad
+in this <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a>. It will use this value to be able to shortcut some
 combinations and avoid looking over all pads again. e.g. The last combined
 return is the same as the latest obtained <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.4.13.6.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.13.7.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -176,33 +194,32 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>combiner</p></td>
-<td class="parameter_description"><p>the <span class="type">GstFlowCombiner</span></p></td>
+<td class="parameter_description"><p>the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>fret</p></td>
-<td class="parameter_description"><p>the latest <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> received for a pad in this <span class="type">GstFlowCombiner</span></p></td>
+<td class="parameter_description"><p>the latest <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> received for a pad in this <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.13.6.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.13.7.4.7"></a><h4>Returns</h4>
 <p> The combined <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a></p>
-<p></p>
 </div>
-<p class="since">Since 1.4</p>
+<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-flow-combiner-add-pad"></a><h3>gst_flow_combiner_add_pad ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_flow_combiner_add_pad (<em class="parameter"><code><span class="type">GstFlowCombiner</span> *combiner</code></em>,
+gst_flow_combiner_add_pad (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> *combiner</code></em>,
                            <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *pad</code></em>);</pre>
-<p>Adds a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> to the <span class="type">GstFlowCombiner</span>.</p>
+<p>Adds a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> to the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.4.13.6.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.13.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -212,7 +229,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>combiner</p></td>
-<td class="parameter_description"><p>the <span class="type">GstFlowCombiner</span></p></td>
+<td class="parameter_description"><p>the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -223,17 +240,17 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<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-flow-combiner-remove-pad"></a><h3>gst_flow_combiner_remove_pad ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_flow_combiner_remove_pad (<em class="parameter"><code><span class="type">GstFlowCombiner</span> *combiner</code></em>,
+gst_flow_combiner_remove_pad (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> *combiner</code></em>,
                               <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *pad</code></em>);</pre>
-<p>Removes a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> from the <span class="type">GstFlowCombiner</span>.</p>
+<p>Removes a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> from the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.4.13.6.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.13.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -243,7 +260,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>combiner</p></td>
-<td class="parameter_description"><p>the <span class="type">GstFlowCombiner</span></p></td>
+<td class="parameter_description"><p>the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -254,15 +271,43 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.4</p>
+<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-flow-combiner-clear"></a><h3>gst_flow_combiner_clear ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_flow_combiner_clear (<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>
+<div class="refsect3">
+<a name="id-1.2.4.13.7.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>combiner</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> to clear</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-libs-GstFlowCombiner.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstFlowCombiner"></a><h3>GstFlowCombiner</h3>
+<pre class="programlisting">typedef struct _GstFlowCombiner GstFlowCombiner;</pre>
+<p>Opaque helper structure to aggregate flow returns.</p>
+<p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
+</div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstHarness.html b/docs/libs/html/gstreamer-libs-GstHarness.html
new file mode 100644
index 0000000..976d1ab
--- /dev/null
+++ b/docs/libs/html/gstreamer-libs-GstHarness.html
@@ -0,0 +1,3781 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstHarness: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
+<link rel="prev" href="gstreamer-libs-GstStreamConsistency.html" title="GstStreamConsistency">
+<link rel="next" href="GstTestClock.html" title="GstTestClock">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-libs-GstHarness.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="gstreamer-check.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gstreamer-libs-GstStreamConsistency.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="GstTestClock.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-libs-GstHarness"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-libs-GstHarness.top_of_page"></a>GstHarness</span></h2>
+<p>GstHarness — A test-harness for writing GStreamer unit tests</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table 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-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-full" title="gst_harness_new_full ()">gst_harness_new_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-element" title="gst_harness_new_with_element ()">gst_harness_new_with_element</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-padnames" title="gst_harness_new_with_padnames ()">gst_harness_new_with_padnames</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-templates" title="gst_harness_new_with_templates ()">gst_harness_new_with_templates</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new" title="gst_harness_new ()">gst_harness_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-parse" title="gst_harness_new_parse ()">gst_harness_new_parse</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-libs-GstHarness.html#gst-harness-teardown" title="gst_harness_teardown ()">gst_harness_teardown</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-libs-GstHarness.html#gst-harness-add-element-src-pad" title="gst_harness_add_element_src_pad ()">gst_harness_add_element_src_pad</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-libs-GstHarness.html#gst-harness-add-element-sink-pad" title="gst_harness_add_element_sink_pad ()">gst_harness_add_element_sink_pad</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-libs-GstHarness.html#gst-harness-set-src-caps" title="gst_harness_set_src_caps ()">gst_harness_set_src_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-libs-GstHarness.html#gst-harness-set-sink-caps" title="gst_harness_set_sink_caps ()">gst_harness_set_sink_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-libs-GstHarness.html#gst-harness-set-caps" title="gst_harness_set_caps ()">gst_harness_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-libs-GstHarness.html#gst-harness-set-src-caps-str" title="gst_harness_set_src_caps_str ()">gst_harness_set_src_caps_str</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-libs-GstHarness.html#gst-harness-set-sink-caps-str" title="gst_harness_set_sink_caps_str ()">gst_harness_set_sink_caps_str</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-libs-GstHarness.html#gst-harness-set-caps-str" title="gst_harness_set_caps_str ()">gst_harness_set_caps_str</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-libs-GstHarness.html#gst-harness-use-systemclock" title="gst_harness_use_systemclock ()">gst_harness_use_systemclock</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-libs-GstHarness.html#gst-harness-use-testclock" title="gst_harness_use_testclock ()">gst_harness_use_testclock</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstTestClock.html" title="GstTestClock"><span class="returnvalue">GstTestClock</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-testclock" title="gst_harness_get_testclock ()">gst_harness_get_testclock</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-time" title="gst_harness_set_time ()">gst_harness_set_time</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-wait-for-clock-id-waits" title="gst_harness_wait_for_clock_id_waits ()">gst_harness_wait_for_clock_id_waits</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-crank-single-clock-wait" title="gst_harness_crank_single_clock_wait ()">gst_harness_crank_single_clock_wait</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-crank-multiple-clock-waits" title="gst_harness_crank_multiple_clock_waits ()">gst_harness_crank_multiple_clock_waits</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-libs-GstHarness.html#gst-harness-play" title="gst_harness_play ()">gst_harness_play</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-libs-GstHarness.html#gst-harness-set-blocking-push-mode" title="gst_harness_set_blocking_push_mode ()">gst_harness_set_blocking_push_mode</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-forwarding" title="gst_harness_set_forwarding ()">gst_harness_set_forwarding</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-create-buffer" title="gst_harness_create_buffer ()">gst_harness_create_buffer</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push" title="gst_harness_push ()">gst_harness_push</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull" title="gst_harness_pull ()">gst_harness_pull</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull" title="gst_harness_try_pull ()">gst_harness_try_pull</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-and-pull" title="gst_harness_push_and_pull ()">gst_harness_push_and_pull</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-buffers-received" title="gst_harness_buffers_received ()">gst_harness_buffers_received</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-buffers-in-queue" title="gst_harness_buffers_in_queue ()">gst_harness_buffers_in_queue</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-libs-GstHarness.html#gst-harness-set-drop-buffers" title="gst_harness_set_drop_buffers ()">gst_harness_set_drop_buffers</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-libs-GstHarness.html#gst-harness-dump-to-file" title="gst_harness_dump_to_file ()">gst_harness_dump_to_file</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-last-pushed-timestamp" title="gst_harness_get_last_pushed_timestamp ()">gst_harness_get_last_pushed_timestamp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-event" title="gst_harness_push_event ()">gst_harness_push_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull-event" title="gst_harness_pull_event ()">gst_harness_pull_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull-event" title="gst_harness_try_pull_event ()">gst_harness_try_pull_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-events-received" title="gst_harness_events_received ()">gst_harness_events_received</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-events-in-queue" title="gst_harness_events_in_queue ()">gst_harness_events_in_queue</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-upstream-event" title="gst_harness_push_upstream_event ()">gst_harness_push_upstream_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull-upstream-event" title="gst_harness_pull_upstream_event ()">gst_harness_pull_upstream_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull-upstream-event" title="gst_harness_try_pull_upstream_event ()">gst_harness_try_pull_upstream_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-received" title="gst_harness_upstream_events_received ()">gst_harness_upstream_events_received</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-in-queue" title="gst_harness_upstream_events_in_queue ()">gst_harness_upstream_events_in_queue</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-query-latency" title="gst_harness_query_latency ()">gst_harness_query_latency</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-libs-GstHarness.html#gst-harness-set-upstream-latency" title="gst_harness_set_upstream_latency ()">gst_harness_set_upstream_latency</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-libs-GstHarness.html#gst-harness-set-propose-allocator" title="gst_harness_set_propose_allocator ()">gst_harness_set_propose_allocator</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-libs-GstHarness.html#gst-harness-get-allocator" title="gst_harness_get_allocator ()">gst_harness_get_allocator</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-libs-GstHarness.html#gst-harness-add-src" title="gst_harness_add_src ()">gst_harness_add_src</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-libs-GstHarness.html#gst-harness-add-src-harness" title="gst_harness_add_src_harness ()">gst_harness_add_src_harness</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-libs-GstHarness.html#gst-harness-add-src-parse" title="gst_harness_add_src_parse ()">gst_harness_add_src_parse</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-from-src" title="gst_harness_push_from_src ()">gst_harness_push_from_src</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-src-crank-and-push-many" title="gst_harness_src_crank_and_push_many ()">gst_harness_src_crank_and_push_many</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-src-push-event" title="gst_harness_src_push_event ()">gst_harness_src_push_event</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-libs-GstHarness.html#gst-harness-add-sink" title="gst_harness_add_sink ()">gst_harness_add_sink</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-libs-GstHarness.html#gst-harness-add-sink-harness" title="gst_harness_add_sink_harness ()">gst_harness_add_sink_harness</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-libs-GstHarness.html#gst-harness-add-sink-parse" title="gst_harness_add_sink_parse ()">gst_harness_add_sink_parse</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-to-sink" title="gst_harness_push_to_sink ()">gst_harness_push_to_sink</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-sink-push-many" title="gst_harness_sink_push_many ()">gst_harness_sink_push_many</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-find-element" title="gst_harness_find_element ()">gst_harness_find_element</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-libs-GstHarness.html#gst-harness-set" title="gst_harness_set ()">gst_harness_set</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-libs-GstHarness.html#gst-harness-get" title="gst_harness_get ()">gst_harness_get</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-libs-GstHarness.html#gst-harness-add-probe" title="gst_harness_add_probe ()">gst_harness_add_probe</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-thread-stop" title="gst_harness_stress_thread_stop ()">gst_harness_stress_thread_stop</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-custom-start" title="gst_harness_stress_custom_start ()">gst_harness_stress_custom_start</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start" title="gst_harness_stress_statechange_start()">gst_harness_stress_statechange_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start-full" title="gst_harness_stress_statechange_start_full ()">gst_harness_stress_statechange_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start" title="gst_harness_stress_push_buffer_start()">gst_harness_stress_push_buffer_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start-full" title="gst_harness_stress_push_buffer_start_full ()">gst_harness_stress_push_buffer_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" title="GstHarnessPrepareBufferFunc ()">*GstHarnessPrepareBufferFunc</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start" title="gst_harness_stress_push_buffer_with_cb_start()">gst_harness_stress_push_buffer_with_cb_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start-full" title="gst_harness_stress_push_buffer_with_cb_start_full ()">gst_harness_stress_push_buffer_with_cb_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start" title="gst_harness_stress_push_event_start()">gst_harness_stress_push_event_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start-full" title="gst_harness_stress_push_event_start_full ()">gst_harness_stress_push_event_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-send-upstream-event-start" title="gst_harness_stress_send_upstream_event_start()">gst_harness_stress_send_upstream_event_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-upstream-event-start-full" title="gst_harness_stress_push_upstream_event_start_full ()">gst_harness_stress_push_upstream_event_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start" title="gst_harness_stress_property_start()">gst_harness_stress_property_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start-full" title="gst_harness_stress_property_start_full ()">gst_harness_stress_property_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start" title="gst_harness_stress_requestpad_start()">gst_harness_stress_requestpad_start</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start-full" title="gst_harness_stress_requestpad_start_full ()">gst_harness_stress_requestpad_start_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness">GstHarness</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread">GstHarnessThread</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/check/check.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.description"></a><h2>Description</h2>
+<p><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> is ment to make writing unit test for GStreamer much easier.
+It can be though of as a way of treating a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> as a black box,
+deterministially feeding it data, and controlling what data it outputs.</p>
+<p>The basic structure of <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> is two "floating" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPads</span></a>, that connects
+to the harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> src and sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPads</span></a> like so:</p>
+<pre class="programlisting">
+          __________________________
+ _____   |  _____            _____  |   _____
+|     |  | |     |          |     | |  |     |
+| src |--+-| sink|  Element | src |-+--| sink|
+|_____|  | |_____|          |_____| |  |_____|
+         |__________________________|
+
+</pre>
+<p>With this, you can now simulate any environment the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> might find
+itself in. By specifying the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> of the harness <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPads</span></a>, using
+functions like gst_harness_set_src_caps or gst_harness_set_sink_caps_str,
+you can test how the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> interacts with different capssets.</p>
+<p>Your harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> can of course also be a bin, and using
+gst_harness_new_parse supporting standard gst-launch syntax, you can
+easily test a whole pipeline instead of just one element.</p>
+<p>You can then go on to push <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffers</span></a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvents</span></a> on to the srcpad,
+using functions like gst_harness_push and gst_harness_push_event, and
+then pull them out to examine them with gst_harness_pull and
+gst_harness_pull_event.</p>
+<div class="example">
+<a name="id-1.2.7.6.6.8"></a><p class="title"><b>Example 1. A simple buffer-in buffer-out example</b></p>
+<div class="example-contents">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27</pre></td>
+        <td class="listing_code"><pre class="programlisting"><span class="gtkdoc ppc">#include &lt;gst/gst.h&gt;</span>
+<span class="gtkdoc ppc">#include &lt;gst/check/gstharness.h&gt;</span>
+GstHarness <span class="gtkdoc opt">*</span>h<span class="gtkdoc opt">;</span>
+GstBuffer <span class="gtkdoc opt">*</span>in_buf<span class="gtkdoc opt">;</span>
+GstBuffer <span class="gtkdoc opt">*</span>out_buf<span class="gtkdoc opt">;</span>
+
+<span class="gtkdoc slc">// attach the harness to the src and sink pad of GstQueue</span>
+h <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-new">gst_harness_new</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;queue&quot;</span><span class="gtkdoc opt">);</span>
+
+<span class="gtkdoc slc">// we must specify a caps before pushing buffers</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-set-src-caps-str">gst_harness_set_src_caps_str</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">,</span> <span class="string">&quot;mycaps&quot;</span><span class="gtkdoc opt">);</span>
+
+<span class="gtkdoc slc">// create a buffer of size 42</span>
+in_buf <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-create-buffer">gst_harness_create_buffer</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">,</span> <span class="number">42</span><span class="gtkdoc opt">);</span>
+
+<span class="gtkdoc slc">// push the buffer into the queue</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-push">gst_harness_push</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">,</span> in_buf<span class="gtkdoc opt">);</span>
+
+<span class="gtkdoc slc">// pull the buffer from the queue</span>
+out_buf <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-pull">gst_harness_pull</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">);</span>
+
+<span class="gtkdoc slc">// validate the buffer in is the same as buffer out</span>
+<span class="function">fail_unless</span> <span class="gtkdoc opt">(</span>in_buf <span class="gtkdoc opt">==</span> out_buf<span class="gtkdoc opt">);</span>
+
+<span class="gtkdoc slc">// cleanup</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-unref">gst_buffer_unref</a></span> <span class="gtkdoc opt">(</span>out_buf<span class="gtkdoc opt">);</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-teardown">gst_harness_teardown</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">);</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<br class="example-break"><p>Another main feature of the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> is its integration with the
+<a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>. Operating the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> can be very challenging, but
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> simplifies some of the most desired actions a lot, like wanting
+to manually advance the clock while at the same time releasing a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a>
+that is waiting, with functions like gst_harness_crank_single_clock_wait.</p>
+<p><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> also supports sub-harnesses, as a way of generating and
+validating data. A sub-harness is another <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> that is managed by
+the "parent" harness, and can either be created by using the standard
+gst_harness_new type functions directly on the (GstHarness *)-&gt;src_harness,
+or using the much more convenient gst_harness_add_src or
+gst_harness_add_sink_parse. If you have a decoder-element you want to test,
+(like vp8dec) it can be very useful to add a src-harness with both a
+src-element (videotestsrc) and an encoder (vp8enc) to feed the decoder data
+with different configurations, by simply doing:</p>
+<div class="example">
+<a name="id-1.2.7.6.6.11"></a><p class="title"><b>Example 2. </b></p>
+<div class="example-contents">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">GstHarness <span class="gtkdoc opt">*</span> h <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-new">gst_harness_new</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">,</span> <span class="string">&quot;vp8dec&quot;</span><span class="gtkdoc opt">);</span>
+<span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-add-src-parse">gst_harness_add_src_parse</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">,</span> <span class="string">&quot;videotestsrc is-live=1 ! vp8enc&quot;</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">);</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<br class="example-break"><p>and then feeding it data with:</p>
+<div class="example">
+<a name="id-1.2.7.6.6.13"></a><p class="title"><b>Example 3. </b></p>
+<div class="example-contents">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting"><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstHarness.html#gst-harness-push-from-src">gst_harness_push_from_src</a></span> <span class="gtkdoc opt">(</span>h<span class="gtkdoc opt">);</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-harness-new-full"></a><h3>gst_harness_new_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+gst_harness_new_full (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *element</code></em>,
+                      <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *hsrc</code></em>,
+                      <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_sinkpad_name</code></em>,
+                      <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *hsink</code></em>,
+                      <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_srcpad_name</code></em>);</pre>
+<p>Creates a new harness.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.2.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> to attach the harness to (transfer none)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>hsrc</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> describing the harness srcpad.
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will not create a harness srcpad. </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>element_sinkpad_name</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the element
+sinkpad that is then linked to the harness srcpad. Can be a static or request
+or a sometimes pad that has been added. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will not get/request a sinkpad
+from the element. (Like if the element is a src.). </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>hsink</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> describing the harness sinkpad.
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will not create a harness sinkpad. </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>element_srcpad_name</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the element
+srcpad that is then linked to the harness sinkpad, similar to the
+<em class="parameter"><code>element_sinkpad_name</code></em>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.2.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the harness could
+not be created. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-new-with-element"></a><h3>gst_harness_new_with_element ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+gst_harness_new_with_element (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *element</code></em>,
+                              <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_sinkpad_name</code></em>,
+                              <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_srcpad_name</code></em>);</pre>
+<p>Creates a new harness. Works in the same way as gst_harness_new_full, only
+that generic padtemplates are used for the harness src and sinkpads, which
+will be sufficient in most usecases.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.3.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> to attach the harness to (transfer none)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element_sinkpad_name</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the element
+sinkpad that is then linked to the harness srcpad. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> does not attach a
+sinkpad. </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>element_srcpad_name</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the element
+srcpad that is then linked to the harness sinkpad. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> does not attach a
+srcpad. </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="id-1.2.7.6.7.3.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the harness could
+not be created. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-new-with-padnames"></a><h3>gst_harness_new_with_padnames ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+gst_harness_new_with_padnames (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>,
+                               <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_sinkpad_name</code></em>,
+                               <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_srcpad_name</code></em>);</pre>
+<p>Creates a new harness. Works in the same way as gst_harness_new_with_element,
+except you specify the factoryname of the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.4.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> describing the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element_sinkpad_name</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the element
+sinkpad that is then linked to the harness srcpad. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> does not attach a
+sinkpad. </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>element_srcpad_name</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the element
+srcpad that is then linked to the harness sinkpad. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> does not attach a
+srcpad. </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="id-1.2.7.6.7.4.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the harness could
+not be created. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-new-with-templates"></a><h3>gst_harness_new_with_templates ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+gst_harness_new_with_templates (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>,
+                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *hsrc</code></em>,
+                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> *hsink</code></em>);</pre>
+<p>Creates a new harness, like gst_harness_new_full, except it
+assumes the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> sinkpad is named "sink" and srcpad is named "src"</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.5.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> describing the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>hsrc</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> describing the harness srcpad.
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will not create a harness srcpad. </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>hsink</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate"><span class="type">GstStaticPadTemplate</span></a> describing the harness sinkpad.
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will not create a harness sinkpad. </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="id-1.2.7.6.7.5.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the harness could
+not be created. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-new"></a><h3>gst_harness_new ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+gst_harness_new (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>);</pre>
+<p>Creates a new harness. Works like gst_harness_new_with_padnames, except it
+assumes the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> sinkpad is named "sink" and srcpad is named "src"</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.6.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> describing the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.6.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the harness could
+not be created. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-new-parse"></a><h3>gst_harness_new_parse ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="returnvalue">GstHarness</span></a> *
+gst_harness_new_parse (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *launchline</code></em>);</pre>
+<p>Creates a new harness, parsing the <em class="parameter"><code>launchline</code></em>
+ and putting that in a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBin.html"><span class="type">GstBin</span></a>,
+and then attches the harness to the bin.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.7.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>launchline</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> describing a gst-launch type line</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.7.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the harness could
+not be created. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-teardown"></a><h3>gst_harness_teardown ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_teardown (<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>);</pre>
+<p>Tears down a <em class="parameter"><code>GstHarness</code></em>
+, freeing all resources allocated using it.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.8.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-harness-add-element-src-pad"></a><h3>gst_harness_add_element_src_pad ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_element_src_pad (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *srcpad</code></em>);</pre>
+<p>Links the specifed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> the <em class="parameter"><code>GstHarness</code></em>
+ sinkpad. This can be useful if
+perhaps the srcpad did not exist at the time of creating the harness,
+like a demuxer that provides a sometimes-pad after receiving data.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.9.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>srcpad</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> to link to the harness sinkpad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-add-element-sink-pad"></a><h3>gst_harness_add_element_sink_pad ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_element_sink_pad (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *sinkpad</code></em>);</pre>
+<p>Links the specifed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> the <em class="parameter"><code>GstHarness</code></em>
+ srcpad.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.10.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sinkpad</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> to link to the harness srcpad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-set-src-caps"></a><h3>gst_harness_set_src_caps ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_src_caps (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>GstHarness</code></em>
+ srcpad caps. This must be done before any buffers
+can legally be pushed from the harness to the element.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.11.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness srcpad. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-set-sink-caps"></a><h3>gst_harness_set_sink_caps ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_sink_caps (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>GstHarness</code></em>
+ sinkpad caps.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.12.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness sinkpad. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-set-caps"></a><h3>gst_harness_set_caps ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_caps (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *in</code></em>,
+                      <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *out</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>GstHarness</code></em>
+ srcpad and sinkpad caps.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.13.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>in</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness srcpad. </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>
+<tr>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness sinkpad. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-set-src-caps-str"></a><h3>gst_harness_set_src_caps_str ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_src_caps_str (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *str</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>GstHarness</code></em>
+ srcpad caps using a string. This must be done before
+any buffers can legally be pushed from the harness to the element.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.14.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>a <em class="parameter"><code>gchar</code></em>
+describing a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness srcpad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-set-sink-caps-str"></a><h3>gst_harness_set_sink_caps_str ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_sink_caps_str (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *str</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>GstHarness</code></em>
+ sinkpad caps using a string.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.15.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>a <em class="parameter"><code>gchar</code></em>
+describing a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness sinkpad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-set-caps-str"></a><h3>gst_harness_set_caps_str ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_caps_str (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *in</code></em>,
+                          <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *out</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>GstHarness</code></em>
+ srcpad and sinkpad caps using strings.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.16.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>in</p></td>
+<td class="parameter_description"><p>a <em class="parameter"><code>gchar</code></em>
+describing a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness srcpad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>a <em class="parameter"><code>gchar</code></em>
+describing a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> to set on the harness sinkpad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-use-systemclock"></a><h3>gst_harness_use_systemclock ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_use_systemclock (<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>);</pre>
+<p>Sets the system <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> on the <em class="parameter"><code>GstHarness</code></em>
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.17.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-harness-use-testclock"></a><h3>gst_harness_use_testclock ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_use_testclock (<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>);</pre>
+<p>Sets the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.18.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-harness-get-testclock"></a><h3>gst_harness_get_testclock ()</h3>
+<pre class="programlisting"><a class="link" href="GstTestClock.html" title="GstTestClock"><span class="returnvalue">GstTestClock</span></a> *
+gst_harness_get_testclock (<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>);</pre>
+<p>Get the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>. Useful if specific operations on the testclock is
+needed.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.19.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.19.7"></a><h4>Returns</h4>
+<p> a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the testclock is not
+present. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-set-time"></a><h3>gst_harness_set_time ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_set_time (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> time</code></em>);</pre>
+<p>Advance the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> to a specific time.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.20.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>time</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> to advance the clock to</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.20.7"></a><h4>Returns</h4>
+<p> a <em class="parameter"><code>gboolean</code></em>
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the time could be set. <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not.</p>
+</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-harness-wait-for-clock-id-waits"></a><h3>gst_harness_wait_for_clock_id_waits ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_wait_for_clock_id_waits (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> waits</code></em>,
+                                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> timeout</code></em>);</pre>
+<p>Waits for <em class="parameter"><code>timeout</code></em>
+ seconds until <em class="parameter"><code>waits</code></em>
+ number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> waits is
+registered with the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>. Useful for writing deterministic tests,
+where you want to make sure that an expected number of waits have been
+reached.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.21.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>waits</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> describing the numbers of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> registered with
+the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>timeout</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> describing how many seconds to wait for <em class="parameter"><code>waits</code></em>
+to be true</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.21.7"></a><h4>Returns</h4>
+<p> a <em class="parameter"><code>gboolean</code></em>
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the waits have been registered, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not.
+(Could be that it timed out waiting or that more waits then waits was found)</p>
+</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-harness-crank-single-clock-wait"></a><h3>gst_harness_crank_single_clock_wait ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_crank_single_clock_wait (<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>);</pre>
+<p>A "crank" consists of three steps:
+1: Wait for a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> to be registered with the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>.
+2: Advance the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> to the time the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> is waiting for.
+3: Release the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> wait.
+Together, this provides an easy way to not have to think about the details
+around clocks and time, but still being able to write deterministic tests
+that are dependant on this. A "crank" can be though of as the notion of
+manually driving the clock forward to its next logical step.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.22.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.22.7"></a><h4>Returns</h4>
+<p> a <em class="parameter"><code>gboolean</code></em>
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the "crank" was successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not.</p>
+</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-harness-crank-multiple-clock-waits"></a><h3>gst_harness_crank_multiple_clock_waits ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_crank_multiple_clock_waits
+                               (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> waits</code></em>);</pre>
+<p>Similar to gst_harness_crank_single_clock_wait, this is the function to use
+if your harnessed element(s) are using more then one gst_clock_id_wait.
+Failing to do so can (and will) make it racy which <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockID</span></a> you actually
+are releasing, where as this function will process all the waits at the
+same time, ensuring that one thread can't register another wait before
+both are released.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.23.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>waits</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> describing the number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockID"><span class="type">GstClockIDs</span></a> to crank</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.23.7"></a><h4>Returns</h4>
+<p> a <em class="parameter"><code>gboolean</code></em>
+<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the "crank" was successful, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not.</p>
+</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-harness-play"></a><h3>gst_harness_play ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_play (<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>);</pre>
+<p>This will set the harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-PLAYING:CAPS"><code class="literal">GST_STATE_PLAYING</code></a>.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElements</span></a> without a sink-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> and with the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-FLAG-SOURCE:CAPS"><code class="literal">GST_ELEMENT_FLAG_SOURCE</code></a>
+flag set is concidered a src <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>
+Non-src <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElements</span></a> (like sinks and filters) are automatically set to
+playing by the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, but src <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElements</span></a> are not to avoid them
+starting to produce buffers.
+Hence, for src <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> you will need to call gst_harness_play explicitly.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.24.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-harness-set-blocking-push-mode"></a><h3>gst_harness_set_blocking_push_mode ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_blocking_push_mode (<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>);</pre>
+<p>Setting this will make the harness block in the chain-function, and
+then release when gst_harness_pull or gst_harness_try_pull is called.
+Can be useful when wanting to control a src-element that is not implementing
+gst_clock_id_wait so it can't be controlled by the <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>, since
+it otherwise would produce buffers as fast as possible.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.25.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-harness-set-forwarding"></a><h3>gst_harness_set_forwarding ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_forwarding (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> forwarding</code></em>);</pre>
+<p>As a convenience, a src-harness will forward <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#GST-EVENT-STREAM-START:CAPS"><code class="literal">GST_EVENT_STREAM_START</code></a>,
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#GST-EVENT-CAPS"><code class="literal">GST_EVENT_CAPS</code></a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#GST-EVENT-SEGMENT:CAPS"><code class="literal">GST_EVENT_SEGMENT</code></a> to the main-harness if forwarding
+is enabled, and forward any sticky-events from the main-harness to
+the sink-harness. It will also forward the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstQuery.html#GST-QUERY-ALLOCATION:CAPS"><code class="literal">GST_QUERY_ALLOCATION</code></a>.</p>
+<p>If forwarding is disabled, the user will have to either manually push
+these events from the src-harness using gst_harness_src_push_event, or
+create and push them manually. While this will allow full control and
+inspection of these events, for the most cases having forwarding enabled
+will be sufficient when writing a test where the src-harness' main function
+is providing data for the main-harness.</p>
+<p>Forwarding is enabled by default.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.26.8"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>forwarding</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> to enable/disable forwarding</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-create-buffer"></a><h3>gst_harness_create_buffer ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+gst_harness_create_buffer (<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><span class="type">gsize</span> size</code></em>);</pre>
+<p>Allocates a buffer using a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBufferPool.html"><span class="type">GstBufferPool</span></a> if present, or else using the
+configured <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html"><span class="type">GstAllocator</span></a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.27.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>a <span class="type">gsize</span> specifying the size of the buffer</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.27.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> of size <em class="parameter"><code>size</code></em>
+</p>
+</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-harness-push"></a><h3>gst_harness_push ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+gst_harness_push (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
+<p>Pushes a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad. The standard way of
+interacting with an harnessed element.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.28.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.28.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> with the result from the push</p>
+</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-harness-pull"></a><h3>gst_harness_pull ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+gst_harness_pull (<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>);</pre>
+<p>Pulls a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> from the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad. The pull
+will timeout in 60 seconds. This is the standard way of getting a buffer
+from a harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.29.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.29.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if timed out.</p>
+</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-harness-try-pull"></a><h3>gst_harness_try_pull ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+gst_harness_try_pull (<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>);</pre>
+<p>Pulls a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> from the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad. Unlike
+gst_harness_pull this will not wait for any buffers if not any are present,
+and return <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> straight away.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.30.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.30.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffers are present in the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a></p>
+</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-harness-push-and-pull"></a><h3>gst_harness_push_and_pull ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+gst_harness_push_and_pull (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
+<p>Basically a gst_harness_push and a gst_harness_pull in one line. Reflects
+the fact that you often want to do exactly this in your test: Push one buffer
+in, and inspect the outcome.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.31.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.31.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if timed out.</p>
+</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-harness-buffers-received"></a><h3>gst_harness_buffers_received ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_buffers_received (<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>);</pre>
+<p>The total number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffers</span></a> that has arrived on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad.
+This number includes buffers that have been dropped as well as buffers
+that have already been pulled out.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.32.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.32.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> number of buffers received</p>
+</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-harness-buffers-in-queue"></a><h3>gst_harness_buffers_in_queue ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_buffers_in_queue (<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>);</pre>
+<p>The number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffers</span></a> currently in the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.33.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.33.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> number of buffers in the queue</p>
+</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-harness-set-drop-buffers"></a><h3>gst_harness_set_drop_buffers ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_drop_buffers (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> drop_buffers</code></em>);</pre>
+<p>When set to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, instead of placing the buffers arriving from the harnessed
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> inside the sinkpads <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a>, they are instead unreffed.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.34.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>drop_buffers</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> specifying to drop outgoing buffers or not</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-dump-to-file"></a><h3>gst_harness_dump_to_file ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_dump_to_file (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *filename</code></em>);</pre>
+<p>Allows you to dump the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffers</span></a> the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a>
+to a file.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.35.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with a the name of a file</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-get-last-pushed-timestamp"></a><h3>gst_harness_get_last_pushed_timestamp ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_harness_get_last_pushed_timestamp (<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>);</pre>
+<p>Get the timestamp of the last <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> pushed on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad,
+typically with gst_harness_push or gst_harness_push_from_src.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.36.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.36.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> with the timestamp or <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-TIME-NONE:CAPS"><code class="literal">GST_CLOCK_TIME_NONE</code></a> if no
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> has been pushed on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad</p>
+</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-harness-push-event"></a><h3>gst_harness_push_event ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_push_event (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> *event</code></em>);</pre>
+<p>Pushes an <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.37.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.37.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> with the result from the push</p>
+</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-harness-pull-event"></a><h3>gst_harness_pull_event ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+gst_harness_pull_event (<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>);</pre>
+<p>Pulls an <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> from the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad.
+Timeouts after 60 seconds similar to gst_harness_pull.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.38.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.38.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if timed out.</p>
+</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-harness-try-pull-event"></a><h3>gst_harness_try_pull_event ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+gst_harness_try_pull_event (<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>);</pre>
+<p>Pulls an <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> from the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad.
+See gst_harness_try_pull for details.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.39.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.39.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffers are present in the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a></p>
+</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-harness-events-received"></a><h3>gst_harness_events_received ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_events_received (<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>);</pre>
+<p>The total number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvents</span></a> that has arrived on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad
+This number includes events handled by the harness as well as events
+that have already been pulled out.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.40.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.40.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> number of events received</p>
+</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-harness-events-in-queue"></a><h3>gst_harness_events_in_queue ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_events_in_queue (<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>);</pre>
+<p>The number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvents</span></a> currently in the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.41.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.41.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> number of events in the queue</p>
+</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-harness-push-upstream-event"></a><h3>gst_harness_push_upstream_event ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_push_upstream_event (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> *event</code></em>);</pre>
+<p>Pushes an <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> sinkpad.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.42.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.42.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> with the result from the push</p>
+</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-harness-pull-upstream-event"></a><h3>gst_harness_pull_upstream_event ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+gst_harness_pull_upstream_event (<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>);</pre>
+<p>Pulls an <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> from the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad.
+Timeouts after 60 seconds similar to gst_harness_pull.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.43.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.43.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if timed out.</p>
+</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-harness-try-pull-upstream-event"></a><h3>gst_harness_try_pull_upstream_event ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="returnvalue">GstEvent</span></a> *
+gst_harness_try_pull_upstream_event (<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>);</pre>
+<p>Pulls an <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> from the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a> on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad.
+See gst_harness_try_pull for details.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.44.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.44.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffers are present in the <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a></p>
+</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-harness-upstream-events-received"></a><h3>gst_harness_upstream_events_received ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_upstream_events_received (<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>);</pre>
+<p>The total number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvents</span></a> that has arrived on the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad
+This number includes events handled by the harness as well as events
+that have already been pulled out.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.45.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.45.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> number of events received</p>
+</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-harness-upstream-events-in-queue"></a><h3>gst_harness_upstream_events_in_queue ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_upstream_events_in_queue (<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>);</pre>
+<p>The number of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvents</span></a> currently in the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> srcpad <a href="https://developer.gnome.org/glib/unstable/glib-Asynchronous-Queues.html#GAsyncQueue"><span class="type">GAsyncQueue</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.46.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.46.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> number of events in the queue</p>
+</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-harness-query-latency"></a><h3>gst_harness_query_latency ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_harness_query_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>);</pre>
+<p>Get the min latency reported by any harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.47.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.47.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/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>
+<div class="refsect2">
+<a name="gst-harness-set-upstream-latency"></a><h3>gst_harness_set_upstream_latency ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/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="id-1.2.7.6.7.48.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>latency</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> specifying the latency</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.48.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/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>
+<div class="refsect2">
+<a name="gst-harness-set-propose-allocator"></a><h3>gst_harness_set_propose_allocator ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set_propose_allocator (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html"><span class="type">GstAllocator</span></a> *allocator</code></em>,
+                                   <em class="parameter"><code>const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+<p>Sets the <em class="parameter"><code>allocator</code></em>
+ and <em class="parameter"><code>params</code></em>
+ to propose when receiving an allocation
+query.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.49.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>allocator</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html"><span class="type">GstAllocator</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<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>params</p></td>
+<td class="parameter_description"><p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-get-allocator"></a><h3>gst_harness_get_allocator ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_get_allocator (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html"><span class="type">GstAllocator</span></a> **allocator</code></em>,
+                           <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+<p>Gets the <em class="parameter"><code>allocator</code></em>
+ and its <em class="parameter"><code>params</code></em>
+ that has been decided to use after an
+allocation query.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.50.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>allocator</p></td>
+<td class="parameter_description"><p> the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html"><span class="type">GstAllocator</span></a> used. </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>params</p></td>
+<td class="parameter_description"><p> the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> of
+<em class="parameter"><code>allocator</code></em>
+. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-add-src"></a><h3>gst_harness_add_src ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_src (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *src_element_name</code></em>,
+                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> has_clock_wait</code></em>);</pre>
+<p>Similar to gst_harness_add_src_harness, this is a convenience to
+directly create a src-harness using the <em class="parameter"><code>src_element_name</code></em>
+ name specified.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.51.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>src_element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>has_clock_wait</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> specifying if the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> uses
+gst_clock_wait_id internally.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-add-src-harness"></a><h3>gst_harness_add_src_harness ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_src_harness (<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 class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> *src_harness</code></em>,
+                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> has_clock_wait</code></em>);</pre>
+<p>A src-harness is a great way of providing the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> with data.
+By adding a src-type <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>, it is then easy to use functions like
+gst_harness_push_from_src or gst_harness_src_crank_and_push_many
+to provide your harnessed element with input. The <em class="parameter"><code>has_clock_wait</code></em>
+ variable
+is a greate way to control you src-element with, in that you can have it
+produce a buffer for you by simply cranking the clock, and not have it
+spin out of control producing buffers as fast as possible.</p>
+<p>If a src-harness already exists it will be replaced.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.52.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>src_harness</p></td>
+<td class="parameter_description"><p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> to be added as a src-harness. </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>
+<tr>
+<td class="parameter_name"><p>has_clock_wait</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> specifying if the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> uses
+gst_clock_wait_id internally.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-add-src-parse"></a><h3>gst_harness_add_src_parse ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_src_parse (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *launchline</code></em>,
+                           <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> has_clock_wait</code></em>);</pre>
+<p>Similar to gst_harness_add_src, this allows you to specify a launch-line,
+which can be useful for both having more then one <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> acting as your
+src (Like a src producing raw buffers, and then an encoder, providing encoded
+data), but also by allowing you to set properties like "is-live" directly on
+the elements.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.53.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>launchline</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> describing a gst-launch type line</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>has_clock_wait</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> specifying if the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> uses
+gst_clock_wait_id internally.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-push-from-src"></a><h3>gst_harness_push_from_src ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+gst_harness_push_from_src (<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>);</pre>
+<p>Transfer data from the src-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> to the main-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>. It consists
+of 4 steps:
+1: Make sure the src is started. (see: gst_harness_play)
+2: Crank the clock (see: gst_harness_crank_single_clock_wait)
+3: Pull a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> from the src-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> (see: gst_harness_pull)
+4: Push the same <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> into the main-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> (see: gst_harness_push)</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.54.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.54.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> with the result of the push</p>
+</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-harness-src-crank-and-push-many"></a><h3>gst_harness_src_crank_and_push_many ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+gst_harness_src_crank_and_push_many (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> cranks</code></em>,
+                                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> pushes</code></em>);</pre>
+<p>Transfer data from the src-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> to the main-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>. Similar to
+gst_harness_push_from_src, this variant allows you to specify how many cranks
+and how many pushes to perform. This can be useful for both moving a lot
+of data at the same time, as well as cases when one crank does not equal one
+buffer to push and v.v.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.55.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cranks</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> with the number of calls to gst_harness_crank_single_clock_wait</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pushes</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> with the number of calls to gst_harness_push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.55.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> with the result of the push</p>
+</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-harness-src-push-event"></a><h3>gst_harness_src_push_event ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_harness_src_push_event (<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>);</pre>
+<p>Similar to what gst_harness_src_push does with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffers</span></a>, this transfers
+a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> from the src-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> to the main-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>. Note that
+some <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvents</span></a> are being transferred automagically. Look at sink_forward_pad
+for details.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.56.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.56.7"></a><h4>Returns</h4>
+<p> a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> with the result of the push</p>
+</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-harness-add-sink"></a><h3>gst_harness_add_sink ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_sink (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sink_element_name</code></em>);</pre>
+<p>Similar to gst_harness_add_sink_harness, this is a convenience to
+directly create a sink-harness using the <em class="parameter"><code>sink_element_name</code></em>
+ name specified.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.57.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sink_element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-add-sink-harness"></a><h3>gst_harness_add_sink_harness ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_sink_harness (<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 class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> *sink_harness</code></em>);</pre>
+<p>Similar to gst_harness_add_src, this allows you to send the data coming out
+of your harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> to a sink-element, allowing to test different
+responses the element output might create in sink elements. An example might
+be an existing sink providing some analytical data on the input it receives that
+can be useful to your testing. If the goal is to test a sink-element itself,
+this is better acheived using gst_harness_new directly on the sink.</p>
+<p>If a sink-harness already exists it will be replaced.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.58.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sink_harness</p></td>
+<td class="parameter_description"><p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> to be added as a sink-harness. </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: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-add-sink-parse"></a><h3>gst_harness_add_sink_parse ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_sink_parse (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *launchline</code></em>);</pre>
+<p>Similar to gst_harness_add_sink, this allows you to specify a launch-line
+instead of just an element name. See gst_harness_add_src_parse for details.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.59.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>launchline</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-push-to-sink"></a><h3>gst_harness_push_to_sink ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+gst_harness_push_to_sink (<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>);</pre>
+<p>Transfer one <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> from the main-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> to the sink-<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>.
+See gst_harness_push_from_src for details.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.60.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.60.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> with the result of the push</p>
+</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-harness-sink-push-many"></a><h3>gst_harness_sink_push_many ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
+gst_harness_sink_push_many (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> pushes</code></em>);</pre>
+<p>Convenience that calls gst_harness_push_to_sink <em class="parameter"><code>pushes</code></em>
+ number of times.
+Will abort the pushing if any one push fails.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.61.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pushes</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> with the number of calls to gst_harness_push_to_sink</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.61.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> with the result of the push</p>
+</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-harness-find-element"></a><h3>gst_harness_find_element ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a> *
+gst_harness_find_element (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>);</pre>
+<p>Most useful in conjunction with gst_harness_new_parse, this will scan the
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElements</span></a> inside the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, and check if any of them matches
+<em class="parameter"><code>element_name</code></em>
+. Typical usecase being that you need to access one of the
+harnessed elements for properties and/or signals.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.62.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.62.7"></a><h4>Returns</h4>
+<p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not found. </p>
+<p><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></p>
+</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-harness-set"></a><h3>gst_harness_set ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_set (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>,
+                 <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *first_property_name</code></em>,
+                 <em class="parameter"><code>...</code></em>);</pre>
+<p>A convenience function to allows you to call g_object_set on a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>
+that are residing inside the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, by using normal g_object_set
+syntax.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.63.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>first_property_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the first property name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>...</p></td>
+<td class="parameter_description"><p>value for the first property, followed optionally by more
+name/value pairs, followed by <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-get"></a><h3>gst_harness_get ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_get (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>,
+                 <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *first_property_name</code></em>,
+                 <em class="parameter"><code>...</code></em>);</pre>
+<p>A convenience function to allows you to call g_object_get on a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>
+that are residing inside the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>, by using normal g_object_get
+syntax.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.64.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>first_property_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the first property name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>...</p></td>
+<td class="parameter_description"><p>return location for the first property, followed optionally by more
+name/return location pairs, followed by <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-add-probe"></a><h3>gst_harness_add_probe ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_harness_add_probe (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *element_name</code></em>,
+                       <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *pad_name</code></em>,
+                       <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstPadProbeType"><span class="type">GstPadProbeType</span></a> mask</code></em>,
+                       <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstPadProbeCallback"><span class="type">GstPadProbeCallback</span></a> callback</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_data</code></em>);</pre>
+<p>A convenience function to allows you to call gst_pad_add_probe on a
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> of a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> that are residing inside the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a>,
+by using normal gst_pad_add_probe syntax</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.65.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pad_name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> with the name of the pad to attach the probe to</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstPadProbeType"><span class="type">GstPadProbeType</span></a> (see gst_pad_add_probe)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>callback</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstPadProbeCallback"><span class="type">GstPadProbeCallback</span></a> (see gst_pad_add_probe)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> (see gst_pad_add_probe)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>destroy_data</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> (see gst_pad_add_probe)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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-harness-stress-thread-stop"></a><h3>gst_harness_stress_thread_stop ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_harness_stress_thread_stop (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a> *t</code></em>);</pre>
+<p>Stop the running <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.66.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>t</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-harness-stress-custom-start"></a><h3>gst_harness_stress_custom_start ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_custom_start (<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="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GFunc"><span class="type">GFunc</span></a> init</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GFunc"><span class="type">GFunc</span></a> callback</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Start a custom stress-thread that will call your <em class="parameter"><code>callback</code></em>
+ for every
+iteration allowing you to do something nasty.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.67.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>init</p></td>
+<td class="parameter_description"><p> a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GFunc"><span class="type">GFunc</span></a> that is called initially and only once. </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>callback</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GFunc"><span class="type">GFunc</span></a> that is called as often as possible</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> with custom data to pass to the <em class="parameter"><code>callback</code></em>
+function</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each call to the <em class="parameter"><code>callback</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.67.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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-harness-stress-statechange-start"></a><h3>gst_harness_stress_statechange_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_statechange_start(h)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-statechange-start-full"></a><h3>gst_harness_stress_statechange_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_statechange_start_full
+                               (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Change the state of your harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> from NULL to PLAYING and
+back again, only pausing for <em class="parameter"><code>sleep</code></em>
+ microseconds every time.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.69.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each state-change</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.69.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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-harness-stress-push-buffer-start"></a><h3>gst_harness_stress_push_buffer_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_push_buffer_start(h, c, s, b)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-push-buffer-start-full"></a><h3>gst_harness_stress_push_buffer_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_push_buffer_start_full
+                               (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *caps</code></em>,
+                                <em class="parameter"><code>const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html"><span class="type">GstSegment</span></a> *segment</code></em>,
+                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> *buf</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Push a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> in intervals of <em class="parameter"><code>sleep</code></em>
+ microseconds.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.71.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>segment</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html"><span class="type">GstSegment</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each call to gst_pad_push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.71.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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="GstHarnessPrepareBufferFunc"></a><h3>GstHarnessPrepareBufferFunc ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="returnvalue">GstBuffer</span></a> *
+<span class="c_punctuation">(</span>*GstHarnessPrepareBufferFunc<span class="c_punctuation">)</span> (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.72.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>user data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<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-harness-stress-push-buffer-with-cb-start"></a><h3>gst_harness_stress_push_buffer_with_cb_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_push_buffer_with_cb_start(h, c, s, f, d, n)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-push-buffer-with-cb-start-full"></a><h3>gst_harness_stress_push_buffer_with_cb_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_push_buffer_with_cb_start_full
+                               (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *caps</code></em>,
+                                <em class="parameter"><code>const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html"><span class="type">GstSegment</span></a> *segment</code></em>,
+                                <em class="parameter"><code><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" title="GstHarnessPrepareBufferFunc ()"><span class="type">GstHarnessPrepareBufferFunc</span></a> func</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Push a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> in intervals of <em class="parameter"><code>sleep</code></em>
+ microseconds.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.74.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>segment</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html"><span class="type">GstSegment</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" title="GstHarnessPrepareBufferFunc ()"><span class="type">GstHarnessPrepareBufferFunc</span></a> function called before every iteration
+to prepare / create a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> for pushing</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> with data to the <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" title="GstHarnessPrepareBufferFunc ()"><span class="type">GstHarnessPrepareBufferFunc</span></a> function</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>notify</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> that is called for every push to allow cleaning
+up the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a>. (like gst_buffer_unref)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each call to gst_pad_push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.74.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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-harness-stress-push-event-start"></a><h3>gst_harness_stress_push_event_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_push_event_start(h, e)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-push-event-start-full"></a><h3>gst_harness_stress_push_event_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_push_event_start_full
+                               (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> *event</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Push the <em class="parameter"><code>event</code></em>
+ onto the harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> sinkpad in intervals of
+<em class="parameter"><code>sleep</code></em>
+ microseconds</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.76.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each gst_event_push with <em class="parameter"><code>event</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.76.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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-harness-stress-send-upstream-event-start"></a><h3>gst_harness_stress_send_upstream_event_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_send_upstream_event_start(h, e)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-push-upstream-event-start-full"></a><h3>gst_harness_stress_push_upstream_event_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_push_upstream_event_start_full
+                               (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> *event</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Push the <em class="parameter"><code>event</code></em>
+ onto the harnessed <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> srcpad in intervals of
+<em class="parameter"><code>sleep</code></em>
+ microseconds.
+Pushing events should generally be OOB events.
+If you need serialized events, you may use a custom stress thread which
+both pushes buffers and events.</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.78.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a> to push</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each gst_event_push with <em class="parameter"><code>event</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.78.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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-harness-stress-property-start"></a><h3>gst_harness_stress_property_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_property_start(h, n, v)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-property-start-full"></a><h3>gst_harness_stress_property_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_property_start_full
+                               (<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>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+                                <em class="parameter"><code>const <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Call g_object_set with <em class="parameter"><code>name</code></em>
+ and <em class="parameter"><code>value</code></em>
+ in intervals of <em class="parameter"><code>sleep</code></em>
+ microseconds</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.80.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> specifying a property name</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> to set the property to</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each g_object_set with <em class="parameter"><code>name</code></em>
+and <em class="parameter"><code>value</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.80.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</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-harness-stress-requestpad-start"></a><h3>gst_harness_stress_requestpad_start()</h3>
+<pre class="programlisting">#define             gst_harness_stress_requestpad_start(h, t, n, c, r)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-harness-stress-requestpad-start-full"></a><h3>gst_harness_stress_requestpad_start_full ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="returnvalue">GstHarnessThread</span></a> *
+gst_harness_stress_requestpad_start_full
+                               (<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html"><span class="type">GstPadTemplate</span></a> *templ</code></em>,
+                                <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *caps</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> release</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> sleep</code></em>);</pre>
+<p>Call gst_element_request_pad in intervals of <em class="parameter"><code>sleep</code></em>
+ microseconds</p>
+<p>MT safe.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.82.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>h</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>templ</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html"><span class="type">GstPadTemplate</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>release</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sleep</p></td>
+<td class="parameter_description"><p>a <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> specifying how long to sleep in (microseconds) for
+each gst_element_request_pad</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.7.6.7.82.8"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread"><span class="type">GstHarnessThread</span></a></p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstHarness"></a><h3>struct GstHarness</h3>
+<pre class="programlisting">struct GstHarness {
+  GstElement * element;
+
+  GstPad * srcpad;
+  GstPad * sinkpad;
+
+  GstHarness * src_harness;
+  GstHarness * sink_harness;
+};
+</pre>
+<div class="refsect3">
+<a name="id-1.2.7.6.8.2.4"></a><h4>Members</h4>
+<div class="informaltable"><table 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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *<em class="structfield"><code><a name="GstHarness.element"></a>element</code></em>;</p></td>
+<td class="struct_member_description"><p>the element inside the harness</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *<em class="structfield"><code><a name="GstHarness.srcpad"></a>srcpad</code></em>;</p></td>
+<td class="struct_member_description"><p>the internal harness source pad</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *<em class="structfield"><code><a name="GstHarness.sinkpad"></a>sinkpad</code></em>;</p></td>
+<td class="struct_member_description"><p>the internal harness sink pad</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> *<em class="structfield"><code><a name="GstHarness.src-harness"></a>src_harness</code></em>;</p></td>
+<td class="struct_member_description"><p>the source (input) harness (if any)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> *<em class="structfield"><code><a name="GstHarness.sink-harness"></a>sink_harness</code></em>;</p></td>
+<td class="struct_member_description"><p>the sink (output) harness (if any)</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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="GstHarnessThread"></a><h3>GstHarnessThread</h3>
+<pre class="programlisting">typedef struct _GstHarnessThread GstHarnessThread;</pre>
+<p>Opaque handle representing a GstHarness stress testing thread.</p>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstHarness.see-also"></a><h2>See Also</h2>
+<p><a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a>,\</p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstNetAddressMeta.html b/docs/libs/html/gstreamer-libs-GstNetAddressMeta.html
index 9a83a6a..65de030 100644
--- a/docs/libs/html/gstreamer-libs-GstNetAddressMeta.html
+++ b/docs/libs/html/gstreamer-libs-GstNetAddressMeta.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstNetAddressMeta</title>
+<title>GstNetAddressMeta: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-net.html" title="GStreamer Network Classes">
 <link rel="prev" href="gstreamer-net.html" title="GStreamer Network Classes">
 <link rel="next" href="GstNetClientClock.html" title="GstNetClientClock">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -83,9 +83,9 @@
 </div>
 <div class="refsect1">
 <a name="gstreamer-libs-GstNetAddressMeta.description"></a><h2>Description</h2>
-<p><span class="type">GstNetAddress</span> can be used to store a network address. <a class="link" href="gstreamer-libs-GstNetAddressMeta.html#GstNetAddressMeta" title="struct GstNetAddressMeta"><span class="type">GstNetAddressMeta</span></a> can
-be used to store a network address in a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> so that it network
-elements can track the to and from address of the buffer.</p>
+<p><a class="link" href="gstreamer-libs-GstNetAddressMeta.html#GstNetAddressMeta" title="struct GstNetAddressMeta"><span class="type">GstNetAddressMeta</span></a> can be used to store a network address (a <a href="https://developer.gnome.org/gio/unstable/GSocketAddress.html"><span class="type">GSocketAddress</span></a>)
+in a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> so that it network elements can track the to and from address
+of the buffer.</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-libs-GstNetAddressMeta.functions_details"></a><h2>Functions</h2>
@@ -177,7 +177,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstNetControlMessageMeta.html b/docs/libs/html/gstreamer-libs-GstNetControlMessageMeta.html
new file mode 100644
index 0000000..347c4b0
--- /dev/null
+++ b/docs/libs/html/gstreamer-libs-GstNetControlMessageMeta.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstNetControlMessageMeta: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="gstreamer-net.html" title="GStreamer Network Classes">
+<link rel="prev" href="GstNetClientClock.html" title="GstNetClientClock">
+<link rel="next" href="gstreamer-libs-GstNetTimePacket.html" title="GstNetTimePacket">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-libs-GstNetControlMessageMeta.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="gstreamer-net.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="GstNetClientClock.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-libs-GstNetTimePacket.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-libs-GstNetControlMessageMeta"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-libs-GstNetControlMessageMeta.top_of_page"></a>GstNetControlMessageMeta</span></h2>
+<p>GstNetControlMessageMeta — Network Control Message Meta</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstNetControlMessageMeta.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table 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-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta"><span class="returnvalue">GstNetControlMessageMeta</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-add-net-control-message-meta" title="gst_buffer_add_net_control_message_meta ()">gst_buffer_add_net_control_message_meta</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-get-net-control-message-meta" title="gst_buffer_get_net_control_message_meta()">gst_buffer_get_net_control_message_meta</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html#GstMetaInfo"><span class="returnvalue">GstMetaInfo</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#gst-net-control-message-meta-get-info" title="gst_net_control_message_meta_get_info ()">gst_net_control_message_meta_get_info</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstNetControlMessageMeta.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta">GstNetControlMessageMeta</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstNetControlMessageMeta.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/net/gstnetcontrolmessagemeta.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstNetControlMessageMeta.description"></a><h2>Description</h2>
+<p><a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta"><span class="type">GstNetControlMessageMeta</span></a> can be used to store control messages (ancillary
+data) which was received with or is to be sent alongside the buffer data.
+When used with socket sinks and sources which understand this meta it allows
+sending and receiving ancillary data such as unix credentials (See
+<a href="https://developer.gnome.org/gio/unstable/GUnixCredentialsMessage.html"><span class="type">GUnixCredentialsMessage</span></a>) and Unix file descriptions (See <a href="https://developer.gnome.org/gio/unstable/GUnixFDMessage.html"><span class="type">GUnixFDMessage</span></a>).</p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstNetControlMessageMeta.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-buffer-add-net-control-message-meta"></a><h3>gst_buffer_add_net_control_message_meta ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta"><span class="returnvalue">GstNetControlMessageMeta</span></a> *
+gst_buffer_add_net_control_message_meta
+                               (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> *buffer</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/gio/unstable/GSocketControlMessage.html"><span class="type">GSocketControlMessage</span></a> *message</code></em>);</pre>
+<p>Attaches <em class="parameter"><code>message</code></em>
+ as metadata in a <a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta"><span class="type">GstNetControlMessageMeta</span></a> to <em class="parameter"><code>buffer</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.6.5.7.2.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <em class="parameter"><code>GSocketControlMessage</code></em>
+to attach to <em class="parameter"><code>buffer</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.6.5.7.2.6"></a><h4>Returns</h4>
+<p> a <a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta"><span class="type">GstNetControlMessageMeta</span></a> connected to <em class="parameter"><code>buffer</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>]</span></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-get-net-control-message-meta"></a><h3>gst_buffer_get_net_control_message_meta()</h3>
+<pre class="programlisting">#define             gst_buffer_get_net_control_message_meta(b)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-net-control-message-meta-get-info"></a><h3>gst_net_control_message_meta_get_info ()</h3>
+<pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html#GstMetaInfo"><span class="returnvalue">GstMetaInfo</span></a> *
+gst_net_control_message_meta_get_info (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstNetControlMessageMeta.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstNetControlMessageMeta"></a><h3>struct GstNetControlMessageMeta</h3>
+<pre class="programlisting">struct GstNetControlMessageMeta {
+  GstMeta       meta;
+
+  GSocketControlMessage *message;
+};
+</pre>
+<p>Buffer metadata for GSocket control messages, AKA ancillary data attached to
+data sent across a socket.</p>
+<div class="refsect3">
+<a name="id-1.2.6.5.8.2.5"></a><h4>Members</h4>
+<div class="informaltable"><table 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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html#GstMeta"><span class="type">GstMeta</span></a> <em class="structfield"><code><a name="GstNetControlMessageMeta.meta"></a>meta</code></em>;</p></td>
+<td class="struct_member_description"><p>the parent type</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="https://developer.gnome.org/gio/unstable/GSocketControlMessage.html"><span class="type">GSocketControlMessage</span></a> *<em class="structfield"><code><a name="GstNetControlMessageMeta.message"></a>message</code></em>;</p></td>
+<td class="struct_member_description"><p>a <a href="https://developer.gnome.org/gio/unstable/GSocketControlMessage.html"><span class="type">GSocketControlMessage</span></a> stored as metadata</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.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstNetTimePacket.html b/docs/libs/html/gstreamer-libs-GstNetTimePacket.html
index bc49f6a..6e4d6df 100644
--- a/docs/libs/html/gstreamer-libs-GstNetTimePacket.html
+++ b/docs/libs/html/gstreamer-libs-GstNetTimePacket.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstNetTimePacket</title>
+<title>GstNetTimePacket: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-net.html" title="GStreamer Network Classes">
-<link rel="prev" href="GstNetClientClock.html" title="GstNetClientClock">
+<link rel="prev" href="gstreamer-libs-GstNetControlMessageMeta.html" title="GstNetControlMessageMeta">
 <link rel="next" href="GstNetTimeProvider.html" title="GstNetTimeProvider">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,7 +19,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="gstreamer-net.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="GstNetClientClock.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-libs-GstNetControlMessageMeta.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="GstNetTimeProvider.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -135,7 +135,7 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-TIME-NONE:CAPS"><span class="type">GST_CLOCK_TIME_NONE</span></a>.</p>
 <p>MT safe. Caller owns return value (gst_net_time_packet_free to free).</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.2.7"></a><h4>Parameters</h4>
+<a name="id-1.2.6.6.7.2.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -150,9 +150,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.2.8"></a><h4>Returns</h4>
+<a name="id-1.2.6.6.7.2.8"></a><h4>Returns</h4>
 <p> The new <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GstNetTimePacket" title="struct GstNetTimePacket"><span class="type">GstNetTimePacket</span></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -163,7 +162,7 @@
 <p>Make a copy of <em class="parameter"><code>packet</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.6.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -178,10 +177,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.6.7.3.6"></a><h4>Returns</h4>
 <p> a copy of <em class="parameter"><code>packet</code></em>
 , free with <a class="link" href="gstreamer-libs-GstNetTimePacket.html#gst-net-time-packet-free" title="gst_net_time_packet_free ()"><code class="function">gst_net_time_packet_free()</code></a>.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -192,7 +190,7 @@
 <p>Free <em class="parameter"><code>packet</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.6.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -217,7 +215,7 @@
 <p>Receives a <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GstNetTimePacket" title="struct GstNetTimePacket"><span class="type">GstNetTimePacket</span></a> over a socket. Handles interrupted system
 calls, but otherwise returns NULL on error.</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.6.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -244,7 +242,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.6.7.5.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GstNetTimePacket" title="struct GstNetTimePacket"><span class="type">GstNetTimePacket</span></a>, or NULL on error. Free
 with <a class="link" href="gstreamer-libs-GstNetTimePacket.html#gst-net-time-packet-free" title="gst_net_time_packet_free ()"><code class="function">gst_net_time_packet_free()</code></a> when done. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -261,7 +259,7 @@
 <p>Sends a <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GstNetTimePacket" title="struct GstNetTimePacket"><span class="type">GstNetTimePacket</span></a> over a socket.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.6.7.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -293,9 +291,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.6.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.6.7.6.7"></a><h4>Returns</h4>
 <p> TRUE if successful, FALSE in case an error occurred.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -309,7 +306,7 @@
 network.</p>
 <p>MT safe. Caller owns return value (g_free to free).</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.6.7.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -324,9 +321,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.5.7.7.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.6.7.7.7"></a><h4>Returns</h4>
 <p> A newly allocated sequence of <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GST-NET-TIME-PACKET-SIZE:CAPS" title="GST_NET_TIME_PACKET_SIZE"><span class="type">GST_NET_TIME_PACKET_SIZE</span></a> bytes.</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -341,7 +337,7 @@
 </pre>
 <p>Content of a <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GstNetTimePacket" title="struct GstNetTimePacket"><span class="type">GstNetTimePacket</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.6.5.8.2.5"></a><h4>Members</h4>
+<a name="id-1.2.6.6.8.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -377,7 +373,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstPtpClock.html b/docs/libs/html/gstreamer-libs-GstPtpClock.html
new file mode 100644
index 0000000..4c2dc98
--- /dev/null
+++ b/docs/libs/html/gstreamer-libs-GstPtpClock.html
@@ -0,0 +1,448 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstPtpClock: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="gstreamer-net.html" title="GStreamer Network Classes">
+<link rel="prev" href="GstNetTimeProvider.html" title="GstNetTimeProvider">
+<link rel="next" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-libs-GstPtpClock.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="gstreamer-net.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="GstNetTimeProvider.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-check.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-libs-GstPtpClock"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-libs-GstPtpClock.top_of_page"></a>GstPtpClock</span></h2>
+<p>GstPtpClock — Special clock that synchronizes to a remote time
+                    provider via PTP (IEEE1588:2008).</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gstreamer-libs-GstPtpClock.html#GST-PTP-CLOCK-ID-NONE:CAPS" title="GST_PTP_CLOCK_ID_NONE">GST_PTP_CLOCK_ID_NONE</a></td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-init" title="gst_ptp_init ()">gst_ptp_init</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-libs-GstPtpClock.html#gst-ptp-deinit" title="gst_ptp_deinit ()">gst_ptp_deinit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-is-initialized" title="gst_ptp_is_initialized ()">gst_ptp_is_initialized</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-is-supported" title="gst_ptp_is_supported ()">gst_ptp_is_supported</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="returnvalue">GstClock</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-clock-new" title="gst_ptp_clock_new ()">gst_ptp_clock_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="gstreamer-libs-GstPtpClock.html#GstPtpStatisticsCallback" title="GstPtpStatisticsCallback ()">*GstPtpStatisticsCallback</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="returnvalue">gulong</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" title="gst_ptp_statistics_callback_add ()">gst_ptp_statistics_callback_add</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-libs-GstPtpClock.html#gst-ptp-statistics-callback-remove" title="gst_ptp_statistics_callback_remove ()">gst_ptp_statistics_callback_remove</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-libs-GstPtpClock.html#GstPtpClock" title="struct GstPtpClock">GstPtpClock</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/net/net.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.description"></a><h2>Description</h2>
+<p>GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in slave-only
+mode, that allows a GStreamer pipeline to synchronize to a PTP network
+clock in some specific domain.</p>
+<p>The PTP subsystem can be initialized with <a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-init" title="gst_ptp_init ()"><code class="function">gst_ptp_init()</code></a>, which then starts
+a helper process to do the actual communication via the PTP ports. This is
+required as PTP listens on ports &lt; 1024 and thus requires special
+privileges. Once this helper process is started, the main process will
+synchronize to all PTP domains that are detected on the selected
+interfaces.</p>
+<p>gst_ptp_clock_new() then allows to create a GstClock that provides the PTP
+time from a master clock inside a specific PTP domain. This clock will only
+return valid timestamps once the timestamps in the PTP domain are known. To
+check this, you can use <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#gst-clock-wait-for-sync"><code class="function">gst_clock_wait_for_sync()</code></a>, the GstClock::synced
+signal and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#gst-clock-is-synced"><code class="function">gst_clock_is_synced()</code></a>.</p>
+<p>To gather statistics about the PTP clock synchronization,
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" title="gst_ptp_statistics_callback_add ()"><code class="function">gst_ptp_statistics_callback_add()</code></a> can be used. This gives the application
+the possibility to collect all kinds of statistics from the clock
+synchronization.</p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="GST-PTP-CLOCK-ID-NONE:CAPS"></a><h3>GST_PTP_CLOCK_ID_NONE</h3>
+<pre class="programlisting">#define GST_PTP_CLOCK_ID_NONE ((guint64) -1)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-ptp-init"></a><h3>gst_ptp_init ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_ptp_init (<em class="parameter"><code><span class="type">guint64</span> clock_id</code></em>,
+              <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **interfaces</code></em>);</pre>
+<p>Initialize the GStreamer PTP subsystem and create a PTP ordinary clock in
+slave-only mode for all domains on the given <em class="parameter"><code>interfaces</code></em>
+ with the
+given <em class="parameter"><code>clock_id</code></em>
+.</p>
+<p>If <em class="parameter"><code>clock_id</code></em>
+ is <a class="link" href="gstreamer-libs-GstPtpClock.html#GST-PTP-CLOCK-ID-NONE:CAPS" title="GST_PTP_CLOCK_ID_NONE"><code class="literal">GST_PTP_CLOCK_ID_NONE</code></a>, a clock id is automatically
+generated from the MAC address of the first network interface.</p>
+<p>This function is automatically called by <a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-clock-new" title="gst_ptp_clock_new ()"><code class="function">gst_ptp_clock_new()</code></a> with default
+parameters if it wasn't called before.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.3.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>clock_id</p></td>
+<td class="parameter_description"><p>PTP clock id of this process' clock or <a class="link" href="gstreamer-libs-GstPtpClock.html#GST-PTP-CLOCK-ID-NONE:CAPS" title="GST_PTP_CLOCK_ID_NONE"><code class="literal">GST_PTP_CLOCK_ID_NONE</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>interfaces</p></td>
+<td class="parameter_description"><p> network interfaces to run the clock on. </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="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<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="id-1.2.6.8.7.3.8"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the GStreamer PTP clock subsystem could be initialized.</p>
+</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-ptp-deinit"></a><h3>gst_ptp_deinit ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_ptp_deinit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Deinitialize the GStreamer PTP subsystem and stop the PTP clock. If there
+are any remaining GstPtpClock instances, they won't be further synchronized
+to the PTP network clock.</p>
+<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-ptp-is-initialized"></a><h3>gst_ptp_is_initialized ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_ptp_is_initialized (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Check if the GStreamer PTP clock subsystem is initialized.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.5.5"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the GStreamer PTP clock subsystem is intialized.</p>
+</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-ptp-is-supported"></a><h3>gst_ptp_is_supported ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_ptp_is_supported (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Check if PTP clocks are generally supported on this system, and if previous
+initializations did not fail.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.6.5"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if PTP clocks are generally supported on this system, and
+previous initializations did not fail.</p>
+</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-ptp-clock-new"></a><h3>gst_ptp_clock_new ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="returnvalue">GstClock</span></a> *
+gst_ptp_clock_new (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+                   <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> domain</code></em>);</pre>
+<p>Creates a new PTP clock instance that exports the PTP time of the master
+clock in <em class="parameter"><code>domain</code></em>
+. This clock can be slaved to other clocks as needed.</p>
+<p>If <a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-init" title="gst_ptp_init ()"><code class="function">gst_ptp_init()</code></a> was not called before, this will call <a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-init" title="gst_ptp_init ()"><code class="function">gst_ptp_init()</code></a> with
+default parameters.</p>
+<p>This clock only returns valid timestamps after it received the first
+times from the PTP master clock on the network. Once this happens the
+GstPtpClock::internal-clock property will become non-NULL. You can
+check this with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#gst-clock-wait-for-sync"><code class="function">gst_clock_wait_for_sync()</code></a>, the GstClock::synced signal and
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#gst-clock-is-synced"><code class="function">gst_clock_is_synced()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.7.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>Name of the clock</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>domain</p></td>
+<td class="parameter_description"><p>PTP domain</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</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="GstPtpStatisticsCallback"></a><h3>GstPtpStatisticsCallback ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<span class="c_punctuation">(</span>*GstPtpStatisticsCallback<span class="c_punctuation">)</span> (<em class="parameter"><code><span class="type">guint8</span> domain</code></em>,
+                             <em class="parameter"><code>const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html"><span class="type">GstStructure</span></a> *stats</code></em>,
+                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>The statistics can be the following structures:</p>
+<p>GST_PTP_STATISTICS_NEW_DOMAIN_FOUND:
+"domain"                G_TYPE_UINT          The domain identifier of the domain
+"clock"                 GST_TYPE_CLOCK       The internal clock that is slaved to the
+                                             PTP domain</p>
+<p>GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED:
+"domain"                G_TYPE_UINT          The domain identifier of the domain
+"master-clock-id"       G_TYPE_UINT64        PTP clock identifier of the selected master
+                                             clock
+"master-clock-port"     G_TYPE_UINT          PTP port number of the selected master clock
+"grandmaster-clock-id"  G_TYPE_UINT64        PTP clock identifier of the grandmaster clock</p>
+<p>GST_PTP_STATISTICS_PATH_DELAY_MEASURED:
+"domain"                G_TYPE_UINT          The domain identifier of the domain
+"mean-path-delay-avg"   GST_TYPE_CLOCK_TIME  Average mean path delay
+"mean-path-delay"       GST_TYPE_CLOCK_TIME  Latest mean path delay
+"delay-request-delay"   GST_TYPE_CLOCK_TIME  Delay of DELAY_REQ / DELAY_RESP messages</p>
+<p>GST_PTP_STATISTICS_TIME_UPDATED:
+"domain"                G_TYPE_UINT          The domain identifier of the domain
+"mean-path-delay-avg"   GST_TYPE_CLOCK_TIME  Average mean path delay
+"local-time"            GST_TYPE_CLOCK_TIME  Local time that corresponds to ptp-time
+"ptp-time"              GST_TYPE_CLOCK_TIME  Newly measured PTP time at local-time
+"estimated-ptp-time"    GST_TYPE_CLOCK_TIME  Estimated PTP time based on previous measurements
+"discontinuity"         G_TYPE_INT64         Difference between estimated and measured PTP time
+"synced"                G_TYPE_BOOLEAN       Currently synced to the remote clock
+"r-squared"             G_TYPE_DOUBLE        R² of clock estimation regression
+"internal-time"         GST_TYPE_CLOCK_TIME  Internal time clock parameter
+"external-time"         GST_TYPE_CLOCK_TIME  External time clock parameter
+"rate-num"              G_TYPE_UINT64        Internal/external rate numerator
+"rate-den"              G_TYPE_UINT64        Internal/external rate denominator
+"rate"                  G_TYPE_DOUBLE        Internal/external rate</p>
+<p>If <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned, the callback is removed and never called again.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.8.10"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>domain</p></td>
+<td class="parameter_description"><p>PTP domain identifier</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stats</p></td>
+<td class="parameter_description"><p>New statistics</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>Data passed to <a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" title="gst_ptp_statistics_callback_add ()"><code class="function">gst_ptp_statistics_callback_add()</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-ptp-statistics-callback-add"></a><h3>gst_ptp_statistics_callback_add ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="returnvalue">gulong</span></a>
+gst_ptp_statistics_callback_add (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstPtpClock.html#GstPtpStatisticsCallback" title="GstPtpStatisticsCallback ()"><span class="type">GstPtpStatisticsCallback</span></a> callback</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_data</code></em>);</pre>
+<p>Installs a new statistics callback for gathering PTP statistics. See
+GstPtpStatisticsCallback for a list of statistics that are provided.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.9.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>callback</p></td>
+<td class="parameter_description"><p>GstPtpStatisticsCallback to call</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 the callback</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>destroy_data</p></td>
+<td class="parameter_description"><p>GDestroyNotify to destroy the data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.9.6"></a><h4>Returns</h4>
+<p> Id for the callback that can be passed to
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-remove" title="gst_ptp_statistics_callback_remove ()"><code class="function">gst_ptp_statistics_callback_remove()</code></a></p>
+</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-ptp-statistics-callback-remove"></a><h3>gst_ptp_statistics_callback_remove ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_ptp_statistics_callback_remove (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> id</code></em>);</pre>
+<p>Removes a PTP statistics callback that was previously added with
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" title="gst_ptp_statistics_callback_add ()"><code class="function">gst_ptp_statistics_callback_add()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.7.10.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>Callback id to remove</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstPtpClock"></a><h3>struct GstPtpClock</h3>
+<pre class="programlisting">struct GstPtpClock {
+  GstSystemClock clock;
+};
+</pre>
+<p>Opaque <a class="link" href="gstreamer-libs-GstPtpClock.html#GstPtpClock" title="struct GstPtpClock"><span class="type">GstPtpClock</span></a> structure.</p>
+<div class="refsect3">
+<a name="id-1.2.6.8.8.2.5"></a><h4>Members</h4>
+<div class="informaltable"><table 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 href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSystemClock.html"><span class="type">GstSystemClock</span></a> <em class="structfield"><code><a name="GstPtpClock.clock"></a>clock</code></em>;</p></td>
+<td class="struct_member_description"><p>parented to <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSystemClock.html"><span class="type">GstSystemClock</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-libs-GstPtpClock.see-also"></a><h2>See Also</h2>
+<p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a>, <a class="link" href="GstNetClientClock.html" title="GstNetClientClock"><span class="type">GstNetClientClock</span></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html"><span class="type">GstPipeline</span></a></p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstQueueArray.html b/docs/libs/html/gstreamer-libs-GstQueueArray.html
index 0f540e7..a376be7 100644
--- a/docs/libs/html/gstreamer-libs-GstQueueArray.html
+++ b/docs/libs/html/gstreamer-libs-GstQueueArray.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstQueueArray</title>
+<title>GstQueueArray: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">
 <link rel="next" href="gstreamer-control.html" title="GStreamer Dynamic Parameter Control">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -111,6 +111,46 @@
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-find" title="gst_queue_array_find ()">gst_queue_array_find</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="returnvalue">GstQueueArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-new-for-struct" title="gst_queue_array_new_for_struct ()">gst_queue_array_new_for_struct</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-libs-GstQueueArray.html#gst-queue-array-push-tail-struct" title="gst_queue_array_push_tail_struct ()">gst_queue_array_push_tail_struct</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head-struct" title="gst_queue_array_peek_head_struct ()">gst_queue_array_peek_head_struct</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head-struct" title="gst_queue_array_pop_head_struct ()">gst_queue_array_pop_head_struct</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-struct" title="gst_queue_array_drop_struct ()">gst_queue_array_drop_struct</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -147,8 +187,9 @@
 <p>Allocates a new <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object with an initial
 queue size of <em class="parameter"><code>initial_size</code></em>
 .</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -163,11 +204,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.2.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -176,8 +216,9 @@
 gst_queue_array_free (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>);</pre>
 <p>Frees queue <em class="parameter"><code>array</code></em>
  and all memory associated to it.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -191,7 +232,7 @@
 </tr></tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -200,8 +241,9 @@
 gst_queue_array_get_length (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>);</pre>
 <p>Returns the length of the queue <em class="parameter"><code>array</code></em>
 </p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -216,12 +258,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.4.7"></a><h4>Returns</h4>
 <p> the length of the queue <em class="parameter"><code>array</code></em>
 .</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -231,8 +272,9 @@
 <p>Returns and head of the queue <em class="parameter"><code>array</code></em>
  and removes
 it from the queue.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -247,22 +289,22 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.5.7"></a><h4>Returns</h4>
 <p> The head of the queue</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="gst-queue-array-peek-head"></a><h3>gst_queue_array_peek_head ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
 gst_queue_array_peek_head (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>);</pre>
-<p>Returns and head of the queue <em class="parameter"><code>array</code></em>
+<p>Returns the head of the queue <em class="parameter"><code>array</code></em>
  and does not
 remove it from the queue.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -277,11 +319,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.6.7"></a><h4>Returns</h4>
 <p> The head of the queue</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -292,8 +333,9 @@
 <p>Pushes <em class="parameter"><code>data</code></em>
  to the tail of the queue <em class="parameter"><code>array</code></em>
 .</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -314,7 +356,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -323,8 +365,9 @@
 gst_queue_array_is_empty (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>);</pre>
 <p>Checks if the queue <em class="parameter"><code>array</code></em>
  is empty.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -339,12 +382,11 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.8.7"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the queue <em class="parameter"><code>array</code></em>
 is empty</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -355,8 +397,9 @@
 <p>Drops the queue element at position <em class="parameter"><code>idx</code></em>
  from queue <em class="parameter"><code>array</code></em>
 .</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -378,11 +421,10 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.9.7"></a><h4>Returns</h4>
 <p> the dropped element</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -402,8 +444,9 @@
 random offset. The index can be used in connection with
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-element" title="gst_queue_array_drop_element ()"><code class="function">gst_queue_array_drop_element()</code></a>. FIXME: return index 0-based and make
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-element" title="gst_queue_array_drop_element ()"><code class="function">gst_queue_array_drop_element()</code></a> take a 0-based index.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.10.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.16.7.10.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -431,11 +474,168 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.16.7.10.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.16.7.10.8"></a><h4>Returns</h4>
 <p> Index of the found element or -1 if nothing was found.</p>
-<p></p>
 </div>
-<p class="since">Since 1.2</p>
+<p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-queue-array-new-for-struct"></a><h3>gst_queue_array_new_for_struct ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="returnvalue">GstQueueArray</span></a> *
+gst_queue_array_new_for_struct (<em class="parameter"><code><span class="type">gsize</span> struct_size</code></em>,
+                                <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> initial_size</code></em>);</pre>
+<p>Allocates a new <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object for elements (e.g. structures)
+of size <em class="parameter"><code>struct_size</code></em>
+, with an initial queue size of <em class="parameter"><code>initial_size</code></em>
+.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.11.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>struct_size</p></td>
+<td class="parameter_description"><p>Size of each element (e.g. structure) in the array</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>initial_size</p></td>
+<td class="parameter_description"><p>Initial size of the new queue</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.11.7"></a><h4>Returns</h4>
+<p> a new <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object</p>
+</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-queue-array-push-tail-struct"></a><h3>gst_queue_array_push_tail_struct ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_queue_array_push_tail_struct (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>,
+                                  <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> p_struct</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-queue-array-peek-head-struct"></a><h3>gst_queue_array_peek_head_struct ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
+gst_queue_array_peek_head_struct (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>);</pre>
+<p>Returns the head of the queue <em class="parameter"><code>array</code></em>
+ without removing it from the queue.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.13.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>array</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.13.7"></a><h4>Returns</h4>
+<p> pointer to element or struct, or NULL if <em class="parameter"><code>array</code></em>
+was empty. The
+data pointed to by the returned pointer stays valid only as long as
+the queue array is not modified further!</p>
+</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-queue-array-pop-head-struct"></a><h3>gst_queue_array_pop_head_struct ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
+gst_queue_array_pop_head_struct (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>);</pre>
+<p>Returns the head of the queue <em class="parameter"><code>array</code></em>
+ and removes it from the queue.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.14.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>array</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.14.7"></a><h4>Returns</h4>
+<p> pointer to element or struct, or NULL if <em class="parameter"><code>array</code></em>
+was empty. The
+data pointed to by the returned pointer stays valid only as long as
+the queue array is not modified further!</p>
+</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-queue-array-drop-struct"></a><h3>gst_queue_array_drop_struct ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_queue_array_drop_struct (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> *array</code></em>,
+                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
+                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> p_struct</code></em>);</pre>
+<p>Drops the queue element at position <em class="parameter"><code>idx</code></em>
+ from queue <em class="parameter"><code>array</code></em>
+ and copies the
+data of the element or structure that was removed into <em class="parameter"><code>p_struct</code></em>
+ if
+<em class="parameter"><code>p_struct</code></em>
+ is set (not NULL).</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.15.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>array</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray"><span class="type">GstQueueArray</span></a> object</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>index to drop</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>p_struct</p></td>
+<td class="parameter_description"><p>address into which to store the data of the dropped structure, or NULL</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.4.16.7.15.7"></a><h4>Returns</h4>
+<p> TRUE on success, or FALSE on error</p>
+</div>
+<p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -447,7 +647,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstStreamConsistency.html b/docs/libs/html/gstreamer-libs-GstStreamConsistency.html
index c3c232e..7f4072b 100644
--- a/docs/libs/html/gstreamer-libs-GstStreamConsistency.html
+++ b/docs/libs/html/gstreamer-libs-GstStreamConsistency.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstStreamConsistency</title>
+<title>GstStreamConsistency: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-check.html" title="GStreamer Check Unit Testing">
 <link rel="prev" href="gstreamer-libs-GstBufferStraw.html" title="GstBufferStraw">
-<link rel="next" href="GstTestClock.html" title="GstTestClock">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-libs-GstHarness.html" title="GstHarness">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,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="gstreamer-check.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gstreamer-libs-GstBufferStraw.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="GstTestClock.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-libs-GstHarness.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gstreamer-libs-GstStreamConsistency"></a><div class="titlepage"></div>
@@ -105,8 +105,9 @@
 gst_consistency_checker_new (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *pad</code></em>);</pre>
 <p>Sets up a data probe on the given pad which will raise assertions if the
 data flow is inconsistent.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
-<a name="id-1.2.7.5.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.7.5.7.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -121,9 +122,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.7.5.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.7.5.7.2.7"></a><h4>Returns</h4>
 <p> A <a class="link" href="gstreamer-libs-GstStreamConsistency.html#GstStreamConsistency" title="GstStreamConsistency"><span class="type">GstStreamConsistency</span></a> structure used to track data flow.</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -204,7 +204,6 @@
 <div class="refsect3">
 <a name="id-1.2.7.5.7.5.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the pad was added</p>
-<p></p>
 </div>
 </div>
 </div>
@@ -218,7 +217,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html b/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html
index 3c09174..8b2c309 100644
--- a/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html
+++ b/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GstTypeFindHelper</title>
+<title>GstTypeFindHelper: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
 <link rel="prev" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">
 <link rel="next" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -151,7 +151,7 @@
 assumption being that the buffer represents the beginning of the stream or
 file.</p>
 <p>All available typefinders will be called on the data in order of rank. If
-a typefinding function returns a probability of <code class="literal">GST_TYPE_FIND_MAXIMUM</code>,
+a typefinding function returns a probability of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTypeFind.html#GST-TYPE-FIND-MAXIMUM:CAPS"><code class="literal">GST_TYPE_FIND_MAXIMUM</code></a>,
 typefinding is stopped immediately and the found caps will be returned
 right away. Otherwise, all available typefind functions will the tried,
 and the caps with the highest probability will be returned, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
@@ -250,7 +250,7 @@
 assumption being that the data represents the beginning of the stream or
 file.</p>
 <p>All available typefinders will be called on the data in order of rank. If
-a typefinding function returns a probability of <code class="literal">GST_TYPE_FIND_MAXIMUM</code>,
+a typefinding function returns a probability of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTypeFind.html#GST-TYPE-FIND-MAXIMUM:CAPS"><code class="literal">GST_TYPE_FIND_MAXIMUM</code></a>,
 typefinding is stopped immediately and the found caps will be returned
 right away. Otherwise, all available typefind functions will the tried,
 and the caps with the highest probability will be returned, or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
@@ -357,7 +357,6 @@
 <div class="refsect3">
 <a name="id-1.2.4.14.6.6.7"></a><h4>Returns</h4>
 <p> GST_FLOW_OK for success</p>
-<p></p>
 </div>
 </div>
 <hr>
@@ -443,7 +442,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-libs.html b/docs/libs/html/gstreamer-libs.html
index fa27430..8c4bb90 100644
--- a/docs/libs/html/gstreamer-libs.html
+++ b/docs/libs/html/gstreamer-libs.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: Part I. GStreamer Libraries</title>
+<title>Part I. GStreamer Libraries: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="prev" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="next" href="gstreamer-base.html" title="GStreamer Base and Utillity Classes">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -90,7 +90,7 @@
 <span class="refentrytitle"><a href="GstLFOControlSource.html">GstLFOControlSource</a></span><span class="refpurpose"> — LFO control source</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="GstTriggerControlSource.html">GstTriggerControlSource</a></span><span class="refpurpose"> — interpolation control source</span>
+<span class="refentrytitle"><a href="GstTriggerControlSource.html">GstTriggerControlSource</a></span><span class="refpurpose"> — trigger control source</span>
 </dt>
 </dl></dd>
 <dt><span class="chapter"><a href="gstreamer-net.html">GStreamer Network Classes</a></span></dt>
@@ -103,6 +103,9 @@
                     provider.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstNetControlMessageMeta.html">GstNetControlMessageMeta</a></span><span class="refpurpose"> — Network Control Message Meta</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-libs-GstNetTimePacket.html">GstNetTimePacket</a></span><span class="refpurpose"> — Helper structure to construct clock packets used
                     by network clocks.</span>
 </dt>
@@ -110,6 +113,10 @@
 <span class="refentrytitle"><a href="GstNetTimeProvider.html">GstNetTimeProvider</a></span><span class="refpurpose"> — Special object that exposed the time of a clock
                     on the network.</span>
 </dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstPtpClock.html">GstPtpClock</a></span><span class="refpurpose"> — Special clock that synchronizes to a remote time
+                    provider via PTP (IEEE1588:2008).</span>
+</dt>
 </dl></dd>
 <dt><span class="chapter"><a href="gstreamer-check.html">GStreamer Check Unit Testing</a></span></dt>
 <dd><dl>
@@ -123,6 +130,9 @@
 <span class="refentrytitle"><a href="gstreamer-libs-GstStreamConsistency.html">GstStreamConsistency</a></span><span class="refpurpose"> — Data flow consistency checker for GStreamer unit tests.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstHarness.html">GstHarness</a></span><span class="refpurpose"> — A test-harness for writing GStreamer unit tests</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstTestClock.html">GstTestClock</a></span><span class="refpurpose"> — Controllable, deterministic clock for GStreamer unit tests</span>
 </dt>
 </dl></dd>
@@ -137,7 +147,6 @@
     </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-net.html b/docs/libs/html/gstreamer-net.html
index 6991078..7b0957d 100644
--- a/docs/libs/html/gstreamer-net.html
+++ b/docs/libs/html/gstreamer-net.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: GStreamer Network Classes</title>
+<title>GStreamer Network Classes: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
 <link rel="prev" href="GstTriggerControlSource.html" title="GstTriggerControlSource">
 <link rel="next" href="gstreamer-libs-GstNetAddressMeta.html" title="GstNetAddressMeta">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -31,6 +31,9 @@
                     provider.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstNetControlMessageMeta.html">GstNetControlMessageMeta</a></span><span class="refpurpose"> — Network Control Message Meta</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-libs-GstNetTimePacket.html">GstNetTimePacket</a></span><span class="refpurpose"> — Helper structure to construct clock packets used
                     by network clocks.</span>
 </dt>
@@ -38,13 +41,16 @@
 <span class="refentrytitle"><a href="GstNetTimeProvider.html">GstNetTimeProvider</a></span><span class="refpurpose"> — Special object that exposed the time of a clock
                     on the network.</span>
 </dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstPtpClock.html">GstPtpClock</a></span><span class="refpurpose"> — Special clock that synchronizes to a remote time
+                    provider via PTP (IEEE1588:2008).</span>
+</dt>
 </dl></div>
 <p>
         libgstnet-1.0.so provides network elements and objects.
       </p>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 27d8b0e..bf04889 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="next" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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.4.5)
+      for GStreamer Library 1.0 (1.5.91)
       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>
@@ -90,7 +90,7 @@
 <span class="refentrytitle"><a href="GstLFOControlSource.html">GstLFOControlSource</a></span><span class="refpurpose"> — LFO control source</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="GstTriggerControlSource.html">GstTriggerControlSource</a></span><span class="refpurpose"> — interpolation control source</span>
+<span class="refentrytitle"><a href="GstTriggerControlSource.html">GstTriggerControlSource</a></span><span class="refpurpose"> — trigger control source</span>
 </dt>
 </dl></dd>
 <dt><span class="chapter"><a href="gstreamer-net.html">GStreamer Network Classes</a></span></dt>
@@ -103,6 +103,9 @@
                     provider.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstNetControlMessageMeta.html">GstNetControlMessageMeta</a></span><span class="refpurpose"> — Network Control Message Meta</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-libs-GstNetTimePacket.html">GstNetTimePacket</a></span><span class="refpurpose"> — Helper structure to construct clock packets used
                     by network clocks.</span>
 </dt>
@@ -110,6 +113,10 @@
 <span class="refentrytitle"><a href="GstNetTimeProvider.html">GstNetTimeProvider</a></span><span class="refpurpose"> — Special object that exposed the time of a clock
                     on the network.</span>
 </dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstPtpClock.html">GstPtpClock</a></span><span class="refpurpose"> — Special clock that synchronizes to a remote time
+                    provider via PTP (IEEE1588:2008).</span>
+</dt>
 </dl></dd>
 <dt><span class="chapter"><a href="gstreamer-check.html">GStreamer Check Unit Testing</a></span></dt>
 <dd><dl>
@@ -123,18 +130,24 @@
 <span class="refentrytitle"><a href="gstreamer-libs-GstStreamConsistency.html">GstStreamConsistency</a></span><span class="refpurpose"> — Data flow consistency checker for GStreamer unit tests.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-libs-GstHarness.html">GstHarness</a></span><span class="refpurpose"> — A test-harness for writing GStreamer unit tests</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstTestClock.html">GstTestClock</a></span><span class="refpurpose"> — Controllable, deterministic clock for GStreamer unit tests</span>
 </dt>
 </dl></dd>
 </dl></dd>
 <dt><span class="chapter"><a href="gstreamer-hierarchy.html">Object Hierarchy</a></span></dt>
-<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
-<dt><span class="index"><a href="api-index-deprecated.html">Index of deprecated API</a></span></dt>
+<dt><span class="index"><a href="ix01.html">API Index</a></span></dt>
+<dt><span class="index"><a href="ix02.html">Index of deprecated API</a></span></dt>
+<dt><span class="index"><a href="ix03.html">Index of new API in 1.6</a></span></dt>
+<dt><span class="index"><a href="ix04.html">Index of new API in 1.4</a></span></dt>
+<dt><span class="index"><a href="ix05.html">Index of new API in 1.2</a></span></dt>
+<dt><span class="index"><a href="ix06.html">Index of new API in 1.0.1</a></span></dt>
 <dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
 </dl></div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/index.sgml b/docs/libs/html/index.sgml
index df8cfa0..b809ca4 100644
--- a/docs/libs/html/index.sgml
+++ b/docs/libs/html/index.sgml
@@ -7,6 +7,7 @@
 <ANCHOR id="GstBaseParse.includes" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.includes">
 <ANCHOR id="GstBaseParse.description" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.description">
 <ANCHOR id="GstBaseParse.functions_details" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.functions_details">
+<ANCHOR id="gst-base-parse-merge-tags" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-merge-tags">
 <ANCHOR id="gst-base-parse-set-duration" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-duration">
 <ANCHOR id="gst-base-parse-set-average-bitrate" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-average-bitrate">
 <ANCHOR id="gst-base-parse-set-min-frame-size" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-min-frame-size">
@@ -36,6 +37,12 @@
 <ANCHOR id="GstBaseParseClass" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParseClass">
 <ANCHOR id="GstBaseParseFrame" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParseFrame">
 <ANCHOR id="GstBaseParseFrameFlags" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParseFrameFlags">
+<ANCHOR id="GST-BASE-PARSE-FRAME-FLAG-NONE:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-NONE:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FRAME-FLAG-NEW-FRAME:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-NEW-FRAME:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FRAME-FLAG-NO-FRAME:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-NO-FRAME:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FRAME-FLAG-CLIP:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-CLIP:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FRAME-FLAG-DROP:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-DROP:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FRAME-FLAG-QUEUE:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-QUEUE:CAPS">
 <ANCHOR id="GST-BASE-PARSE-FLOW-DROPPED:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS">
 <ANCHOR id="GstBaseParse.property-details" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.property-details">
 <ANCHOR id="GstBaseParse--disable-passthrough" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse--disable-passthrough">
@@ -74,6 +81,9 @@
 <ANCHOR id="GstBaseSrc-struct" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc-struct">
 <ANCHOR id="GstBaseSrcClass" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrcClass">
 <ANCHOR id="GstBaseSrcFlags" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrcFlags">
+<ANCHOR id="GST-BASE-SRC-FLAG-STARTING:CAPS" href="gstreamer-libs-1.0/GstBaseSrc.html#GST-BASE-SRC-FLAG-STARTING:CAPS">
+<ANCHOR id="GST-BASE-SRC-FLAG-STARTED:CAPS" href="gstreamer-libs-1.0/GstBaseSrc.html#GST-BASE-SRC-FLAG-STARTED:CAPS">
+<ANCHOR id="GST-BASE-SRC-FLAG-LAST:CAPS" href="gstreamer-libs-1.0/GstBaseSrc.html#GST-BASE-SRC-FLAG-LAST:CAPS">
 <ANCHOR id="GstBaseSrc.property-details" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc.property-details">
 <ANCHOR id="GstBaseSrc--blocksize" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc--blocksize">
 <ANCHOR id="GstBaseSrc--do-timestamp" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc--do-timestamp">
@@ -162,6 +172,7 @@
 <ANCHOR id="gst-base-transform-get-buffer-pool" href="gstreamer-libs-1.0/GstBaseTransform.html#gst-base-transform-get-buffer-pool">
 <ANCHOR id="gst-base-transform-reconfigure-sink" href="gstreamer-libs-1.0/GstBaseTransform.html#gst-base-transform-reconfigure-sink">
 <ANCHOR id="gst-base-transform-reconfigure-src" href="gstreamer-libs-1.0/GstBaseTransform.html#gst-base-transform-reconfigure-src">
+<ANCHOR id="gst-base-transform-update-src-caps" href="gstreamer-libs-1.0/GstBaseTransform.html#gst-base-transform-update-src-caps">
 <ANCHOR id="GST-BASE-TRANSFORM-SINK-PAD:CAPS" href="gstreamer-libs-1.0/GstBaseTransform.html#GST-BASE-TRANSFORM-SINK-PAD:CAPS">
 <ANCHOR id="GST-BASE-TRANSFORM-SRC-PAD:CAPS" href="gstreamer-libs-1.0/GstBaseTransform.html#GST-BASE-TRANSFORM-SRC-PAD:CAPS">
 <ANCHOR id="GstBaseTransform.other_details" href="gstreamer-libs-1.0/GstBaseTransform.html#GstBaseTransform.other_details">
@@ -202,8 +213,13 @@
 <ANCHOR id="gst-adapter-available-fast" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-available-fast">
 <ANCHOR id="gst-adapter-take" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-take">
 <ANCHOR id="gst-adapter-take-buffer" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-take-buffer">
+<ANCHOR id="gst-adapter-get-buffer" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-get-buffer">
 <ANCHOR id="gst-adapter-take-buffer-fast" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-take-buffer-fast">
+<ANCHOR id="gst-adapter-get-buffer-fast" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-get-buffer-fast">
 <ANCHOR id="gst-adapter-take-list" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-take-list">
+<ANCHOR id="gst-adapter-get-list" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-get-list">
+<ANCHOR id="gst-adapter-take-buffer-list" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-take-buffer-list">
+<ANCHOR id="gst-adapter-get-buffer-list" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-get-buffer-list">
 <ANCHOR id="gst-adapter-prev-pts" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-prev-pts">
 <ANCHOR id="gst-adapter-prev-dts" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-prev-dts">
 <ANCHOR id="gst-adapter-prev-pts-at-offset" href="gstreamer-libs-1.0/GstAdapter.html#gst-adapter-prev-pts-at-offset">
@@ -258,6 +274,8 @@
 <ANCHOR id="gst-byte-reader-new" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-new">
 <ANCHOR id="gst-byte-reader-free" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-free">
 <ANCHOR id="gst-byte-reader-init" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-init">
+<ANCHOR id="gst-byte-reader-peek-sub-reader" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-sub-reader">
+<ANCHOR id="gst-byte-reader-get-sub-reader" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-get-sub-reader">
 <ANCHOR id="gst-byte-reader-get-pos" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-get-pos">
 <ANCHOR id="gst-byte-reader-get-remaining" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-get-remaining">
 <ANCHOR id="gst-byte-reader-set-pos" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-set-pos">
@@ -311,6 +329,7 @@
 <ANCHOR id="gst-byte-reader-dup-data" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-dup-data">
 <ANCHOR id="gst-byte-reader-peek-data" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-data">
 <ANCHOR id="gst-byte-reader-masked-scan-uint32" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32">
+<ANCHOR id="gst-byte-reader-masked-scan-uint32-peek" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32-peek">
 <ANCHOR id="gst-byte-reader-get-string" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-get-string">
 <ANCHOR id="gst-byte-reader-get-string-utf8" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-get-string-utf8">
 <ANCHOR id="gst-byte-reader-peek-string" href="gstreamer-libs-1.0/gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-string">
@@ -474,6 +493,8 @@
 <ANCHOR id="GST-COLLECT-PADS-GET-STREAM-LOCK:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-GET-STREAM-LOCK:CAPS">
 <ANCHOR id="GST-COLLECT-PADS-STREAM-LOCK:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STREAM-LOCK:CAPS">
 <ANCHOR id="GST-COLLECT-PADS-STREAM-UNLOCK:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STREAM-UNLOCK:CAPS">
+<ANCHOR id="GST-COLLECT-PADS-DTS:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-DTS:CAPS">
+<ANCHOR id="GST-COLLECT-PADS-DTS-IS-VALID:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-DTS-IS-VALID:CAPS">
 <ANCHOR id="gst-collect-pads-new" href="gstreamer-libs-1.0/GstCollectPads.html#gst-collect-pads-new">
 <ANCHOR id="gst-collect-pads-add-pad" href="gstreamer-libs-1.0/GstCollectPads.html#gst-collect-pads-add-pad">
 <ANCHOR id="gst-collect-pads-remove-pad" href="gstreamer-libs-1.0/GstCollectPads.html#gst-collect-pads-remove-pad">
@@ -502,8 +523,14 @@
 <ANCHOR id="GstCollectPads-struct" href="gstreamer-libs-1.0/GstCollectPads.html#GstCollectPads-struct">
 <ANCHOR id="GstCollectData" href="gstreamer-libs-1.0/GstCollectPads.html#GstCollectData">
 <ANCHOR id="GstCollectPadsStateFlags" href="gstreamer-libs-1.0/GstCollectPads.html#GstCollectPadsStateFlags">
+<ANCHOR id="GST-COLLECT-PADS-STATE-EOS:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STATE-EOS:CAPS">
+<ANCHOR id="GST-COLLECT-PADS-STATE-FLUSHING:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STATE-FLUSHING:CAPS">
+<ANCHOR id="GST-COLLECT-PADS-STATE-NEW-SEGMENT:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STATE-NEW-SEGMENT:CAPS">
+<ANCHOR id="GST-COLLECT-PADS-STATE-WAITING:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STATE-WAITING:CAPS">
+<ANCHOR id="GST-COLLECT-PADS-STATE-LOCKED:CAPS" href="gstreamer-libs-1.0/GstCollectPads.html#GST-COLLECT-PADS-STATE-LOCKED:CAPS">
 <ANCHOR id="gstreamer-libs-GstFlowCombiner" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html">
 <ANCHOR id="gstreamer-libs-GstFlowCombiner.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gstreamer-libs-GstFlowCombiner.functions">
+<ANCHOR id="gstreamer-libs-GstFlowCombiner.other" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gstreamer-libs-GstFlowCombiner.other">
 <ANCHOR id="gstreamer-libs-GstFlowCombiner.includes" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gstreamer-libs-GstFlowCombiner.includes">
 <ANCHOR id="gstreamer-libs-GstFlowCombiner.description" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gstreamer-libs-GstFlowCombiner.description">
 <ANCHOR id="gstreamer-libs-GstFlowCombiner.functions_details" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gstreamer-libs-GstFlowCombiner.functions_details">
@@ -512,7 +539,9 @@
 <ANCHOR id="gst-flow-combiner-update-flow" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-update-flow">
 <ANCHOR id="gst-flow-combiner-add-pad" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-add-pad">
 <ANCHOR id="gst-flow-combiner-remove-pad" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-remove-pad">
+<ANCHOR id="gst-flow-combiner-clear" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-clear">
 <ANCHOR id="gstreamer-libs-GstFlowCombiner.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#gstreamer-libs-GstFlowCombiner.other_details">
+<ANCHOR id="GstFlowCombiner" href="gstreamer-libs-1.0/gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner">
 <ANCHOR id="gstreamer-libs-GstTypeFindHelper" href="gstreamer-libs-1.0/gstreamer-libs-GstTypeFindHelper.html">
 <ANCHOR id="gstreamer-libs-GstTypeFindHelper.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstTypeFindHelper.html#gstreamer-libs-GstTypeFindHelper.functions">
 <ANCHOR id="gstreamer-libs-GstTypeFindHelper.includes" href="gstreamer-libs-1.0/gstreamer-libs-GstTypeFindHelper.html#gstreamer-libs-GstTypeFindHelper.includes">
@@ -565,6 +594,11 @@
 <ANCHOR id="gst-queue-array-is-empty" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-is-empty">
 <ANCHOR id="gst-queue-array-drop-element" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-element">
 <ANCHOR id="gst-queue-array-find" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-find">
+<ANCHOR id="gst-queue-array-new-for-struct" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-new-for-struct">
+<ANCHOR id="gst-queue-array-push-tail-struct" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-push-tail-struct">
+<ANCHOR id="gst-queue-array-peek-head-struct" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head-struct">
+<ANCHOR id="gst-queue-array-pop-head-struct" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head-struct">
+<ANCHOR id="gst-queue-array-drop-struct" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-struct">
 <ANCHOR id="gstreamer-libs-GstQueueArray.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#gstreamer-libs-GstQueueArray.other_details">
 <ANCHOR id="GstQueueArray" href="gstreamer-libs-1.0/gstreamer-libs-GstQueueArray.html#GstQueueArray">
 <ANCHOR id="GstARGBControlBinding" href="gstreamer-libs-1.0/GstARGBControlBinding.html">
@@ -589,11 +623,14 @@
 <ANCHOR id="GstDirectControlBinding.description" href="gstreamer-libs-1.0/GstDirectControlBinding.html#GstDirectControlBinding.description">
 <ANCHOR id="GstDirectControlBinding.functions_details" href="gstreamer-libs-1.0/GstDirectControlBinding.html#GstDirectControlBinding.functions_details">
 <ANCHOR id="gst-direct-control-binding-new" href="gstreamer-libs-1.0/GstDirectControlBinding.html#gst-direct-control-binding-new">
+<ANCHOR id="gst-direct-control-binding-new-absolute" href="gstreamer-libs-1.0/GstDirectControlBinding.html#gst-direct-control-binding-new-absolute">
 <ANCHOR id="GstDirectControlBinding.other_details" href="gstreamer-libs-1.0/GstDirectControlBinding.html#GstDirectControlBinding.other_details">
 <ANCHOR id="GstDirectControlBinding.property-details" href="gstreamer-libs-1.0/GstDirectControlBinding.html#GstDirectControlBinding.property-details">
+<ANCHOR id="GstDirectControlBinding--absolute" href="gstreamer-libs-1.0/GstDirectControlBinding.html#GstDirectControlBinding--absolute">
 <ANCHOR id="GstDirectControlBinding--control-source" href="gstreamer-libs-1.0/GstDirectControlBinding.html#GstDirectControlBinding--control-source">
 <ANCHOR id="GstTimedValueControlSource" href="gstreamer-libs-1.0/GstTimedValueControlSource.html">
 <ANCHOR id="GstTimedValueControlSource.functions" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.functions">
+<ANCHOR id="GstTimedValueControlSource.signals" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.signals">
 <ANCHOR id="GstTimedValueControlSource.other" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.other">
 <ANCHOR id="GstTimedValueControlSource.object-hierarchy" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.object-hierarchy">
 <ANCHOR id="GstTimedValueControlSource.includes" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.includes">
@@ -609,6 +646,11 @@
 <ANCHOR id="gst-timed-value-control-invalidate-cache" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#gst-timed-value-control-invalidate-cache">
 <ANCHOR id="GstTimedValueControlSource.other_details" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.other_details">
 <ANCHOR id="GstTimedValueControlSource-struct" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource-struct">
+<ANCHOR id="GstControlPoint" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstControlPoint">
+<ANCHOR id="GstTimedValueControlSource.signal-details" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource.signal-details">
+<ANCHOR id="GstTimedValueControlSource-value-added" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource-value-added">
+<ANCHOR id="GstTimedValueControlSource-value-changed" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource-value-changed">
+<ANCHOR id="GstTimedValueControlSource-value-removed" href="gstreamer-libs-1.0/GstTimedValueControlSource.html#GstTimedValueControlSource-value-removed">
 <ANCHOR id="GstInterpolationControlSource" href="gstreamer-libs-1.0/GstInterpolationControlSource.html">
 <ANCHOR id="GstInterpolationControlSource.functions" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationControlSource.functions">
 <ANCHOR id="GstInterpolationControlSource.properties" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationControlSource.properties">
@@ -621,6 +663,9 @@
 <ANCHOR id="GstInterpolationControlSource.other_details" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationControlSource.other_details">
 <ANCHOR id="GstInterpolationControlSource-struct" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationControlSource-struct">
 <ANCHOR id="GstInterpolationMode" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationMode">
+<ANCHOR id="GST-INTERPOLATION-MODE-NONE:CAPS" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GST-INTERPOLATION-MODE-NONE:CAPS">
+<ANCHOR id="GST-INTERPOLATION-MODE-LINEAR:CAPS" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GST-INTERPOLATION-MODE-LINEAR:CAPS">
+<ANCHOR id="GST-INTERPOLATION-MODE-CUBIC:CAPS" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GST-INTERPOLATION-MODE-CUBIC:CAPS">
 <ANCHOR id="GstInterpolationControlSource.property-details" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationControlSource.property-details">
 <ANCHOR id="GstInterpolationControlSource--mode" href="gstreamer-libs-1.0/GstInterpolationControlSource.html#GstInterpolationControlSource--mode">
 <ANCHOR id="GstLFOControlSource" href="gstreamer-libs-1.0/GstLFOControlSource.html">
@@ -635,6 +680,11 @@
 <ANCHOR id="GstLFOControlSource.other_details" href="gstreamer-libs-1.0/GstLFOControlSource.html#GstLFOControlSource.other_details">
 <ANCHOR id="GstLFOControlSource-struct" href="gstreamer-libs-1.0/GstLFOControlSource.html#GstLFOControlSource-struct">
 <ANCHOR id="GstLFOWaveform" href="gstreamer-libs-1.0/GstLFOControlSource.html#GstLFOWaveform">
+<ANCHOR id="GST-LFO-WAVEFORM-SINE:CAPS" href="gstreamer-libs-1.0/GstLFOControlSource.html#GST-LFO-WAVEFORM-SINE:CAPS">
+<ANCHOR id="GST-LFO-WAVEFORM-SQUARE:CAPS" href="gstreamer-libs-1.0/GstLFOControlSource.html#GST-LFO-WAVEFORM-SQUARE:CAPS">
+<ANCHOR id="GST-LFO-WAVEFORM-SAW:CAPS" href="gstreamer-libs-1.0/GstLFOControlSource.html#GST-LFO-WAVEFORM-SAW:CAPS">
+<ANCHOR id="GST-LFO-WAVEFORM-REVERSE-SAW:CAPS" href="gstreamer-libs-1.0/GstLFOControlSource.html#GST-LFO-WAVEFORM-REVERSE-SAW:CAPS">
+<ANCHOR id="GST-LFO-WAVEFORM-TRIANGLE:CAPS" href="gstreamer-libs-1.0/GstLFOControlSource.html#GST-LFO-WAVEFORM-TRIANGLE:CAPS">
 <ANCHOR id="GstLFOControlSource.property-details" href="gstreamer-libs-1.0/GstLFOControlSource.html#GstLFOControlSource.property-details">
 <ANCHOR id="GstLFOControlSource--amplitude" href="gstreamer-libs-1.0/GstLFOControlSource.html#GstLFOControlSource--amplitude">
 <ANCHOR id="GstLFOControlSource--frequency" href="gstreamer-libs-1.0/GstLFOControlSource.html#GstLFOControlSource--frequency">
@@ -675,13 +725,30 @@
 <ANCHOR id="GstNetClientClock.description" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock.description">
 <ANCHOR id="GstNetClientClock.functions_details" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock.functions_details">
 <ANCHOR id="gst-net-client-clock-new" href="gstreamer-libs-1.0/GstNetClientClock.html#gst-net-client-clock-new">
+<ANCHOR id="gst-ntp-clock-new" href="gstreamer-libs-1.0/GstNetClientClock.html#gst-ntp-clock-new">
 <ANCHOR id="GstNetClientClock.other_details" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock.other_details">
 <ANCHOR id="GstNetClientClock-struct" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock-struct">
+<ANCHOR id="GstNtpClock" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNtpClock">
 <ANCHOR id="GstNetClientClock.property-details" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock.property-details">
 <ANCHOR id="GstNetClientClock--address" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--address">
+<ANCHOR id="GstNetClientClock--base-time" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--base-time">
+<ANCHOR id="GstNetClientClock--bus" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--bus">
+<ANCHOR id="GstNetClientClock--internal-clock" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--internal-clock">
+<ANCHOR id="GstNetClientClock--minimum-update-interval" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--minimum-update-interval">
 <ANCHOR id="GstNetClientClock--port" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--port">
 <ANCHOR id="GstNetClientClock--round-trip-limit" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock--round-trip-limit">
 <ANCHOR id="GstNetClientClock.see-also" href="gstreamer-libs-1.0/GstNetClientClock.html#GstNetClientClock.see-also">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gstreamer-libs-GstNetControlMessageMeta.functions">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta.other" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gstreamer-libs-GstNetControlMessageMeta.other">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta.includes" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gstreamer-libs-GstNetControlMessageMeta.includes">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta.description" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gstreamer-libs-GstNetControlMessageMeta.description">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta.functions_details" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gstreamer-libs-GstNetControlMessageMeta.functions_details">
+<ANCHOR id="gst-buffer-add-net-control-message-meta" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-add-net-control-message-meta">
+<ANCHOR id="gst-buffer-get-net-control-message-meta" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-get-net-control-message-meta">
+<ANCHOR id="gst-net-control-message-meta-get-info" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gst-net-control-message-meta-get-info">
+<ANCHOR id="gstreamer-libs-GstNetControlMessageMeta.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#gstreamer-libs-GstNetControlMessageMeta.other_details">
+<ANCHOR id="GstNetControlMessageMeta" href="gstreamer-libs-1.0/gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta">
 <ANCHOR id="gstreamer-libs-GstNetTimePacket" href="gstreamer-libs-1.0/gstreamer-libs-GstNetTimePacket.html">
 <ANCHOR id="gstreamer-libs-GstNetTimePacket.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstNetTimePacket.html#gstreamer-libs-GstNetTimePacket.functions">
 <ANCHOR id="gstreamer-libs-GstNetTimePacket.other" href="gstreamer-libs-1.0/gstreamer-libs-GstNetTimePacket.html#gstreamer-libs-GstNetTimePacket.other">
@@ -715,6 +782,24 @@
 <ANCHOR id="GstNetTimeProvider--clock" href="gstreamer-libs-1.0/GstNetTimeProvider.html#GstNetTimeProvider--clock">
 <ANCHOR id="GstNetTimeProvider--port" href="gstreamer-libs-1.0/GstNetTimeProvider.html#GstNetTimeProvider--port">
 <ANCHOR id="GstNetTimeProvider.see-also" href="gstreamer-libs-1.0/GstNetTimeProvider.html#GstNetTimeProvider.see-also">
+<ANCHOR id="gstreamer-libs-GstPtpClock" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html">
+<ANCHOR id="gstreamer-libs-GstPtpClock.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.functions">
+<ANCHOR id="gstreamer-libs-GstPtpClock.other" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.other">
+<ANCHOR id="gstreamer-libs-GstPtpClock.includes" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.includes">
+<ANCHOR id="gstreamer-libs-GstPtpClock.description" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.description">
+<ANCHOR id="gstreamer-libs-GstPtpClock.functions_details" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.functions_details">
+<ANCHOR id="GST-PTP-CLOCK-ID-NONE:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#GST-PTP-CLOCK-ID-NONE:CAPS">
+<ANCHOR id="gst-ptp-init" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-init">
+<ANCHOR id="gst-ptp-deinit" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-deinit">
+<ANCHOR id="gst-ptp-is-initialized" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-is-initialized">
+<ANCHOR id="gst-ptp-is-supported" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-is-supported">
+<ANCHOR id="gst-ptp-clock-new" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-clock-new">
+<ANCHOR id="GstPtpStatisticsCallback" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#GstPtpStatisticsCallback">
+<ANCHOR id="gst-ptp-statistics-callback-add" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add">
+<ANCHOR id="gst-ptp-statistics-callback-remove" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-remove">
+<ANCHOR id="gstreamer-libs-GstPtpClock.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.other_details">
+<ANCHOR id="GstPtpClock" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#GstPtpClock">
+<ANCHOR id="gstreamer-libs-GstPtpClock.see-also" href="gstreamer-libs-1.0/gstreamer-libs-GstPtpClock.html#gstreamer-libs-GstPtpClock.see-also">
 <ANCHOR id="gstreamer-libs-GstCheck" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html">
 <ANCHOR id="gstreamer-libs-GstCheck.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gstreamer-libs-GstCheck.functions">
 <ANCHOR id="gstreamer-libs-GstCheck.other" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gstreamer-libs-GstCheck.other">
@@ -773,6 +858,8 @@
 <ANCHOR id="gst-check-setup-sink-pad-from-template" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gst-check-setup-sink-pad-from-template">
 <ANCHOR id="gst-check-setup-src-pad-by-name-from-template" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-by-name-from-template">
 <ANCHOR id="gst-check-setup-src-pad-from-template" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-from-template">
+<ANCHOR id="gst-check-objects-destroyed-on-unref" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gst-check-objects-destroyed-on-unref">
+<ANCHOR id="gst-check-object-destroyed-on-unref" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gst-check-object-destroyed-on-unref">
 <ANCHOR id="gstreamer-libs-GstCheck.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#gstreamer-libs-GstCheck.other_details">
 <ANCHOR id="GST-END-TEST:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstCheck.html#GST-END-TEST:CAPS">
 <ANCHOR id="gstreamer-libs-GstBufferStraw" href="gstreamer-libs-1.0/gstreamer-libs-GstBufferStraw.html">
@@ -796,6 +883,97 @@
 <ANCHOR id="gst-consistency-checker-add-pad" href="gstreamer-libs-1.0/gstreamer-libs-GstStreamConsistency.html#gst-consistency-checker-add-pad">
 <ANCHOR id="gstreamer-libs-GstStreamConsistency.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstStreamConsistency.html#gstreamer-libs-GstStreamConsistency.other_details">
 <ANCHOR id="GstStreamConsistency" href="gstreamer-libs-1.0/gstreamer-libs-GstStreamConsistency.html#GstStreamConsistency">
+<ANCHOR id="gstreamer-libs-GstHarness" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html">
+<ANCHOR id="gstreamer-libs-GstHarness.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.functions">
+<ANCHOR id="gstreamer-libs-GstHarness.other" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.other">
+<ANCHOR id="gstreamer-libs-GstHarness.includes" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.includes">
+<ANCHOR id="gstreamer-libs-GstHarness.description" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.description">
+<ANCHOR id="gstreamer-libs-GstHarness.functions_details" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.functions_details">
+<ANCHOR id="gst-harness-new-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-new-full">
+<ANCHOR id="gst-harness-new-with-element" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-new-with-element">
+<ANCHOR id="gst-harness-new-with-padnames" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-new-with-padnames">
+<ANCHOR id="gst-harness-new-with-templates" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-new-with-templates">
+<ANCHOR id="gst-harness-new" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-new">
+<ANCHOR id="gst-harness-new-parse" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-new-parse">
+<ANCHOR id="gst-harness-teardown" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-teardown">
+<ANCHOR id="gst-harness-add-element-src-pad" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-element-src-pad">
+<ANCHOR id="gst-harness-add-element-sink-pad" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-element-sink-pad">
+<ANCHOR id="gst-harness-set-src-caps" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-src-caps">
+<ANCHOR id="gst-harness-set-sink-caps" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps">
+<ANCHOR id="gst-harness-set-caps" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-caps">
+<ANCHOR id="gst-harness-set-src-caps-str" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-src-caps-str">
+<ANCHOR id="gst-harness-set-sink-caps-str" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps-str">
+<ANCHOR id="gst-harness-set-caps-str" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-caps-str">
+<ANCHOR id="gst-harness-use-systemclock" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-use-systemclock">
+<ANCHOR id="gst-harness-use-testclock" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-use-testclock">
+<ANCHOR id="gst-harness-get-testclock" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-get-testclock">
+<ANCHOR id="gst-harness-set-time" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-time">
+<ANCHOR id="gst-harness-wait-for-clock-id-waits" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-wait-for-clock-id-waits">
+<ANCHOR id="gst-harness-crank-single-clock-wait" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-crank-single-clock-wait">
+<ANCHOR id="gst-harness-crank-multiple-clock-waits" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-crank-multiple-clock-waits">
+<ANCHOR id="gst-harness-play" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-play">
+<ANCHOR id="gst-harness-set-blocking-push-mode" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-blocking-push-mode">
+<ANCHOR id="gst-harness-set-forwarding" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-forwarding">
+<ANCHOR id="gst-harness-create-buffer" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-create-buffer">
+<ANCHOR id="gst-harness-push" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-push">
+<ANCHOR id="gst-harness-pull" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-pull">
+<ANCHOR id="gst-harness-try-pull" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-try-pull">
+<ANCHOR id="gst-harness-push-and-pull" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-push-and-pull">
+<ANCHOR id="gst-harness-buffers-received" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-buffers-received">
+<ANCHOR id="gst-harness-buffers-in-queue" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-buffers-in-queue">
+<ANCHOR id="gst-harness-set-drop-buffers" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-drop-buffers">
+<ANCHOR id="gst-harness-dump-to-file" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-dump-to-file">
+<ANCHOR id="gst-harness-get-last-pushed-timestamp" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-get-last-pushed-timestamp">
+<ANCHOR id="gst-harness-push-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-push-event">
+<ANCHOR id="gst-harness-pull-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-pull-event">
+<ANCHOR id="gst-harness-try-pull-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-try-pull-event">
+<ANCHOR id="gst-harness-events-received" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-events-received">
+<ANCHOR id="gst-harness-events-in-queue" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-events-in-queue">
+<ANCHOR id="gst-harness-push-upstream-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-push-upstream-event">
+<ANCHOR id="gst-harness-pull-upstream-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-pull-upstream-event">
+<ANCHOR id="gst-harness-try-pull-upstream-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-try-pull-upstream-event">
+<ANCHOR id="gst-harness-upstream-events-received" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-upstream-events-received">
+<ANCHOR id="gst-harness-upstream-events-in-queue" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-upstream-events-in-queue">
+<ANCHOR id="gst-harness-query-latency" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-query-latency">
+<ANCHOR id="gst-harness-set-upstream-latency" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-upstream-latency">
+<ANCHOR id="gst-harness-set-propose-allocator" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set-propose-allocator">
+<ANCHOR id="gst-harness-get-allocator" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-get-allocator">
+<ANCHOR id="gst-harness-add-src" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-src">
+<ANCHOR id="gst-harness-add-src-harness" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-src-harness">
+<ANCHOR id="gst-harness-add-src-parse" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-src-parse">
+<ANCHOR id="gst-harness-push-from-src" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-push-from-src">
+<ANCHOR id="gst-harness-src-crank-and-push-many" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-src-crank-and-push-many">
+<ANCHOR id="gst-harness-src-push-event" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-src-push-event">
+<ANCHOR id="gst-harness-add-sink" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-sink">
+<ANCHOR id="gst-harness-add-sink-harness" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-sink-harness">
+<ANCHOR id="gst-harness-add-sink-parse" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-sink-parse">
+<ANCHOR id="gst-harness-push-to-sink" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-push-to-sink">
+<ANCHOR id="gst-harness-sink-push-many" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-sink-push-many">
+<ANCHOR id="gst-harness-find-element" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-find-element">
+<ANCHOR id="gst-harness-set" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-set">
+<ANCHOR id="gst-harness-get" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-get">
+<ANCHOR id="gst-harness-add-probe" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-add-probe">
+<ANCHOR id="gst-harness-stress-thread-stop" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-thread-stop">
+<ANCHOR id="gst-harness-stress-custom-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-custom-start">
+<ANCHOR id="gst-harness-stress-statechange-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start">
+<ANCHOR id="gst-harness-stress-statechange-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start-full">
+<ANCHOR id="gst-harness-stress-push-buffer-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start">
+<ANCHOR id="gst-harness-stress-push-buffer-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start-full">
+<ANCHOR id="GstHarnessPrepareBufferFunc" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc">
+<ANCHOR id="gst-harness-stress-push-buffer-with-cb-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start">
+<ANCHOR id="gst-harness-stress-push-buffer-with-cb-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start-full">
+<ANCHOR id="gst-harness-stress-push-event-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start">
+<ANCHOR id="gst-harness-stress-push-event-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start-full">
+<ANCHOR id="gst-harness-stress-send-upstream-event-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-send-upstream-event-start">
+<ANCHOR id="gst-harness-stress-push-upstream-event-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-push-upstream-event-start-full">
+<ANCHOR id="gst-harness-stress-property-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-property-start">
+<ANCHOR id="gst-harness-stress-property-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-property-start-full">
+<ANCHOR id="gst-harness-stress-requestpad-start" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start">
+<ANCHOR id="gst-harness-stress-requestpad-start-full" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start-full">
+<ANCHOR id="gstreamer-libs-GstHarness.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.other_details">
+<ANCHOR id="GstHarness" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#GstHarness">
+<ANCHOR id="GstHarnessThread" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#GstHarnessThread">
+<ANCHOR id="gstreamer-libs-GstHarness.see-also" href="gstreamer-libs-1.0/gstreamer-libs-GstHarness.html#gstreamer-libs-GstHarness.see-also">
 <ANCHOR id="GstTestClock" href="gstreamer-libs-1.0/GstTestClock.html">
 <ANCHOR id="GstTestClock.functions" href="gstreamer-libs-1.0/GstTestClock.html#GstTestClock.functions">
 <ANCHOR id="GstTestClock.properties" href="gstreamer-libs-1.0/GstTestClock.html#GstTestClock.properties">
@@ -832,8 +1010,10 @@
 <ANCHOR id="annotation-glossterm-nullable" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-nullable">
 <ANCHOR id="annotation-glossterm-out" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-out">
 <ANCHOR id="annotation-glossterm-out caller-allocates" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-out caller-allocates">
+<ANCHOR id="annotation-glossterm-rename-to" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-rename-to">
 <ANCHOR id="annotation-glossterm-scope async" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-scope async">
 <ANCHOR id="annotation-glossterm-scope call" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-scope call">
+<ANCHOR id="annotation-glossterm-skip" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-skip">
 <ANCHOR id="annotation-glossterm-transfer container" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-transfer container">
 <ANCHOR id="annotation-glossterm-transfer floating" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-transfer floating">
 <ANCHOR id="annotation-glossterm-transfer full" href="gstreamer-libs-1.0/annotation-glossary.html#annotation-glossterm-transfer full">
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/ix01.html
similarity index 81%
rename from docs/libs/html/api-index-full.html
rename to docs/libs/html/ix01.html
index e48d521..e416ff4 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/ix01.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: API Index</title>
+<title>API Index: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="prev" href="gstreamer-hierarchy.html" title="Object Hierarchy">
-<link rel="next" href="api-index-deprecated.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="ix02.html" title="Index of deprecated API">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -25,6 +25,8 @@
                      <span class="dim">|</span> 
                   <a class="shortcut" href="#idxF">F</a>
                      <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxH">H</a>
+                     <span class="dim">|</span> 
                   <a class="shortcut" href="#idxI">I</a>
                      <span class="dim">|</span> 
                   <a class="shortcut" href="#idxL">L</a>
@@ -41,11 +43,11 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
 <td><a accesskey="p" href="gstreamer-hierarchy.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-deprecated.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ix02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="index">
 <div class="titlepage"><div><div><h1 class="title">
-<a name="api-index-full"></a>API Index</h1></div></div></div>
+<a name="id-1.4"></a>API Index</h1></div></div></div>
 <a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
 <dt>
 <a class="link" href="GstAdapter.html#GstAdapter-struct" title="GstAdapter">GstAdapter</a>, struct in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
@@ -76,6 +78,22 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstAdapter.html#gst-adapter-get-buffer" title="gst_adapter_get_buffer ()">gst_adapter_get_buffer</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-get-buffer-fast" title="gst_adapter_get_buffer_fast ()">gst_adapter_get_buffer_fast</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-get-buffer-list" title="gst_adapter_get_buffer_list ()">gst_adapter_get_buffer_list</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-get-list" title="gst_adapter_get_list ()">gst_adapter_get_list</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-map" title="gst_adapter_map ()">gst_adapter_map</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
 </dt>
 <dd></dd>
@@ -124,6 +142,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstAdapter.html#gst-adapter-take-buffer-list" title="gst_adapter_take_buffer_list ()">gst_adapter_take_buffer_list</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-take-list" title="gst_adapter_take_list ()">gst_adapter_take_list</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
 </dt>
 <dd></dd>
@@ -381,6 +403,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBaseParse.html#gst-base-parse-merge-tags" title="gst_base_parse_merge_tags ()">gst_base_parse_merge_tags</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBaseParse.html#gst-base-parse-push-frame" title="gst_base_parse_push_frame ()">gst_base_parse_push_frame</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
@@ -745,6 +771,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBaseTransform.html#gst-base-transform-update-src-caps" title="gst_base_transform_update_src_caps ()">gst_base_transform_update_src_caps</a>, function in <a class="link" href="GstBaseTransform.html" title="GstBaseTransform">GstBaseTransform</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstBitReader.html#GstBitReader" title="GstBitReader">GstBitReader</a>, struct in <a class="link" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">GstBitReader</a>
 </dt>
 <dd></dd>
@@ -865,10 +895,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-add-net-control-message-meta" title="gst_buffer_add_net_control_message_meta ()">gst_buffer_add_net_control_message_meta</a>, function in <a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html" title="GstNetControlMessageMeta">GstNetControlMessageMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstNetAddressMeta.html#gst-buffer-get-net-address-meta" title="gst_buffer_get_net_address_meta()">gst_buffer_get_net_address_meta</a>, macro in <a class="link" href="gstreamer-libs-GstNetAddressMeta.html" title="GstNetAddressMeta">GstNetAddressMeta</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#gst-buffer-get-net-control-message-meta" title="gst_buffer_get_net_control_message_meta()">gst_buffer_get_net_control_message_meta</a>, macro in <a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html" title="GstNetControlMessageMeta">GstNetControlMessageMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstBufferStraw.html#gst-buffer-straw-get-buffer" title="gst_buffer_straw_get_buffer ()">gst_buffer_straw_get_buffer</a>, function in <a class="link" href="gstreamer-libs-GstBufferStraw.html" title="GstBufferStraw">GstBufferStraw</a>
 </dt>
 <dd></dd>
@@ -1049,6 +1087,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-sub-reader" title="gst_byte_reader_get_sub_reader ()">gst_byte_reader_get_sub_reader</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-uint16-be" title="gst_byte_reader_get_uint16_be ()">gst_byte_reader_get_uint16_be</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
@@ -1121,18 +1163,22 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-init" title="gst_byte_reader_init ()">gst_byte_reader_init</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gstreamer-libs-GstByteReader.html#GST-BYTE-READER-INIT:CAPS" title="GST_BYTE_READER_INIT()">GST_BYTE_READER_INIT</a>, macro in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-init" title="gst_byte_reader_init ()">gst_byte_reader_init</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32" title="gst_byte_reader_masked_scan_uint32 ()">gst_byte_reader_masked_scan_uint32</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32-peek" title="gst_byte_reader_masked_scan_uint32_peek ()">gst_byte_reader_masked_scan_uint32_peek</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-new" title="gst_byte_reader_new ()">gst_byte_reader_new</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
@@ -1257,6 +1303,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-sub-reader" title="gst_byte_reader_peek_sub_reader ()">gst_byte_reader_peek_sub_reader</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-uint16-be" title="gst_byte_reader_peek_uint16_be ()">gst_byte_reader_peek_uint16_be</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
@@ -1670,6 +1720,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-objects-destroyed-on-unref" title="gst_check_objects_destroyed_on_unref ()">gst_check_objects_destroyed_on_unref</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-object-destroyed-on-unref" title="gst_check_object_destroyed_on_unref ()">gst_check_object_destroyed_on_unref</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstCheck.html#gst-check-run-suite" title="gst_check_run_suite ()">gst_check_run_suite</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
 </dt>
 <dd></dd>
@@ -1790,6 +1848,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS:CAPS" title="GST_COLLECT_PADS_DTS()">GST_COLLECT_PADS_DTS</a>, macro in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS-IS-VALID:CAPS" title="GST_COLLECT_PADS_DTS_IS_VALID()">GST_COLLECT_PADS_DTS_IS_VALID</a>, macro in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstCollectPads.html#gst-collect-pads-event-default" title="gst_collect_pads_event_default ()">gst_collect_pads_event_default</a>, function in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
 </dt>
 <dd></dd>
@@ -1917,6 +1983,10 @@
 <a class="link" href="gstreamer-libs-GstStreamConsistency.html#gst-consistency-checker-reset" title="gst_consistency_checker_reset ()">gst_consistency_checker_reset</a>, function in <a class="link" href="gstreamer-libs-GstStreamConsistency.html" title="GstStreamConsistency">GstStreamConsistency</a>
 </dt>
 <dd></dd>
+<dt>
+<a class="link" href="GstTimedValueControlSource.html#GstControlPoint" title="struct GstControlPoint">GstControlPoint</a>, struct in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
 <a name="idxD"></a><h3 class="title">D</h3>
 <dt>
 <a class="link" href="gstreamer-libs-GstDataQueue.html#GstDataQueue" title="struct GstDataQueue">GstDataQueue</a>, struct in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
@@ -1991,6 +2061,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstDirectControlBinding.html#GstDirectControlBinding--absolute" title="The “absolute” property">GstDirectControlBinding:absolute</a>, object property in <a class="link" href="GstDirectControlBinding.html" title="GstDirectControlBinding">GstDirectControlBinding</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstDirectControlBinding.html#GstDirectControlBinding--control-source" title="The “control-source” property">GstDirectControlBinding:control-source</a>, object property in <a class="link" href="GstDirectControlBinding.html" title="GstDirectControlBinding">GstDirectControlBinding</a>
 </dt>
 <dd></dd>
@@ -1998,6 +2072,10 @@
 <a class="link" href="GstDirectControlBinding.html#gst-direct-control-binding-new" title="gst_direct_control_binding_new ()">gst_direct_control_binding_new</a>, function in <a class="link" href="GstDirectControlBinding.html" title="GstDirectControlBinding">GstDirectControlBinding</a>
 </dt>
 <dd></dd>
+<dt>
+<a class="link" href="GstDirectControlBinding.html#gst-direct-control-binding-new-absolute" title="gst_direct_control_binding_new_absolute ()">gst_direct_control_binding_new_absolute</a>, function in <a class="link" href="GstDirectControlBinding.html" title="GstDirectControlBinding">GstDirectControlBinding</a>
+</dt>
+<dd></dd>
 <a name="idxE"></a><h3 class="title">E</h3>
 <dt>
 <a class="link" href="gstreamer-libs-GstCheck.html#GST-END-TEST:CAPS" title="GST_END_TEST">GST_END_TEST</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
@@ -2045,10 +2123,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner">GstFlowCombiner</a>, struct in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-add-pad" title="gst_flow_combiner_add_pad ()">gst_flow_combiner_add_pad</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-clear" title="gst_flow_combiner_clear ()">gst_flow_combiner_clear</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-free" title="gst_flow_combiner_free ()">gst_flow_combiner_free</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
 </dt>
 <dd></dd>
@@ -2064,6 +2150,339 @@
 <a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-update-flow" title="gst_flow_combiner_update_flow ()">gst_flow_combiner_update_flow</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
 </dt>
 <dd></dd>
+<a name="idxH"></a><h3 class="title">H</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness">GstHarness</a>, struct in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" title="GstHarnessPrepareBufferFunc ()">GstHarnessPrepareBufferFunc</a>, user_function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread">GstHarnessThread</a>, struct in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-element-sink-pad" title="gst_harness_add_element_sink_pad ()">gst_harness_add_element_sink_pad</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-element-src-pad" title="gst_harness_add_element_src_pad ()">gst_harness_add_element_src_pad</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-probe" title="gst_harness_add_probe ()">gst_harness_add_probe</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-sink" title="gst_harness_add_sink ()">gst_harness_add_sink</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-sink-harness" title="gst_harness_add_sink_harness ()">gst_harness_add_sink_harness</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-sink-parse" title="gst_harness_add_sink_parse ()">gst_harness_add_sink_parse</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-src" title="gst_harness_add_src ()">gst_harness_add_src</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-src-harness" title="gst_harness_add_src_harness ()">gst_harness_add_src_harness</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-src-parse" title="gst_harness_add_src_parse ()">gst_harness_add_src_parse</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-buffers-in-queue" title="gst_harness_buffers_in_queue ()">gst_harness_buffers_in_queue</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-buffers-received" title="gst_harness_buffers_received ()">gst_harness_buffers_received</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-crank-multiple-clock-waits" title="gst_harness_crank_multiple_clock_waits ()">gst_harness_crank_multiple_clock_waits</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-crank-single-clock-wait" title="gst_harness_crank_single_clock_wait ()">gst_harness_crank_single_clock_wait</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-create-buffer" title="gst_harness_create_buffer ()">gst_harness_create_buffer</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-dump-to-file" title="gst_harness_dump_to_file ()">gst_harness_dump_to_file</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-events-in-queue" title="gst_harness_events_in_queue ()">gst_harness_events_in_queue</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-events-received" title="gst_harness_events_received ()">gst_harness_events_received</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-find-element" title="gst_harness_find_element ()">gst_harness_find_element</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get" title="gst_harness_get ()">gst_harness_get</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-allocator" title="gst_harness_get_allocator ()">gst_harness_get_allocator</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-last-pushed-timestamp" title="gst_harness_get_last_pushed_timestamp ()">gst_harness_get_last_pushed_timestamp</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-testclock" title="gst_harness_get_testclock ()">gst_harness_get_testclock</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new" title="gst_harness_new ()">gst_harness_new</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-full" title="gst_harness_new_full ()">gst_harness_new_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-parse" title="gst_harness_new_parse ()">gst_harness_new_parse</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-element" title="gst_harness_new_with_element ()">gst_harness_new_with_element</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-padnames" title="gst_harness_new_with_padnames ()">gst_harness_new_with_padnames</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-templates" title="gst_harness_new_with_templates ()">gst_harness_new_with_templates</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-play" title="gst_harness_play ()">gst_harness_play</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull" title="gst_harness_pull ()">gst_harness_pull</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull-event" title="gst_harness_pull_event ()">gst_harness_pull_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull-upstream-event" title="gst_harness_pull_upstream_event ()">gst_harness_pull_upstream_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push" title="gst_harness_push ()">gst_harness_push</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-and-pull" title="gst_harness_push_and_pull ()">gst_harness_push_and_pull</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-event" title="gst_harness_push_event ()">gst_harness_push_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-from-src" title="gst_harness_push_from_src ()">gst_harness_push_from_src</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-to-sink" title="gst_harness_push_to_sink ()">gst_harness_push_to_sink</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-upstream-event" title="gst_harness_push_upstream_event ()">gst_harness_push_upstream_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-query-latency" title="gst_harness_query_latency ()">gst_harness_query_latency</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set" title="gst_harness_set ()">gst_harness_set</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-blocking-push-mode" title="gst_harness_set_blocking_push_mode ()">gst_harness_set_blocking_push_mode</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-caps" title="gst_harness_set_caps ()">gst_harness_set_caps</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-caps-str" title="gst_harness_set_caps_str ()">gst_harness_set_caps_str</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-drop-buffers" title="gst_harness_set_drop_buffers ()">gst_harness_set_drop_buffers</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-forwarding" title="gst_harness_set_forwarding ()">gst_harness_set_forwarding</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-propose-allocator" title="gst_harness_set_propose_allocator ()">gst_harness_set_propose_allocator</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps" title="gst_harness_set_sink_caps ()">gst_harness_set_sink_caps</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps-str" title="gst_harness_set_sink_caps_str ()">gst_harness_set_sink_caps_str</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-src-caps" title="gst_harness_set_src_caps ()">gst_harness_set_src_caps</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-src-caps-str" title="gst_harness_set_src_caps_str ()">gst_harness_set_src_caps_str</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-time" title="gst_harness_set_time ()">gst_harness_set_time</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-upstream-latency" title="gst_harness_set_upstream_latency ()">gst_harness_set_upstream_latency</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-sink-push-many" title="gst_harness_sink_push_many ()">gst_harness_sink_push_many</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-src-crank-and-push-many" title="gst_harness_src_crank_and_push_many ()">gst_harness_src_crank_and_push_many</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-src-push-event" title="gst_harness_src_push_event ()">gst_harness_src_push_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-custom-start" title="gst_harness_stress_custom_start ()">gst_harness_stress_custom_start</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start" title="gst_harness_stress_property_start()">gst_harness_stress_property_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start-full" title="gst_harness_stress_property_start_full ()">gst_harness_stress_property_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start" title="gst_harness_stress_push_buffer_start()">gst_harness_stress_push_buffer_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start-full" title="gst_harness_stress_push_buffer_start_full ()">gst_harness_stress_push_buffer_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start" title="gst_harness_stress_push_buffer_with_cb_start()">gst_harness_stress_push_buffer_with_cb_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start-full" title="gst_harness_stress_push_buffer_with_cb_start_full ()">gst_harness_stress_push_buffer_with_cb_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start" title="gst_harness_stress_push_event_start()">gst_harness_stress_push_event_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start-full" title="gst_harness_stress_push_event_start_full ()">gst_harness_stress_push_event_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-upstream-event-start-full" title="gst_harness_stress_push_upstream_event_start_full ()">gst_harness_stress_push_upstream_event_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start" title="gst_harness_stress_requestpad_start()">gst_harness_stress_requestpad_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start-full" title="gst_harness_stress_requestpad_start_full ()">gst_harness_stress_requestpad_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-send-upstream-event-start" title="gst_harness_stress_send_upstream_event_start()">gst_harness_stress_send_upstream_event_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start" title="gst_harness_stress_statechange_start()">gst_harness_stress_statechange_start</a>, macro in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start-full" title="gst_harness_stress_statechange_start_full ()">gst_harness_stress_statechange_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-thread-stop" title="gst_harness_stress_thread_stop ()">gst_harness_stress_thread_stop</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-teardown" title="gst_harness_teardown ()">gst_harness_teardown</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull" title="gst_harness_try_pull ()">gst_harness_try_pull</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull-event" title="gst_harness_try_pull_event ()">gst_harness_try_pull_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull-upstream-event" title="gst_harness_try_pull_upstream_event ()">gst_harness_try_pull_upstream_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-in-queue" title="gst_harness_upstream_events_in_queue ()">gst_harness_upstream_events_in_queue</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-received" title="gst_harness_upstream_events_received ()">gst_harness_upstream_events_received</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-use-systemclock" title="gst_harness_use_systemclock ()">gst_harness_use_systemclock</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-use-testclock" title="gst_harness_use_testclock ()">gst_harness_use_testclock</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-wait-for-clock-id-waits" title="gst_harness_wait_for_clock_id_waits ()">gst_harness_wait_for_clock_id_waits</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
 <a name="idxI"></a><h3 class="title">I</h3>
 <dt>
 <a class="link" href="GstInterpolationControlSource.html#GstInterpolationControlSource-struct" title="struct GstInterpolationControlSource">GstInterpolationControlSource</a>, struct in <a class="link" href="GstInterpolationControlSource.html" title="GstInterpolationControlSource">GstInterpolationControlSource</a>
@@ -2128,6 +2547,22 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstNetClientClock.html#GstNetClientClock--base-time" title="The “base-time” property">GstNetClientClock:base-time</a>, object property in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstNetClientClock.html#GstNetClientClock--bus" title="The “bus” property">GstNetClientClock:bus</a>, object property in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstNetClientClock.html#GstNetClientClock--internal-clock" title="The “internal-clock” property">GstNetClientClock:internal-clock</a>, object property in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstNetClientClock.html#GstNetClientClock--minimum-update-interval" title="The “minimum-update-interval” property">GstNetClientClock:minimum-update-interval</a>, object property in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstNetClientClock.html#GstNetClientClock--port" title="The “port” property">GstNetClientClock:port</a>, object property in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
 </dt>
 <dd></dd>
@@ -2136,6 +2571,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#GstNetControlMessageMeta" title="struct GstNetControlMessageMeta">GstNetControlMessageMeta</a>, struct in <a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html" title="GstNetControlMessageMeta">GstNetControlMessageMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstNetTimePacket.html#GstNetTimePacket" title="struct GstNetTimePacket">GstNetTimePacket</a>, struct in <a class="link" href="gstreamer-libs-GstNetTimePacket.html" title="GstNetTimePacket">GstNetTimePacket</a>
 </dt>
 <dd></dd>
@@ -2168,6 +2607,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html#gst-net-control-message-meta-get-info" title="gst_net_control_message_meta_get_info ()">gst_net_control_message_meta_get_info</a>, function in <a class="link" href="gstreamer-libs-GstNetControlMessageMeta.html" title="GstNetControlMessageMeta">GstNetControlMessageMeta</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstNetTimePacket.html#gst-net-time-packet-copy" title="gst_net_time_packet_copy ()">gst_net_time_packet_copy</a>, function in <a class="link" href="gstreamer-libs-GstNetTimePacket.html" title="GstNetTimePacket">GstNetTimePacket</a>
 </dt>
 <dd></dd>
@@ -2199,8 +2642,56 @@
 <a class="link" href="GstNetTimeProvider.html#gst-net-time-provider-new" title="gst_net_time_provider_new ()">gst_net_time_provider_new</a>, function in <a class="link" href="GstNetTimeProvider.html" title="GstNetTimeProvider">GstNetTimeProvider</a>
 </dt>
 <dd></dd>
+<dt>
+<a class="link" href="GstNetClientClock.html#GstNtpClock" title="GstNtpClock">GstNtpClock</a>, typedef in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstNetClientClock.html#gst-ntp-clock-new" title="gst_ntp_clock_new ()">gst_ntp_clock_new</a>, function in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
 <a name="idxP"></a><h3 class="title">P</h3>
 <dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#GstPtpClock" title="struct GstPtpClock">GstPtpClock</a>, struct in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#GstPtpStatisticsCallback" title="GstPtpStatisticsCallback ()">GstPtpStatisticsCallback</a>, user_function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#GST-PTP-CLOCK-ID-NONE:CAPS" title="GST_PTP_CLOCK_ID_NONE">GST_PTP_CLOCK_ID_NONE</a>, macro in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-clock-new" title="gst_ptp_clock_new ()">gst_ptp_clock_new</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-deinit" title="gst_ptp_deinit ()">gst_ptp_deinit</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-init" title="gst_ptp_init ()">gst_ptp_init</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-is-initialized" title="gst_ptp_is_initialized ()">gst_ptp_is_initialized</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-is-supported" title="gst_ptp_is_supported ()">gst_ptp_is_supported</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" title="gst_ptp_statistics_callback_add ()">gst_ptp_statistics_callback_add</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-remove" title="gst_ptp_statistics_callback_remove ()">gst_ptp_statistics_callback_remove</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPushSrc.html#GstPushSrc-struct" title="struct GstPushSrc">GstPushSrc</a>, struct in <a class="link" href="GstPushSrc.html" title="GstPushSrc">GstPushSrc</a>
 </dt>
 <dd></dd>
@@ -2218,6 +2709,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-struct" title="gst_queue_array_drop_struct ()">gst_queue_array_drop_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-find" title="gst_queue_array_find ()">gst_queue_array_find</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
 </dt>
 <dd></dd>
@@ -2238,17 +2733,33 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-new-for-struct" title="gst_queue_array_new_for_struct ()">gst_queue_array_new_for_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head" title="gst_queue_array_peek_head ()">gst_queue_array_peek_head</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head-struct" title="gst_queue_array_peek_head_struct ()">gst_queue_array_peek_head_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head" title="gst_queue_array_pop_head ()">gst_queue_array_pop_head</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head-struct" title="gst_queue_array_pop_head_struct ()">gst_queue_array_pop_head_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-push-tail" title="gst_queue_array_push_tail ()">gst_queue_array_push_tail</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
 </dt>
 <dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-push-tail-struct" title="gst_queue_array_push_tail_struct ()">gst_queue_array_push_tail_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
 <a name="idxS"></a><h3 class="title">S</h3>
 <dt>
 <a class="link" href="gstreamer-libs-GstCheck.html#GST-START-TEST:CAPS" title="GST_START_TEST()">GST_START_TEST</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
@@ -2332,6 +2843,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-added" title="The “value-added” signal">GstTimedValueControlSource::value-added</a>, object signal in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-changed" title="The “value-changed” signal">GstTimedValueControlSource::value-changed</a>, object signal in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-removed" title="The “value-removed” signal">GstTimedValueControlSource::value-removed</a>, object signal in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstTimedValueControlSource.html#gst-timed-value-control-invalidate-cache" title="gst_timed_value_control_invalidate_cache ()">gst_timed_value_control_invalidate_cache</a>, function in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
 </dt>
 <dd></dd>
@@ -2405,7 +2928,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/api-index-deprecated.html b/docs/libs/html/ix02.html
similarity index 68%
rename from docs/libs/html/api-index-deprecated.html
rename to docs/libs/html/ix02.html
index 50d7948..04d4846 100644
--- a/docs/libs/html/api-index-deprecated.html
+++ b/docs/libs/html/ix02.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer 1.0 Library Reference Manual: Index of deprecated API</title>
+<title>Index of deprecated API: GStreamer 1.0 Library Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
-<link rel="prev" href="api-index-full.html" title="API Index">
-<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="prev" href="ix01.html" title="API Index">
+<link rel="next" href="ix03.html" title="Index of new API in 1.6">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,12 +16,12 @@
 <td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="ix01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix03.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="index">
 <div class="titlepage"><div><div><h1 class="title">
-<a name="api-index-deprecated"></a>Index of deprecated API</h1></div></div></div>
+<a name="id-1.5"></a>Index of deprecated API</h1></div></div></div>
 <a name="idx"></a><a name="idxT"></a><h3 class="title">T</h3>
 <dt>
 <a class="link" href="GstTestClock.html#gst-test-clock-wait-for-pending-id-count" title="gst_test_clock_wait_for_pending_id_count ()">gst_test_clock_wait_for_pending_id_count</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
@@ -29,7 +29,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/libs/html/ix03.html b/docs/libs/html/ix03.html
new file mode 100644
index 0000000..3424afb
--- /dev/null
+++ b/docs/libs/html/ix03.html
@@ -0,0 +1,485 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.6: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="prev" href="ix02.html" title="Index of deprecated API">
+<link rel="next" href="ix04.html" title="Index of new API in 1.4">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxB">B</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxC">C</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxD">D</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxF">F</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxH">H</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxN">N</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxP">P</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxQ">Q</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix02.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix04.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.6"></a>Index of new API in 1.6</h1></div></div></div>
+<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
+<dt>
+<a class="link" href="GstAdapter.html#gst-adapter-get-buffer" title="gst_adapter_get_buffer ()">gst_adapter_get_buffer</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-get-buffer-fast" title="gst_adapter_get_buffer_fast ()">gst_adapter_get_buffer_fast</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-get-buffer-list" title="gst_adapter_get_buffer_list ()">gst_adapter_get_buffer_list</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-get-list" title="gst_adapter_get_list ()">gst_adapter_get_list</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-take-buffer-list" title="gst_adapter_take_buffer_list ()">gst_adapter_take_buffer_list</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBaseParse.html#gst-base-parse-merge-tags" title="gst_base_parse_merge_tags ()">gst_base_parse_merge_tags</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBaseTransform.html#gst-base-transform-update-src-caps" title="gst_base_transform_update_src_caps ()">gst_base_transform_update_src_caps</a>, function in <a class="link" href="GstBaseTransform.html" title="GstBaseTransform">GstBaseTransform</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-get-sub-reader" title="gst_byte_reader_get_sub_reader ()">gst_byte_reader_get_sub_reader</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-masked-scan-uint32-peek" title="gst_byte_reader_masked_scan_uint32_peek ()">gst_byte_reader_masked_scan_uint32_peek</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-peek-sub-reader" title="gst_byte_reader_peek_sub_reader ()">gst_byte_reader_peek_sub_reader</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+</dt>
+<dd></dd>
+<a name="idxC"></a><h3 class="title">C</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-objects-destroyed-on-unref" title="gst_check_objects_destroyed_on_unref ()">gst_check_objects_destroyed_on_unref</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-object-destroyed-on-unref" title="gst_check_object_destroyed_on_unref ()">gst_check_object_destroyed_on_unref</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS:CAPS" title="GST_COLLECT_PADS_DTS()">GST_COLLECT_PADS_DTS</a>, macro in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCollectPads.html#GST-COLLECT-PADS-DTS-IS-VALID:CAPS" title="GST_COLLECT_PADS_DTS_IS_VALID()">GST_COLLECT_PADS_DTS_IS_VALID</a>, macro in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<a name="idxD"></a><h3 class="title">D</h3>
+<dt>
+<a class="link" href="GstDirectControlBinding.html#gst-direct-control-binding-new-absolute" title="gst_direct_control_binding_new_absolute ()">gst_direct_control_binding_new_absolute</a>, function in <a class="link" href="GstDirectControlBinding.html" title="GstDirectControlBinding">GstDirectControlBinding</a>
+</dt>
+<dd></dd>
+<a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-clear" title="gst_flow_combiner_clear ()">gst_flow_combiner_clear</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<a name="idxH"></a><h3 class="title">H</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness">GstHarness</a>, struct in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessPrepareBufferFunc" title="GstHarnessPrepareBufferFunc ()">GstHarnessPrepareBufferFunc</a>, user_function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#GstHarnessThread" title="GstHarnessThread">GstHarnessThread</a>, struct in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-element-sink-pad" title="gst_harness_add_element_sink_pad ()">gst_harness_add_element_sink_pad</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-element-src-pad" title="gst_harness_add_element_src_pad ()">gst_harness_add_element_src_pad</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-probe" title="gst_harness_add_probe ()">gst_harness_add_probe</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-sink" title="gst_harness_add_sink ()">gst_harness_add_sink</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-sink-harness" title="gst_harness_add_sink_harness ()">gst_harness_add_sink_harness</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-sink-parse" title="gst_harness_add_sink_parse ()">gst_harness_add_sink_parse</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-src" title="gst_harness_add_src ()">gst_harness_add_src</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-src-harness" title="gst_harness_add_src_harness ()">gst_harness_add_src_harness</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-add-src-parse" title="gst_harness_add_src_parse ()">gst_harness_add_src_parse</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-buffers-in-queue" title="gst_harness_buffers_in_queue ()">gst_harness_buffers_in_queue</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-buffers-received" title="gst_harness_buffers_received ()">gst_harness_buffers_received</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-crank-multiple-clock-waits" title="gst_harness_crank_multiple_clock_waits ()">gst_harness_crank_multiple_clock_waits</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-crank-single-clock-wait" title="gst_harness_crank_single_clock_wait ()">gst_harness_crank_single_clock_wait</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-create-buffer" title="gst_harness_create_buffer ()">gst_harness_create_buffer</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-dump-to-file" title="gst_harness_dump_to_file ()">gst_harness_dump_to_file</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-events-in-queue" title="gst_harness_events_in_queue ()">gst_harness_events_in_queue</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-events-received" title="gst_harness_events_received ()">gst_harness_events_received</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-find-element" title="gst_harness_find_element ()">gst_harness_find_element</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get" title="gst_harness_get ()">gst_harness_get</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-allocator" title="gst_harness_get_allocator ()">gst_harness_get_allocator</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-last-pushed-timestamp" title="gst_harness_get_last_pushed_timestamp ()">gst_harness_get_last_pushed_timestamp</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-get-testclock" title="gst_harness_get_testclock ()">gst_harness_get_testclock</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new" title="gst_harness_new ()">gst_harness_new</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-full" title="gst_harness_new_full ()">gst_harness_new_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-parse" title="gst_harness_new_parse ()">gst_harness_new_parse</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-element" title="gst_harness_new_with_element ()">gst_harness_new_with_element</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-padnames" title="gst_harness_new_with_padnames ()">gst_harness_new_with_padnames</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-new-with-templates" title="gst_harness_new_with_templates ()">gst_harness_new_with_templates</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-play" title="gst_harness_play ()">gst_harness_play</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull" title="gst_harness_pull ()">gst_harness_pull</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull-event" title="gst_harness_pull_event ()">gst_harness_pull_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-pull-upstream-event" title="gst_harness_pull_upstream_event ()">gst_harness_pull_upstream_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push" title="gst_harness_push ()">gst_harness_push</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-and-pull" title="gst_harness_push_and_pull ()">gst_harness_push_and_pull</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-event" title="gst_harness_push_event ()">gst_harness_push_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-from-src" title="gst_harness_push_from_src ()">gst_harness_push_from_src</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-to-sink" title="gst_harness_push_to_sink ()">gst_harness_push_to_sink</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-push-upstream-event" title="gst_harness_push_upstream_event ()">gst_harness_push_upstream_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-query-latency" title="gst_harness_query_latency ()">gst_harness_query_latency</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set" title="gst_harness_set ()">gst_harness_set</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-blocking-push-mode" title="gst_harness_set_blocking_push_mode ()">gst_harness_set_blocking_push_mode</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-caps" title="gst_harness_set_caps ()">gst_harness_set_caps</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-caps-str" title="gst_harness_set_caps_str ()">gst_harness_set_caps_str</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-drop-buffers" title="gst_harness_set_drop_buffers ()">gst_harness_set_drop_buffers</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-forwarding" title="gst_harness_set_forwarding ()">gst_harness_set_forwarding</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-propose-allocator" title="gst_harness_set_propose_allocator ()">gst_harness_set_propose_allocator</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps" title="gst_harness_set_sink_caps ()">gst_harness_set_sink_caps</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-sink-caps-str" title="gst_harness_set_sink_caps_str ()">gst_harness_set_sink_caps_str</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-src-caps" title="gst_harness_set_src_caps ()">gst_harness_set_src_caps</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-src-caps-str" title="gst_harness_set_src_caps_str ()">gst_harness_set_src_caps_str</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-time" title="gst_harness_set_time ()">gst_harness_set_time</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-set-upstream-latency" title="gst_harness_set_upstream_latency ()">gst_harness_set_upstream_latency</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-sink-push-many" title="gst_harness_sink_push_many ()">gst_harness_sink_push_many</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-src-crank-and-push-many" title="gst_harness_src_crank_and_push_many ()">gst_harness_src_crank_and_push_many</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-src-push-event" title="gst_harness_src_push_event ()">gst_harness_src_push_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-custom-start" title="gst_harness_stress_custom_start ()">gst_harness_stress_custom_start</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-property-start-full" title="gst_harness_stress_property_start_full ()">gst_harness_stress_property_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-start-full" title="gst_harness_stress_push_buffer_start_full ()">gst_harness_stress_push_buffer_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-buffer-with-cb-start-full" title="gst_harness_stress_push_buffer_with_cb_start_full ()">gst_harness_stress_push_buffer_with_cb_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-event-start-full" title="gst_harness_stress_push_event_start_full ()">gst_harness_stress_push_event_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-push-upstream-event-start-full" title="gst_harness_stress_push_upstream_event_start_full ()">gst_harness_stress_push_upstream_event_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-requestpad-start-full" title="gst_harness_stress_requestpad_start_full ()">gst_harness_stress_requestpad_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-statechange-start-full" title="gst_harness_stress_statechange_start_full ()">gst_harness_stress_statechange_start_full</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-stress-thread-stop" title="gst_harness_stress_thread_stop ()">gst_harness_stress_thread_stop</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-teardown" title="gst_harness_teardown ()">gst_harness_teardown</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull" title="gst_harness_try_pull ()">gst_harness_try_pull</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull-event" title="gst_harness_try_pull_event ()">gst_harness_try_pull_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-try-pull-upstream-event" title="gst_harness_try_pull_upstream_event ()">gst_harness_try_pull_upstream_event</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-in-queue" title="gst_harness_upstream_events_in_queue ()">gst_harness_upstream_events_in_queue</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-upstream-events-received" title="gst_harness_upstream_events_received ()">gst_harness_upstream_events_received</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-use-systemclock" title="gst_harness_use_systemclock ()">gst_harness_use_systemclock</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-use-testclock" title="gst_harness_use_testclock ()">gst_harness_use_testclock</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstHarness.html#gst-harness-wait-for-clock-id-waits" title="gst_harness_wait_for_clock_id_waits ()">gst_harness_wait_for_clock_id_waits</a>, function in <a class="link" href="gstreamer-libs-GstHarness.html" title="GstHarness">GstHarness</a>
+</dt>
+<dd></dd>
+<a name="idxN"></a><h3 class="title">N</h3>
+<dt>
+<a class="link" href="GstNetClientClock.html#gst-ntp-clock-new" title="gst_ntp_clock_new ()">gst_ntp_clock_new</a>, function in <a class="link" href="GstNetClientClock.html" title="GstNetClientClock">GstNetClientClock</a>
+</dt>
+<dd></dd>
+<a name="idxP"></a><h3 class="title">P</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-clock-new" title="gst_ptp_clock_new ()">gst_ptp_clock_new</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-deinit" title="gst_ptp_deinit ()">gst_ptp_deinit</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-init" title="gst_ptp_init ()">gst_ptp_init</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-is-initialized" title="gst_ptp_is_initialized ()">gst_ptp_is_initialized</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-is-supported" title="gst_ptp_is_supported ()">gst_ptp_is_supported</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-add" title="gst_ptp_statistics_callback_add ()">gst_ptp_statistics_callback_add</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstPtpClock.html#gst-ptp-statistics-callback-remove" title="gst_ptp_statistics_callback_remove ()">gst_ptp_statistics_callback_remove</a>, function in <a class="link" href="gstreamer-libs-GstPtpClock.html" title="GstPtpClock">GstPtpClock</a>
+</dt>
+<dd></dd>
+<a name="idxQ"></a><h3 class="title">Q</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-struct" title="gst_queue_array_drop_struct ()">gst_queue_array_drop_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-new-for-struct" title="gst_queue_array_new_for_struct ()">gst_queue_array_new_for_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head-struct" title="gst_queue_array_peek_head_struct ()">gst_queue_array_peek_head_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head-struct" title="gst_queue_array_pop_head_struct ()">gst_queue_array_pop_head_struct</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-added" title="The “value-added” signal">GstTimedValueControlSource::value-added</a>, object signal in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-changed" title="The “value-changed” signal">GstTimedValueControlSource::value-changed</a>, object signal in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTimedValueControlSource.html#GstTimedValueControlSource-value-removed" title="The “value-removed” signal">GstTimedValueControlSource::value-removed</a>, object signal in <a class="link" href="GstTimedValueControlSource.html" title="GstTimedValueControlSource">GstTimedValueControlSource</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/ix04.html b/docs/libs/html/ix04.html
new file mode 100644
index 0000000..ed68dbc
--- /dev/null
+++ b/docs/libs/html/ix04.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.4: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="prev" href="ix03.html" title="Index of new API in 1.6">
+<link rel="next" href="ix05.html" title="Index of new API in 1.2">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxB">B</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxC">C</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxF">F</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix03.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix05.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.7"></a>Index of new API in 1.4</h1></div></div></div>
+<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
+<dt>
+<a class="link" href="GstAdapter.html#gst-adapter-copy-bytes" title="gst_adapter_copy_bytes ()">gst_adapter_copy_bytes</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBaseSrc.html#gst-base-src-set-automatic-eos" title="gst_base_src_set_automatic_eos ()">gst_base_src_set_automatic_eos</a>, function in <a class="link" href="GstBaseSrc.html" title="GstBaseSrc">GstBaseSrc</a>
+</dt>
+<dd></dd>
+<a name="idxC"></a><h3 class="title">C</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-sink-pad-by-name-from-template" title="gst_check_setup_sink_pad_by_name_from_template ()">gst_check_setup_sink_pad_by_name_from_template</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-sink-pad-from-template" title="gst_check_setup_sink_pad_from_template ()">gst_check_setup_sink_pad_from_template</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-by-name-from-template" title="gst_check_setup_src_pad_by_name_from_template ()">gst_check_setup_src_pad_by_name_from_template</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#gst-check-setup-src-pad-from-template" title="gst_check_setup_src_pad_from_template ()">gst_check_setup_src_pad_from_template</a>, function in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCollectPads.html#GstCollectPadsFlushFunction" title="GstCollectPadsFlushFunction ()">GstCollectPadsFlushFunction</a>, user_function in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCollectPads.html#gst-collect-pads-set-flush-function" title="gst_collect_pads_set_flush_function ()">gst_collect_pads_set_flush_function</a>, function in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstCollectPads.html#gst-collect-pads-src-event-default" title="gst_collect_pads_src_event_default ()">gst_collect_pads_src_event_default</a>, function in <a class="link" href="GstCollectPads.html" title="GstCollectPads">GstCollectPads</a>
+</dt>
+<dd></dd>
+<a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner">GstFlowCombiner</a>, struct in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-add-pad" title="gst_flow_combiner_add_pad ()">gst_flow_combiner_add_pad</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-free" title="gst_flow_combiner_free ()">gst_flow_combiner_free</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-new" title="gst_flow_combiner_new ()">gst_flow_combiner_new</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-remove-pad" title="gst_flow_combiner_remove_pad ()">gst_flow_combiner_remove_pad</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstFlowCombiner.html#gst-flow-combiner-update-flow" title="gst_flow_combiner_update_flow ()">gst_flow_combiner_update_flow</a>, function in <a class="link" href="gstreamer-libs-GstFlowCombiner.html" title="GstFlowCombiner">GstFlowCombiner</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-id-list-get-latest-time" title="gst_test_clock_id_list_get_latest_time ()">gst_test_clock_id_list_get_latest_time</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-process-id-list" title="gst_test_clock_process_id_list ()">gst_test_clock_process_id_list</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-wait-for-multiple-pending-ids" title="gst_test_clock_wait_for_multiple_pending_ids ()">gst_test_clock_wait_for_multiple_pending_ids</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/ix05.html b/docs/libs/html/ix05.html
new file mode 100644
index 0000000..9db370a
--- /dev/null
+++ b/docs/libs/html/ix05.html
@@ -0,0 +1,241 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.2: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="prev" href="ix04.html" title="Index of new API in 1.4">
+<link rel="next" href="ix06.html" title="Index of new API in 1.0.1">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxB">B</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxD">D</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxF">F</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxQ">Q</a>
+                     <span class="dim">|</span> 
+                  <a class="shortcut" href="#idxT">T</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix04.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ix06.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.8"></a>Index of new API in 1.2</h1></div></div></div>
+<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
+<dt>
+<a class="link" href="GstAdapter.html#gst-adapter-prev-dts-at-offset" title="gst_adapter_prev_dts_at_offset ()">gst_adapter_prev_dts_at_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-at-offset" title="gst_adapter_prev_pts_at_offset ()">gst_adapter_prev_pts_at_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-take-buffer-fast" title="gst_adapter_take_buffer_fast ()">gst_adapter_take_buffer_fast</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#assert-equals-int64-hex" title="assert_equals_int64_hex()">assert_equals_int64_hex</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#assert-equals-int-hex" title="assert_equals_int_hex()">assert_equals_int_hex</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#assert-equals-pointer" title="assert_equals_pointer()">assert_equals_pointer</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#assert-equals-uint64-hex" title="assert_equals_uint64_hex()">assert_equals_uint64_hex</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBaseSink.html#GstBaseSink--max-bitrate" title="The “max-bitrate” property">GstBaseSink:max-bitrate</a>, object property in <a class="link" href="GstBaseSink.html" title="GstBaseSink">GstBaseSink</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-ts-at-offset" title="gst_base_parse_set_ts_at_offset ()">gst_base_parse_set_ts_at_offset</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBaseSink.html#gst-base-sink-get-max-bitrate" title="gst_base_sink_get_max_bitrate ()">gst_base_sink_get_max_bitrate</a>, function in <a class="link" href="GstBaseSink.html" title="GstBaseSink">GstBaseSink</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBaseSink.html#gst-base-sink-set-max-bitrate" title="gst_base_sink_set_max_bitrate ()">gst_base_sink_set_max_bitrate</a>, function in <a class="link" href="GstBaseSink.html" title="GstBaseSink">GstBaseSink</a>
+</dt>
+<dd></dd>
+<a name="idxD"></a><h3 class="title">D</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-drop-head" title="gst_data_queue_drop_head ()">gst_data_queue_drop_head</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-flush" title="gst_data_queue_flush ()">gst_data_queue_flush</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-get-level" title="gst_data_queue_get_level ()">gst_data_queue_get_level</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-is-empty" title="gst_data_queue_is_empty ()">gst_data_queue_is_empty</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-is-full" title="gst_data_queue_is_full ()">gst_data_queue_is_full</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-limits-changed" title="gst_data_queue_limits_changed ()">gst_data_queue_limits_changed</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-new" title="gst_data_queue_new ()">gst_data_queue_new</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-peek" title="gst_data_queue_peek ()">gst_data_queue_peek</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-pop" title="gst_data_queue_pop ()">gst_data_queue_pop</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-push" title="gst_data_queue_push ()">gst_data_queue_push</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-push-force" title="gst_data_queue_push_force ()">gst_data_queue_push_force</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstDataQueue.html#gst-data-queue-set-flushing" title="gst_data_queue_set_flushing ()">gst_data_queue_set_flushing</a>, function in <a class="link" href="gstreamer-libs-GstDataQueue.html" title="GstDataQueue">GstDataQueue</a>
+</dt>
+<dd></dd>
+<a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#fail-unless-equals-int64-hex" title="fail_unless_equals_int64_hex()">fail_unless_equals_int64_hex</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#fail-unless-equals-int-hex" title="fail_unless_equals_int_hex()">fail_unless_equals_int_hex</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#fail-unless-equals-pointer" title="fail_unless_equals_pointer()">fail_unless_equals_pointer</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstCheck.html#fail-unless-equals-uint64-hex" title="fail_unless_equals_uint64_hex()">fail_unless_equals_uint64_hex</a>, macro in <a class="link" href="gstreamer-libs-GstCheck.html" title="GstCheck">GstCheck</a>
+</dt>
+<dd></dd>
+<a name="idxQ"></a><h3 class="title">Q</h3>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-drop-element" title="gst_queue_array_drop_element ()">gst_queue_array_drop_element</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-find" title="gst_queue_array_find ()">gst_queue_array_find</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-free" title="gst_queue_array_free ()">gst_queue_array_free</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-get-length" title="gst_queue_array_get_length ()">gst_queue_array_get_length</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-is-empty" title="gst_queue_array_is_empty ()">gst_queue_array_is_empty</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-new" title="gst_queue_array_new ()">gst_queue_array_new</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-peek-head" title="gst_queue_array_peek_head ()">gst_queue_array_peek_head</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-pop-head" title="gst_queue_array_pop_head ()">gst_queue_array_pop_head</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-libs-GstQueueArray.html#gst-queue-array-push-tail" title="gst_queue_array_push_tail ()">gst_queue_array_push_tail</a>, function in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="GstTestClock.html#GstTestClock-struct" title="struct GstTestClock">GstTestClock</a>, struct in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#GstTestClockClass" title="struct GstTestClockClass">GstTestClockClass</a>, struct in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-advance-time" title="gst_test_clock_advance_time ()">gst_test_clock_advance_time</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-get-next-entry-time" title="gst_test_clock_get_next_entry_time ()">gst_test_clock_get_next_entry_time</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-has-id" title="gst_test_clock_has_id ()">gst_test_clock_has_id</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-new" title="gst_test_clock_new ()">gst_test_clock_new</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-new-with-start-time" title="gst_test_clock_new_with_start_time ()">gst_test_clock_new_with_start_time</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-peek-id-count" title="gst_test_clock_peek_id_count ()">gst_test_clock_peek_id_count</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-peek-next-pending-id" title="gst_test_clock_peek_next_pending_id ()">gst_test_clock_peek_next_pending_id</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-process-next-clock-id" title="gst_test_clock_process_next_clock_id ()">gst_test_clock_process_next_clock_id</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-set-time" title="gst_test_clock_set_time ()">gst_test_clock_set_time</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-wait-for-next-pending-id" title="gst_test_clock_wait_for_next_pending_id ()">gst_test_clock_wait_for_next_pending_id</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstTestClock.html#gst-test-clock-wait-for-pending-id-count" title="gst_test_clock_wait_for_pending_id_count ()">gst_test_clock_wait_for_pending_id_count</a>, function in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/ix06.html b/docs/libs/html/ix06.html
new file mode 100644
index 0000000..0d31aff
--- /dev/null
+++ b/docs/libs/html/ix06.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new API in 1.0.1: GStreamer 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="up" href="index.html" title="GStreamer 1.0 Library Reference Manual">
+<link rel="prev" href="ix05.html" title="Index of new API in 1.2">
+<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="ix05.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="id-1.9"></a>Index of new API in 1.0.1</h1></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="GstBaseTransform.html#gst-base-transform-set-prefer-passthrough" title="gst_base_transform_set_prefer_passthrough ()">gst_base_transform_set_prefer_passthrough</a>, function in <a class="link" href="GstBaseTransform.html" title="GstBaseTransform">GstBaseTransform</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/style.css b/docs/libs/html/style.css
index c141ddd..3675420 100644
--- a/docs/libs/html/style.css
+++ b/docs/libs/html/style.css
@@ -60,7 +60,7 @@
 div.informaltable table
 {
   border-collapse: separate;
-  border-spacing: 1em 0.5em;
+  border-spacing: 1em 0.3em;
   border: none;
 }
 
@@ -148,6 +148,8 @@
 h4
 {
   color: #555753;
+  margin-top: 1em;
+  margin-bottom: 1em;
 }
 
 hr
@@ -166,17 +168,16 @@
   padding-bottom: 0.25em;
 }
 
-dl.toc > dd > dl > dt
+dl.toc > dt
 {
   padding-top: 0.25em;
   padding-bottom: 0.25em;
+  font-weight: bold;
 }
 
-dl.toc > dt
+dl.toc > dl
 {
-  padding-top: 1em;
   padding-bottom: 0.5em;
-  font-weight: bold;
 }
 
 .parameter
@@ -346,7 +347,9 @@
 }
 
 @media screen {
-  sup a.footnote
+  /* these have a <sup> as a first child, but since there are no parent selectors
+   * we can't use that. */
+  a.footnote
   {
     position: relative;
     top: 0em ! important;
diff --git a/docs/manual/Makefile.in b/docs/manual/Makefile.in
index b510386..096dda1 100644
--- a/docs/manual/Makefile.in
+++ b/docs/manual/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -37,7 +37,17 @@
 # install directory trees :(
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -101,10 +111,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(srcdir)/../manuals.mak \
-	$(top_srcdir)/common/upload-doc.mak \
-	$(srcdir)/../htmlinstall.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am README
 subdir = docs/manual
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -114,6 +120,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -131,7 +138,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -144,6 +151,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -197,6 +205,9 @@
 am__installdirs = "$(DESTDIR)$(manualdir)"
 DATA = $(manual_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/../htmlinstall.mak \
+	$(srcdir)/../manuals.mak $(srcdir)/Makefile.in \
+	$(top_srcdir)/common/upload-doc.mak README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -208,7 +219,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +315,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +327,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +353,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +415,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +484,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -570,7 +593,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/manual/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/manual/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -579,7 +601,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../manuals.mak $(top_srcdir)/common/upload-doc.mak $(srcdir)/../htmlinstall.mak:
+$(srcdir)/../manuals.mak $(top_srcdir)/common/upload-doc.mak $(srcdir)/../htmlinstall.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -767,6 +789,8 @@
 	ps ps-am tags-am uninstall uninstall-am uninstall-local \
 	uninstall-manualDATA
 
+.PRECIOUS: Makefile
+
 
 ### generate all documentation by default
 # hook in html generation
diff --git a/docs/manual/advanced-buffering.xml b/docs/manual/advanced-buffering.xml
index 72fc96f..7facd85 100644
--- a/docs/manual/advanced-buffering.xml
+++ b/docs/manual/advanced-buffering.xml
@@ -73,7 +73,7 @@
         }
       } else {
         /* buffering busy */
-        if (buffering == FALSE && target_state == GST_STATE_PLAYING) {
+        if (!buffering && target_state == GST_STATE_PLAYING) {
           /* we were not buffering but PLAYING, PAUSE  the pipeline. */
           gst_element_set_state (pipeline, GST_STATE_PAUSED);
         }
@@ -349,7 +349,7 @@
 
   if (percent < 100) {
     /* buffering busy */
-    if (is_buffering == FALSE) {
+    if (!is_buffering) {
       is_buffering = TRUE;
       if (target_state == GST_STATE_PLAYING) {
         /* we were not buffering but PLAYING, PAUSE  the pipeline. */
@@ -364,7 +364,7 @@
 {
   GstElement *pipeline = user_data;
 
-  if (is_buffering == FALSE)
+  if (!is_buffering)
     gst_element_set_state (pipeline, target_state);
   else
     g_timeout_add (500, buffer_timeout, pipeline);
diff --git a/docs/manual/advanced-dataaccess.xml b/docs/manual/advanced-dataaccess.xml
index 7f91986..555d0ba 100644
--- a/docs/manual/advanced-dataaccess.xml
+++ b/docs/manual/advanced-dataaccess.xml
@@ -311,7 +311,6 @@
         the sink element, unblock the source pads and set the pipeline to
         the playing state. You will see that exactly the requested
         region is played by the sink before it goes to EOS.
-        What follows
       </para>
       <para>
         What follows is an example application that loosly follows this
diff --git a/docs/manual/appendix-porting.xml b/docs/manual/appendix-porting.xml
index 0bc1e63..6a8eb09 100644
--- a/docs/manual/appendix-porting.xml
+++ b/docs/manual/appendix-porting.xml
@@ -251,9 +251,13 @@
       </listitem>
       <listitem>
         <para>
-          The GstPropertyProbe interface was removed. the is no replacement yet,
-          but a more featureful replacement for device discovery and feature
-          querying is planned, see https://bugzilla.gnome.org/show_bug.cgi?id=678402
+          The GstPropertyProbe interface was removed. There is no replacement
+          for it in GStreamer 1.0.x and 1.2.x, but since version 1.4 there is
+          a more featureful replacement for device discovery and feature
+          querying provided by GstDeviceMonitor, GstDevice, and friends. See
+          the <ulink type="http"
+          url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-device-probing.html">
+          "GStreamer Device Discovery and Device Probing" documentation</ulink>.
         </para>
       </listitem>
       <listitem>
diff --git a/docs/manual/appendix-programs.xml b/docs/manual/appendix-programs.xml
index b888a17..72eab54 100644
--- a/docs/manual/appendix-programs.xml
+++ b/docs/manual/appendix-programs.xml
@@ -59,6 +59,7 @@
   
   filesrc = gst_bin_get_by_name (GST_BIN (pipeline), "my_filesrc");
   g_object_set (filesrc, "location", argv[1], NULL);
+  g_object_unref (filesrc);
 
   gst_element_set_state (pipeline, GST_STATE_PLAYING);
 
diff --git a/docs/manual/basics-pads.xml b/docs/manual/basics-pads.xml
index 70f949a..edca390 100644
--- a/docs/manual/basics-pads.xml
+++ b/docs/manual/basics-pads.xml
@@ -190,7 +190,7 @@
   sinkname = gst_pad_get_name (pad);
   gst_object_unref (GST_OBJECT (pad));
 
-  g_print ("A new pad %s was created and linked to %s\n", srcname, sinkname);
+  g_print ("A new pad %s was created and linked to %s\n", sinkname, srcname);
   g_free (sinkname);
   g_free (srcname);
 }
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 1bab2b7..30014e4 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -86,9 +86,6 @@
 GTKDOC_CFLAGS = $(GST_OBJ_CFLAGS) -I$(top_builddir) -I$(top_builddir)/libs
 GTKDOC_LIBS = $(GST_OBJ_LIBS)
 
-GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC)
-GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=link $(CC)
-
 # If you need to override some of the declarations, place them in this file
 # and uncomment this line.
 #DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index b11e737..9327733 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,7 +31,17 @@
 # This is an include file specifically tuned for building documentation
 # for GStreamer plug-ins
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -95,9 +105,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(top_srcdir)/common/upload-doc.mak \
-	$(top_srcdir)/common/gtk-doc-plugins.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am
 subdir = docs/plugins
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -107,6 +114,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -124,7 +132,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -137,6 +145,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -161,6 +170,9 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/common/gtk-doc-plugins.mak \
+	$(top_srcdir)/common/upload-doc.mak
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -172,7 +184,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -263,6 +280,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -274,9 +292,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -298,6 +318,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -359,8 +380,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -426,6 +449,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -528,13 +552,17 @@
 # contains GtkObjects/GObjects and you want to document signals and properties.
 GTKDOC_CFLAGS = $(GST_OBJ_CFLAGS) -I$(top_builddir) -I$(top_builddir)/libs
 GTKDOC_LIBS = $(GST_OBJ_LIBS)
-GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC)
-GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC)
 
 # If you need to override some of the declarations, place them in this file
 # and uncomment this line.
 #DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
 DOC_OVERRIDES = 
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = 
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
 
 # We set GPATH here; this gives us semantics for GNU make
 # which are more like other make's VPATH, when it comes to
@@ -564,11 +592,9 @@
 # maintainers and result is commited to git
 DOC_STAMPS = \
 	scan-build.stamp		\
-	tmpl-build.stamp		\
 	sgml-build.stamp		\
 	html-build.stamp		\
 	scan.stamp			\
-	tmpl.stamp			\
 	sgml.stamp			\
 	html.stamp
 
@@ -637,7 +663,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/plugins/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/plugins/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -646,7 +671,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc-plugins.mak:
+$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc-plugins.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -817,6 +842,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags-am uninstall uninstall-am uninstall-local
 
+.PRECIOUS: Makefile
+
 html: html-build.stamp
 
 upload: $(FORMATS)
@@ -904,7 +931,7 @@
 @ENABLE_GTK_DOC_TRUE@	    scanobj_options="--verbose"; \
 @ENABLE_GTK_DOC_TRUE@	fi; \
 @ENABLE_GTK_DOC_TRUE@	$(INSPECT_ENVIRONMENT) 					\
-@ENABLE_GTK_DOC_TRUE@	CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"				\
+@ENABLE_GTK_DOC_TRUE@	CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)"	\
 @ENABLE_GTK_DOC_TRUE@	CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)"	\
 @ENABLE_GTK_DOC_TRUE@	LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"				\
 @ENABLE_GTK_DOC_TRUE@	$(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)"	\
@@ -943,29 +970,9 @@
 @ENABLE_GTK_DOC_TRUE@	    --ignore-headers="$(IGNORE_HFILES)";			\
 @ENABLE_GTK_DOC_TRUE@	touch scan-build.stamp
 
-#### update templates; done on every build ####
-
-# in a non-srcdir build, we need to copy files from the previous step
-# and the files from previous runs of this step
-@ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES)
-@ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Rebuilding template files'
-@ENABLE_GTK_DOC_TRUE@	@if test x"$(srcdir)" != x. ; then				\
-@ENABLE_GTK_DOC_TRUE@	    for f in $(SCANOBJ_FILES) $(SCAN_FILES);			\
-@ENABLE_GTK_DOC_TRUE@	    do								\
-@ENABLE_GTK_DOC_TRUE@	        if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;	\
-@ENABLE_GTK_DOC_TRUE@	    done;							\
-@ENABLE_GTK_DOC_TRUE@	fi
-@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mktmpl --module=$(DOC_MODULE)
-@ENABLE_GTK_DOC_TRUE@	@$(PYTHON) \
-@ENABLE_GTK_DOC_TRUE@		$(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl
-@ENABLE_GTK_DOC_TRUE@	@touch tmpl-build.stamp
-
-@ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp
-@ENABLE_GTK_DOC_TRUE@	@true
-
 #### xml ####
 
-@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
+@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
 @ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Building XML'
 @ENABLE_GTK_DOC_TRUE@	@-mkdir -p xml
 @ENABLE_GTK_DOC_TRUE@	@for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \
@@ -981,6 +988,7 @@
 @ENABLE_GTK_DOC_TRUE@		--output-format=xml \
 @ENABLE_GTK_DOC_TRUE@		--ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \
 @ENABLE_GTK_DOC_TRUE@		$(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@	@$(PYTHON) $(top_srcdir)/common/mangle-db.py xml
 @ENABLE_GTK_DOC_TRUE@	@cp ../version.entities xml
 @ENABLE_GTK_DOC_TRUE@	@touch sgml-build.stamp
 
diff --git a/docs/plugins/gstreamer-plugins-docs.sgml b/docs/plugins/gstreamer-plugins-docs.sgml
index 72c2e79..c97ddc4 100644
--- a/docs/plugins/gstreamer-plugins-docs.sgml
+++ b/docs/plugins/gstreamer-plugins-docs.sgml
@@ -18,6 +18,7 @@
   <chapter>
     <title>gstreamer Elements</title>
     <xi:include href="xml/element-capsfilter.xml" />
+    <xi:include href="xml/element-concat.xml" />
     <xi:include href="xml/element-downloadbuffer.xml" />
     <xi:include href="xml/element-fakesrc.xml" />
     <xi:include href="xml/element-fakesink.xml" />
@@ -32,6 +33,7 @@
     <xi:include href="xml/element-output-selector.xml" />
     <xi:include href="xml/element-queue.xml" />
     <xi:include href="xml/element-queue2.xml" />
+    <xi:include href="xml/element-streamiddemux.xml" />
     <xi:include href="xml/element-tee.xml" />
     <xi:include href="xml/element-typefind.xml" />
     <xi:include href="xml/element-valve.xml" />
diff --git a/docs/plugins/gstreamer-plugins-sections.txt b/docs/plugins/gstreamer-plugins-sections.txt
index ac4451c..c088cf3 100644
--- a/docs/plugins/gstreamer-plugins-sections.txt
+++ b/docs/plugins/gstreamer-plugins-sections.txt
@@ -1,20 +1,51 @@
 <SECTION>
-<FILE>element-fakesrc</FILE>
-<TITLE>fakesrc</TITLE>
-GstFakeSrc
-GstFakeSrcDataType
-GstFakeSrcFillType
-GstFakeSrcOutputType
-GstFakeSrcSizeType
+<FILE>element-capsfilter</FILE>
+<TITLE>capsfilter</TITLE>
+GstCapsFilter
+GstCapsFilterCapsChangeMode
 <SUBSECTION Standard>
-GstFakeSrcClass
-GST_FAKE_SRC
-GST_IS_FAKE_SRC
-GST_TYPE_FAKE_SRC
-GST_FAKE_SRC_CLASS
-GST_IS_FAKE_SRC_CLASS
+GstCapsFilterClass
+GST_CAPS_FILTER
+GST_CAPS_FILTER_CAST
+GST_IS_CAPS_FILTER
+GST_CAPS_FILTER_CLASS
+GST_IS_CAPS_FILTER_CLASS
+GST_TYPE_CAPS_FILTER
 <SUBSECTION Private>
-gst_fake_src_get_type
+gst_caps_filter_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-concat</FILE>
+<TITLE>concat</TITLE>
+GstConcat
+<SUBSECTION Standard>
+GstConcatClass
+GST_CONCAT
+GST_CONCAT_CAST
+GST_IS_CONCAT
+GST_CONCAT_CLASS
+GST_IS_CONCAT_CLASS
+GST_TYPE_CONCAT
+<SUBSECTION Private>
+gst_concat_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-downloadbuffer</FILE>
+<TITLE>downloadbuffer</TITLE>
+GstDownloadBuffer
+<SUBSECTION Standard>
+GstDownloadBufferSize
+GstDownloadBufferClass
+GST_DOWNLOAD_BUFFER
+GST_DOWNLOAD_BUFFER_CAST
+GST_IS_DOWNLOAD_BUFFER
+GST_DOWNLOAD_BUFFER_CLASS
+GST_IS_DOWNLOAD_BUFFER_CLASS
+GST_TYPE_DOWNLOAD_BUFFER
+<SUBSECTION Private>
+gst_download_buffer_get_type
 </SECTION>
 
 <SECTION>
@@ -27,24 +58,44 @@
 GST_FAKE_SINK
 GST_FAKE_SINK_CAST
 GST_IS_FAKE_SINK
-GST_TYPE_FAKE_SINK
 GST_FAKE_SINK_CLASS
 GST_IS_FAKE_SINK_CLASS
+GST_TYPE_FAKE_SINK
 <SUBSECTION Private>
 gst_fake_sink_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-fakesrc</FILE>
+<TITLE>fakesrc</TITLE>
+GstFakeSrc
+GstFakeSrcDataType
+GstFakeSrcFillType
+GstFakeSrcOutputType
+GstFakeSrcSizeType
+<SUBSECTION Standard>
+GstFakeSrcClass
+GST_FAKE_SRC
+GST_IS_FAKE_SRC
+GST_FAKE_SRC_CLASS
+GST_IS_FAKE_SRC_CLASS
+GST_TYPE_FAKE_SRC
+<SUBSECTION Private>
+gst_fake_src_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-fdsink</FILE>
 <TITLE>fdsink</TITLE>
 GstFdSink
 <SUBSECTION Standard>
 GstFdSinkClass
 GST_FD_SINK
+GST_FD_SINK_CAST
 GST_IS_FD_SINK
-GST_TYPE_FD_SINK
 GST_FD_SINK_CLASS
 GST_IS_FD_SINK_CLASS
+GST_TYPE_FD_SINK
 <SUBSECTION Private>
 gst_fd_sink_get_type
 </SECTION>
@@ -57,14 +108,32 @@
 GstFdSrcClass
 GST_FD_SRC
 GST_IS_FD_SRC
-GST_TYPE_FD_SRC
 GST_FD_SRC_CLASS
 GST_IS_FD_SRC_CLASS
+GST_TYPE_FD_SRC
 <SUBSECTION Private>
 gst_fd_src_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-filesink</FILE>
+<TITLE>filesink</TITLE>
+GstFileSink
+GstFileSinkBufferMode
+<SUBSECTION Standard>
+GstFileSinkClass
+GST_FILE_SINK
+GST_FILE_SINK_CAST
+GST_IS_FILE_SINK
+GST_FILE_SINK_CLASS
+GST_IS_FILE_SINK_CLASS
+GST_TYPE_FILE_SINK
+GST_TYPE_FILE_SINK_BUFFER_MODE
+<SUBSECTION Private>
+gst_file_sink_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-filesrc</FILE>
 <TITLE>filesrc</TITLE>
 GstFileSrc
@@ -73,29 +142,14 @@
 GST_FILE_SRC
 GST_FILE_SRC_CAST
 GST_IS_FILE_SRC
-GST_TYPE_FILE_SRC
 GST_FILE_SRC_CLASS
 GST_IS_FILE_SRC_CLASS
+GST_TYPE_FILE_SRC
 <SUBSECTION Private>
 gst_file_src_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-filesink</FILE>
-<TITLE>filesink</TITLE>
-GstFileSink
-<SUBSECTION Standard>
-GstFileSinkClass
-GST_FILE_SINK
-GST_IS_FILE_SINK
-GST_TYPE_FILE_SINK
-GST_FILE_SINK_CLASS
-GST_IS_FILE_SINK_CLASS
-<SUBSECTION Private>
-gst_file_sink_get_type
-</SECTION>
-
-<SECTION>
 <FILE>element-funnel</FILE>
 <TITLE>funnel</TITLE>
 GstFunnel
@@ -103,44 +157,14 @@
 GstFunnelClass
 GST_FUNNEL
 GST_IS_FUNNEL
-GST_TYPE_FUNNEL
 GST_FUNNEL_CLASS
 GST_IS_FUNNEL_CLASS
+GST_TYPE_FUNNEL
 <SUBSECTION Private>
 gst_funnel_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-capsfilter</FILE>
-<TITLE>capsfilter</TITLE>
-GstCapsFilter
-<SUBSECTION Standard>
-GstCapsFilterClass
-GST_CAPSFILTER
-GST_IS_CAPSFILTER
-GST_TYPE_CAPSFILTER
-GST_CAPSFILTER_CLASS
-GST_IS_CAPSFILTER_CLASS
-<SUBSECTION Private>
-gst_capsfilter_get_type
-</SECTION>
-
-<SECTION>
-<FILE>element-downloadbuffer</FILE>
-<TITLE>downloadbuffer</TITLE>
-GstDownloadBuffer
-<SUBSECTION Standard>
-GstDownloadBufferSize
-GstDownloadBufferClass
-GST_DOWNLOAD_BUFFER_CAST
-GST_DOWNLOAD_BUFFER
-GST_DOWNLOAD_BUFFER_CLASS
-GST_IS_DOWNLOAD_BUFFER
-GST_IS_DOWNLOAD_BUFFER_CLASS
-GST_TYPE_DOWNLOAD_BUFFER
-</SECTION>
-
-<SECTION>
 <FILE>element-identity</FILE>
 <TITLE>identity</TITLE>
 GstIdentity
@@ -148,9 +172,9 @@
 GstIdentityClass
 GST_IDENTITY
 GST_IS_IDENTITY
-GST_TYPE_IDENTITY
 GST_IDENTITY_CLASS
 GST_IS_IDENTITY_CLASS
+GST_TYPE_IDENTITY
 <SUBSECTION Private>
 gst_identity_get_type
 </SECTION>
@@ -163,17 +187,49 @@
 <SUBSECTION Standard>
 GstInputSelectorClass
 GST_INPUT_SELECTOR
-GST_INPUT_SELECTOR_CLASS
 GST_IS_INPUT_SELECTOR
+GST_INPUT_SELECTOR_CLASS
 GST_IS_INPUT_SELECTOR_CLASS
 GST_TYPE_INPUT_SELECTOR
-gst_input_selector_get_type
 GST_INPUT_SELECTOR_BROADCAST
 GST_INPUT_SELECTOR_GET_COND
 GST_INPUT_SELECTOR_GET_LOCK
 GST_INPUT_SELECTOR_LOCK
 GST_INPUT_SELECTOR_UNLOCK
 GST_INPUT_SELECTOR_WAIT
+<SUBSECTION Private>
+gst_input_selector_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-multiqueue</FILE>
+<TITLE>multiqueue</TITLE>
+GstMultiQueue
+<SUBSECTION Standard>
+GstMultiQueueClass
+GST_MULTI_QUEUE
+GST_IS_MULTI_QUEUE
+GST_MULTI_QUEUE_CLASS
+GST_IS_MULTI_QUEUE_CLASS
+GST_TYPE_MULTI_QUEUE
+<SUBSECTION Private>
+gst_multi_queue_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-output-selector</FILE>
+<TITLE>output-selector</TITLE>
+GstOutputSelector
+GstOutputSelectorPadNegotiationMode
+<SUBSECTION Standard>
+GstOutputSelectorClass
+GST_OUTPUT_SELECTOR
+GST_IS_OUTPUT_SELECTOR
+GST_OUTPUT_SELECTOR_CLASS
+GST_IS_OUTPUT_SELECTOR_CLASS
+GST_TYPE_OUTPUT_SELECTOR
+<SUBSECTION Private>
+gst_output_selector_get_type
 </SECTION>
 
 <SECTION>
@@ -184,9 +240,9 @@
 <SUBSECTION Standard>
 GstQueueClass
 GST_QUEUE
+GST_QUEUE_CAST
 GST_IS_QUEUE
 GST_QUEUE_CLASS
-GST_QUEUE_CAST
 GST_IS_QUEUE_CLASS
 GST_TYPE_QUEUE
 <SUBSECTION Private>
@@ -214,49 +270,19 @@
 </SECTION>
 
 <SECTION>
-<FILE>element-multiqueue</FILE>
-<TITLE>multiqueue</TITLE>
-GstMultiQueue
+<FILE>element-streamiddemux</FILE>
+<TITLE>streamiddemux</TITLE>
+GstStreamidDemux
 <SUBSECTION Standard>
-GstMultiQueueClass
-GST_MULTI_QUEUE
-GST_IS_MULTI_QUEUE
-GST_MULTI_QUEUE_CLASS
-GST_IS_MULTI_QUEUE_CLASS
-GST_TYPE_MULTI_QUEUE
+GstStreamidDemuxClass
+GST_STREAMID_DEMUX
+GST_STREAMID_DEMUX_CAST
+GST_IS_STREAMID_DEMUX
+GST_STREAMID_DEMUX_CLASS
+GST_IS_STREAMID_DEMUX_CLASS
+GST_TYPE_STREAMID_DEMUX
 <SUBSECTION Private>
-gst_multi_queue_get_type
-</SECTION>
-
-<SECTION>
-<FILE>element-output-selector</FILE>
-<TITLE>output-selector</TITLE>
-GstOutputSelector
-GstOutputSelectorPadNegotiationMode
-<SUBSECTION Standard>
-GstOutputSelectorClass
-GST_OUTPUT_SELECTOR
-GST_OUTPUT_SELECTOR_CLASS
-GST_IS_OUTPUT_SELECTOR
-GST_IS_OUTPUT_SELECTOR_CLASS
-GST_TYPE_OUTPUT_SELECTOR
-gst_output_selector_get_type
-</SECTION>
-
-<SECTION>
-<FILE>element-typefind</FILE>
-<TITLE>typefind</TITLE>
-GstTypeFindElement
-<SUBSECTION Standard>
-GstTypeFindElementClass
-GST_TYPE_FIND_ELEMENT
-GST_IS_TYPE_FIND_ELEMENT
-GST_TYPE_TYPE_FIND_ELEMENT
-GST_TYPE_FIND_ELEMENT_CLASS
-GST_IS_TYPE_FIND_ELEMENT_CLASS
-GST_TYPE_FIND_ELEMENT_GET_CLASS
-<SUBSECTION Private>
-gst_type_find_element_get_type
+gst_streamid_demux_get_type
 </SECTION>
 
 <SECTION>
@@ -269,14 +295,29 @@
 GST_TEE
 GST_TEE_CAST
 GST_IS_TEE
-GST_TYPE_TEE
 GST_TEE_CLASS
 GST_IS_TEE_CLASS
+GST_TYPE_TEE
 <SUBSECTION Private>
 gst_tee_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-typefind</FILE>
+<TITLE>typefind</TITLE>
+GstTypeFindElement
+<SUBSECTION Standard>
+GstTypeFindElementClass
+GST_TYPE_FIND_ELEMENT
+GST_IS_TYPE_FIND_ELEMENT
+GST_TYPE_FIND_ELEMENT_CLASS
+GST_IS_TYPE_FIND_ELEMENT_CLASS
+GST_TYPE_TYPE_FIND_ELEMENT
+<SUBSECTION Private>
+gst_type_find_element_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-valve</FILE>
 <TITLE>valve</TITLE>
 GstValve
@@ -284,9 +325,9 @@
 GstValveClass
 GST_VALVE
 GST_IS_VALVE
-GST_TYPE_VALVE
 GST_VALVE_CLASS
 GST_IS_VALVE_CLASS
+GST_TYPE_VALVE
 <SUBSECTION Private>
 gst_valve_get_type
 </SECTION>
diff --git a/docs/plugins/gstreamer-plugins.args b/docs/plugins/gstreamer-plugins.args
index 5d3afc5..c9bb39c 100644
--- a/docs/plugins/gstreamer-plugins.args
+++ b/docs/plugins/gstreamer-plugins.args
@@ -99,6 +99,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstTee::allow-not-linked</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Allow not linked</NICK>
+<BLURB>Return GST_FLOW_OK even if there are no source pads or they are all unlinked.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstQueue2::current-level-buffers</NAME>
 <TYPE>guint</TYPE>
 <RANGE></RANGE>
@@ -844,7 +854,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>pattern</NICK>
-<BLURB>pattern.</BLURB>
+<BLURB>Set the pattern (unused).</BLURB>
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
@@ -999,6 +1009,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstCapsFilter::caps-change-mode</NAME>
+<TYPE>GstCapsFilterCapsChangeMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Caps Change Mode</NICK>
+<BLURB>Filter caps change behaviour.</BLURB>
+<DEFAULT>Only accept the current filter caps</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstDownloadBuffer::high-percent</NAME>
 <TYPE>gint</TYPE>
 <RANGE>[0,100]</RANGE>
@@ -1068,3 +1088,43 @@
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
+<ARG>
+<NAME>GstStreamidDemux::active-pad</NAME>
+<TYPE>GstPad*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Active pad</NICK>
+<BLURB>The currently active src pad.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstConcat::active-pad</NAME>
+<TYPE>GstPad*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Active pad</NICK>
+<BLURB>Currently active src pad.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstConcat::adjust-base</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Adjust segment base</NICK>
+<BLURB>Adjust the base value of segments to ensure they are adjacent.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstFunnel::forward-sticky-events</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Forward sticky events</NICK>
+<BLURB>Forward sticky events on stream changes.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gstreamer-plugins.hierarchy b/docs/plugins/gstreamer-plugins.hierarchy
index c65606e..892e984 100644
--- a/docs/plugins/gstreamer-plugins.hierarchy
+++ b/docs/plugins/gstreamer-plugins.hierarchy
@@ -22,6 +22,7 @@
           GstIdentity
         GstBin
           GstPipeline
+        GstConcat
         GstDownloadBuffer
         GstFunnel
         GstInputSelector
@@ -29,6 +30,7 @@
         GstOutputSelector
         GstQueue
         GstQueue2
+        GstStreamidDemux
         GstTee
         GstTypeFindElement
         GstValve
diff --git a/docs/plugins/gstreamer-plugins.signals b/docs/plugins/gstreamer-plugins.signals
index 99e36eb..026f5c2 100644
--- a/docs/plugins/gstreamer-plugins.signals
+++ b/docs/plugins/gstreamer-plugins.signals
@@ -1,7 +1,7 @@
 <SIGNAL>
 <NAME>GstTypeFindElement::have-type</NAME>
 <RETURNS>void</RETURNS>
-<FLAGS>f</FLAGS>
+<FLAGS>l</FLAGS>
 GstTypeFindElement *gsttypefindelement
 guint  arg1
 GstCaps *arg2
@@ -50,13 +50,6 @@
 </SIGNAL>
 
 <SIGNAL>
-<NAME>GstInputSelector::block</NAME>
-<RETURNS>gint64</RETURNS>
-<FLAGS>la</FLAGS>
-GstInputSelector *gstinputselector
-</SIGNAL>
-
-<SIGNAL>
 <NAME>GstIdentity::handoff</NAME>
 <RETURNS>void</RETURNS>
 <FLAGS>l</FLAGS>
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 0fcdcce..9ac4f07 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: gstreamer Elements</title>
+<title>gstreamer Elements: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="prev" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="next" href="gstreamer-plugins-capsfilter.html" title="capsfilter">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -24,63 +24,68 @@
 <a name="id-1.2"></a>gstreamer Elements</h1></div></div></div>
 <div class="toc"><dl class="toc">
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-capsfilter.html">capsfilter</a></span><span class="refpurpose"> — Pass data without modification, limiting formats</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-capsfilter.html">capsfilter</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"> — Download Buffer element</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-concat.html">concat</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fakesrc.html">fakesrc</a></span><span class="refpurpose"> — Push empty (no data) buffers around</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fakesink.html">fakesink</a></span><span class="refpurpose"> — Black hole for data</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fakesrc.html">fakesrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fdsink.html">fdsink</a></span><span class="refpurpose"> — Write data to a file descriptor</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fakesink.html">fakesink</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fdsrc.html">fdsrc</a></span><span class="refpurpose"> — Read from a file descriptor</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fdsink.html">fdsink</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-filesrc.html">filesrc</a></span><span class="refpurpose"> — Read from arbitrary point in a file</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fdsrc.html">fdsrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-filesink.html">filesink</a></span><span class="refpurpose"> — Write stream to a file</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-filesrc.html">filesrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-funnel.html">funnel</a></span><span class="refpurpose"> — N-to-1 pipe fitting</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-filesink.html">filesink</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-identity.html">identity</a></span><span class="refpurpose"> — Pass data without modification</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-funnel.html">funnel</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-input-selector.html">input-selector</a></span><span class="refpurpose"> — N-to-1 input stream selector</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-identity.html">identity</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-multiqueue.html">multiqueue</a></span><span class="refpurpose"> — Multiple data queue</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-input-selector.html">input-selector</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-output-selector.html">output-selector</a></span><span class="refpurpose"> — 1-to-N output stream selector</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-multiqueue.html">multiqueue</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-queue.html">queue</a></span><span class="refpurpose"> — Simple data queue</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-output-selector.html">output-selector</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-queue2.html">queue2</a></span><span class="refpurpose"> — Simple data queue</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-queue.html">queue</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-tee.html">tee</a></span><span class="refpurpose"> — 1-to-N pipe fitting</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-queue2.html">queue2</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-typefind.html">typefind</a></span><span class="refpurpose"> — Finds the media type of a stream</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-streamiddemux.html">streamiddemux</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-valve.html">valve</a></span><span class="refpurpose"> — Drops buffers and events or lets them through</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-tee.html">tee</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-plugins-typefind.html">typefind</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-plugins-valve.html">valve</a></span><span class="refpurpose"></span>
 </dt>
 </dl></div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index 7dc1224..0b86941 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: gstreamer Plugins</title>
+<title>gstreamer Plugins: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="prev" href="gstreamer-plugins-valve.html" title="valve">
 <link rel="next" href="gstreamer-plugins-plugin-coreelements.html" title="coreelements">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -23,11 +23,10 @@
 <div class="titlepage"><div><div><h1 class="title">
 <a name="id-1.3"></a>gstreamer Plugins</h1></div></div></div>
 <div class="toc"><dl class="toc"><dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-plugin-coreelements.html">coreelements</a></span><span class="refpurpose">GStreamer core elements</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-plugin-coreelements.html">coreelements</a></span><span class="refpurpose"> — GStreamer core elements</span>
 </dt></dl></div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2 b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
index e8c221e..ff3b17b 100644
--- a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
 <book xmlns="http://www.devhelp.net/book" title="GStreamer Core Plugins 1.0 Plugins Reference Manual" link="index.html" author="" name="gstreamer-plugins-1.0" version="2" language="c">
   <chapters>
     <sub name="gstreamer Elements" link="ch01.html">
       <sub name="capsfilter" link="gstreamer-plugins-capsfilter.html"/>
+      <sub name="concat" link="gstreamer-plugins-concat.html"/>
       <sub name="downloadbuffer" link="gstreamer-plugins-downloadbuffer.html"/>
       <sub name="fakesrc" link="gstreamer-plugins-fakesrc.html"/>
       <sub name="fakesink" link="gstreamer-plugins-fakesink.html"/>
@@ -18,6 +18,7 @@
       <sub name="output-selector" link="gstreamer-plugins-output-selector.html"/>
       <sub name="queue" link="gstreamer-plugins-queue.html"/>
       <sub name="queue2" link="gstreamer-plugins-queue2.html"/>
+      <sub name="streamiddemux" link="gstreamer-plugins-streamiddemux.html"/>
       <sub name="tee" link="gstreamer-plugins-tee.html"/>
       <sub name="typefind" link="gstreamer-plugins-typefind.html"/>
       <sub name="valve" link="gstreamer-plugins-valve.html"/>
@@ -27,13 +28,13 @@
     </sub>
   </chapters>
   <functions>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-capsfilter.html#id-1.2.2.7.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-capsfilter.html#id-1.2.2.7.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-capsfilter.html#id-1.2.2.7.4.2"/>
     <keyword type="struct" name="struct GstCapsFilter" link="gstreamer-plugins-capsfilter.html#GstCapsFilter-struct"/>
+    <keyword type="enum" name="enum GstCapsFilterCapsChangeMode" link="gstreamer-plugins-capsfilter.html#GstCapsFilterCapsChangeMode"/>
     <keyword type="property" name="The “caps” property" link="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-downloadbuffer.html#id-1.2.3.7.8.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-downloadbuffer.html#id-1.2.3.7.8.2"/>
+    <keyword type="property" name="The “caps-change-mode” property" link="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps-change-mode"/>
+    <keyword type="struct" name="struct GstConcat" link="gstreamer-plugins-concat.html#GstConcat-struct"/>
+    <keyword type="property" name="The “active-pad” property" link="gstreamer-plugins-concat.html#GstConcat--active-pad"/>
+    <keyword type="property" name="The “adjust-base” property" link="gstreamer-plugins-concat.html#GstConcat--adjust-base"/>
     <keyword type="struct" name="struct GstDownloadBuffer" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer-struct"/>
     <keyword type="property" name="The “high-percent” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--high-percent"/>
     <keyword type="property" name="The “low-percent” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--low-percent"/>
@@ -42,9 +43,6 @@
     <keyword type="property" name="The “temp-location” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-location"/>
     <keyword type="property" name="The “temp-remove” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-remove"/>
     <keyword type="property" name="The “temp-template” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-template"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesrc.html#id-1.2.4.8.4"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesrc.html#id-1.2.4.8.5.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesrc.html#id-1.2.4.8.5.2"/>
     <keyword type="struct" name="struct GstFakeSrc" link="gstreamer-plugins-fakesrc.html#GstFakeSrc-struct"/>
     <keyword type="enum" name="enum GstFakeSrcDataType" link="gstreamer-plugins-fakesrc.html#GstFakeSrcDataType"/>
     <keyword type="enum" name="enum GstFakeSrcFillType" link="gstreamer-plugins-fakesrc.html#GstFakeSrcFillType"/>
@@ -68,9 +66,6 @@
     <keyword type="property" name="The “sizetype” property" link="gstreamer-plugins-fakesrc.html#GstFakeSrc--sizetype"/>
     <keyword type="property" name="The “sync” property" link="gstreamer-plugins-fakesrc.html#GstFakeSrc--sync"/>
     <keyword type="signal" name="The “handoff” signal" link="gstreamer-plugins-fakesrc.html#GstFakeSrc-handoff"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesink.html#id-1.2.5.8.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesink.html#id-1.2.5.8.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesink.html#id-1.2.5.8.4.2"/>
     <keyword type="struct" name="struct GstFakeSink" link="gstreamer-plugins-fakesink.html#GstFakeSink-struct"/>
     <keyword type="enum" name="enum GstFakeSinkStateError" link="gstreamer-plugins-fakesink.html#GstFakeSinkStateError"/>
     <keyword type="property" name="The “can-activate-pull” property" link="gstreamer-plugins-fakesink.html#GstFakeSink--can-activate-pull"/>
@@ -83,34 +78,21 @@
     <keyword type="property" name="The “state-error” property" link="gstreamer-plugins-fakesink.html#GstFakeSink--state-error"/>
     <keyword type="signal" name="The “handoff” signal" link="gstreamer-plugins-fakesink.html#GstFakeSink-handoff"/>
     <keyword type="signal" name="The “preroll-handoff” signal" link="gstreamer-plugins-fakesink.html#GstFakeSink-preroll-handoff"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsink.html#id-1.2.6.8.3.2.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsink.html#id-1.2.6.8.3.2.2"/>
     <keyword type="struct" name="struct GstFdSink" link="gstreamer-plugins-fdsink.html#GstFdSink-struct"/>
     <keyword type="property" name="The “fd” property" link="gstreamer-plugins-fdsink.html#GstFdSink--fd"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fdsrc.html#id-1.2.7.8.8"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsrc.html#id-1.2.7.8.9.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsrc.html#id-1.2.7.8.9.2"/>
     <keyword type="struct" name="struct GstFdSrc" link="gstreamer-plugins-fdsrc.html#GstFdSrc-struct"/>
     <keyword type="property" name="The “fd” property" link="gstreamer-plugins-fdsrc.html#GstFdSrc--fd"/>
     <keyword type="property" name="The “timeout” property" link="gstreamer-plugins-fdsrc.html#GstFdSrc--timeout"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesrc.html#id-1.2.8.8.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-filesrc.html#id-1.2.8.8.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesrc.html#id-1.2.8.8.4.2"/>
     <keyword type="struct" name="struct GstFileSrc" link="gstreamer-plugins-filesrc.html#GstFileSrc-struct"/>
     <keyword type="property" name="The “location” property" link="gstreamer-plugins-filesrc.html#GstFileSrc--location"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesink.html#id-1.2.9.8.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-filesink.html#id-1.2.9.8.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesink.html#id-1.2.9.8.4.2"/>
     <keyword type="struct" name="struct GstFileSink" link="gstreamer-plugins-filesink.html#GstFileSink-struct"/>
+    <keyword type="enum" name="enum GstFileSinkBufferMode" link="gstreamer-plugins-filesink.html#GstFileSinkBufferMode"/>
     <keyword type="property" name="The “append” property" link="gstreamer-plugins-filesink.html#GstFileSink--append"/>
     <keyword type="property" name="The “buffer-mode” property" link="gstreamer-plugins-filesink.html#GstFileSink--buffer-mode"/>
     <keyword type="property" name="The “buffer-size” property" link="gstreamer-plugins-filesink.html#GstFileSink--buffer-size"/>
     <keyword type="property" name="The “location” property" link="gstreamer-plugins-filesink.html#GstFileSink--location"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-funnel.html#id-1.2.10.6.3.2.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-funnel.html#id-1.2.10.6.3.2.2"/>
     <keyword type="struct" name="struct GstFunnel" link="gstreamer-plugins-funnel.html#GstFunnel-struct"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-identity.html#id-1.2.11.8.2.1.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-identity.html#id-1.2.11.8.2.1.2"/>
+    <keyword type="property" name="The “forward-sticky-events” property" link="gstreamer-plugins-funnel.html#GstFunnel--forward-sticky-events"/>
     <keyword type="struct" name="struct GstIdentity" link="gstreamer-plugins-identity.html#GstIdentity-struct"/>
     <keyword type="property" name="The “check-imperfect-offset” property" link="gstreamer-plugins-identity.html#GstIdentity--check-imperfect-offset"/>
     <keyword type="property" name="The “check-imperfect-timestamp” property" link="gstreamer-plugins-identity.html#GstIdentity--check-imperfect-timestamp"/>
@@ -125,8 +107,6 @@
     <keyword type="property" name="The “sleep-time” property" link="gstreamer-plugins-identity.html#GstIdentity--sleep-time"/>
     <keyword type="property" name="The “sync” property" link="gstreamer-plugins-identity.html#GstIdentity--sync"/>
     <keyword type="signal" name="The “handoff” signal" link="gstreamer-plugins-identity.html#GstIdentity-handoff"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-input-selector.html#id-1.2.12.8.5.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-input-selector.html#id-1.2.12.8.5.2"/>
     <keyword type="struct" name="struct GstInputSelector" link="gstreamer-plugins-input-selector.html#GstInputSelector-struct"/>
     <keyword type="enum" name="enum GstInputSelectorSyncMode" link="gstreamer-plugins-input-selector.html#GstInputSelectorSyncMode"/>
     <keyword type="property" name="The “active-pad” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--active-pad"/>
@@ -134,10 +114,6 @@
     <keyword type="property" name="The “n-pads” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--n-pads"/>
     <keyword type="property" name="The “sync-mode” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--sync-mode"/>
     <keyword type="property" name="The “sync-streams” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--sync-streams"/>
-    <keyword type="signal" name="The “block” signal" link="gstreamer-plugins-input-selector.html#GstInputSelector-block"/>
-    <keyword type="" name="" link="gstreamer-plugins-multiqueue.html#id-1.2.13.8.2"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-multiqueue.html#id-1.2.13.8.3.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-multiqueue.html#id-1.2.13.8.3.2"/>
     <keyword type="struct" name="struct GstMultiQueue" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-struct"/>
     <keyword type="property" name="The “extra-size-buffers” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-buffers"/>
     <keyword type="property" name="The “extra-size-bytes” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-bytes"/>
@@ -151,15 +127,11 @@
     <keyword type="property" name="The “use-buffering” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-buffering"/>
     <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="" name="Element Information" link="gstreamer-plugins-output-selector.html#id-1.2.14.7.2.1.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-output-selector.html#id-1.2.14.7.2.1.2"/>
     <keyword type="struct" name="struct GstOutputSelector" link="gstreamer-plugins-output-selector.html#GstOutputSelector-struct"/>
     <keyword type="enum" name="enum GstOutputSelectorPadNegotiationMode" link="gstreamer-plugins-output-selector.html#GstOutputSelectorPadNegotiationMode"/>
     <keyword type="property" name="The “active-pad” property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--active-pad"/>
     <keyword type="property" name="The “pad-negotiation-mode” property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--pad-negotiation-mode"/>
     <keyword type="property" name="The “resend-latest” property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--resend-latest"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-queue.html#id-1.2.15.8.7.3.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue.html#id-1.2.15.8.7.3.2"/>
     <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"/>
     <keyword type="property" name="The “current-level-buffers” property" link="gstreamer-plugins-queue.html#GstQueue--current-level-buffers"/>
@@ -178,8 +150,6 @@
     <keyword type="signal" name="The “pushing” signal" link="gstreamer-plugins-queue.html#GstQueue-pushing"/>
     <keyword type="signal" name="The “running” signal" link="gstreamer-plugins-queue.html#GstQueue-running"/>
     <keyword type="signal" name="The “underrun” signal" link="gstreamer-plugins-queue.html#GstQueue-underrun"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-queue2.html#id-1.2.16.7.7.1.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue2.html#id-1.2.16.7.7.1.2"/>
     <keyword type="struct" name="struct GstQueue2" link="gstreamer-plugins-queue2.html#GstQueue2-struct"/>
     <keyword type="property" name="The “current-level-buffers” property" link="gstreamer-plugins-queue2.html#GstQueue2--current-level-buffers"/>
     <keyword type="property" name="The “current-level-bytes” property" link="gstreamer-plugins-queue2.html#GstQueue2--current-level-bytes"/>
@@ -195,9 +165,8 @@
     <keyword type="property" name="The “temp-template” property" link="gstreamer-plugins-queue2.html#GstQueue2--temp-template"/>
     <keyword type="property" name="The “use-buffering” property" link="gstreamer-plugins-queue2.html#GstQueue2--use-buffering"/>
     <keyword type="property" name="The “use-rate-estimate” property" link="gstreamer-plugins-queue2.html#GstQueue2--use-rate-estimate"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-tee.html#id-1.2.17.7.4"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-tee.html#id-1.2.17.7.5.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-tee.html#id-1.2.17.7.5.2"/>
+    <keyword type="struct" name="struct GstStreamidDemux" link="gstreamer-plugins-streamiddemux.html#GstStreamidDemux-struct"/>
+    <keyword type="property" name="The “active-pad” property" link="gstreamer-plugins-streamiddemux.html#GstStreamidDemux--active-pad"/>
     <keyword type="struct" name="struct GstTee" link="gstreamer-plugins-tee.html#GstTee-struct"/>
     <keyword type="enum" name="enum GstTeePullMode" link="gstreamer-plugins-tee.html#GstTeePullMode"/>
     <keyword type="property" name="The “alloc-pad” property" link="gstreamer-plugins-tee.html#GstTee--alloc-pad"/>
@@ -206,16 +175,54 @@
     <keyword type="property" name="The “num-src-pads” property" link="gstreamer-plugins-tee.html#GstTee--num-src-pads"/>
     <keyword type="property" name="The “pull-mode” property" link="gstreamer-plugins-tee.html#GstTee--pull-mode"/>
     <keyword type="property" name="The “silent” property" link="gstreamer-plugins-tee.html#GstTee--silent"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-typefind.html#id-1.2.18.8.4.2.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-typefind.html#id-1.2.18.8.4.2.2"/>
+    <keyword type="property" name="The “allow-not-linked” property" link="gstreamer-plugins-tee.html#GstTee--allow-not-linked"/>
     <keyword type="struct" name="struct GstTypeFindElement" link="gstreamer-plugins-typefind.html#GstTypeFindElement-struct"/>
     <keyword type="property" name="The “caps” property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--caps"/>
     <keyword type="property" name="The “force-caps” property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--force-caps"/>
     <keyword type="property" name="The “minimum” property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--minimum"/>
     <keyword type="signal" name="The “have-type” signal" link="gstreamer-plugins-typefind.html#GstTypeFindElement-have-type"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-valve.html#id-1.2.19.7.3.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-valve.html#id-1.2.19.7.3.4.2"/>
     <keyword type="struct" name="struct GstValve" link="gstreamer-plugins-valve.html#GstValve-struct"/>
     <keyword type="property" name="The “drop” property" link="gstreamer-plugins-valve.html#GstValve--drop"/>
+    <keyword type="constant" name="GST_CAPS_FILTER_CAPS_CHANGE_MODE_IMMEDIATE" link="gstreamer-plugins-capsfilter.html#GST-CAPS-FILTER-CAPS-CHANGE-MODE-IMMEDIATE:CAPS"/>
+    <keyword type="constant" name="GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED" link="gstreamer-plugins-capsfilter.html#GST-CAPS-FILTER-CAPS-CHANGE-MODE-DELAYED:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_DATA_ALLOCATE" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-DATA-ALLOCATE:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_DATA_SUBBUFFER" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-DATA-SUBBUFFER:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_FILLTYPE_NOTHING" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-NOTHING:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_FILLTYPE_ZERO" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-ZERO:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_FILLTYPE_RANDOM" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-RANDOM:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_FILLTYPE_PATTERN" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-PATTERN:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_FILLTYPE_PATTERN_CONT" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-PATTERN-CONT:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_FIRST_LAST_LOOP" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-FIRST-LAST-LOOP:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_LAST_FIRST_LOOP" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-LAST-FIRST-LOOP:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_PING_PONG" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-PING-PONG:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_ORDERED_RANDOM" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-ORDERED-RANDOM:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_RANDOM" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-RANDOM:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_PATTERN_LOOP" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-PATTERN-LOOP:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_PING_PONG_PATTERN" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-PING-PONG-PATTERN:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_GET_ALWAYS_SUCEEDS" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-GET-ALWAYS-SUCEEDS:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_SIZETYPE_EMPTY" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-SIZETYPE-EMPTY:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_SIZETYPE_FIXED" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-SIZETYPE-FIXED:CAPS"/>
+    <keyword type="constant" name="FAKE_SRC_SIZETYPE_RANDOM" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-SIZETYPE-RANDOM:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_NONE" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-NONE:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_NULL_READY" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-NULL-READY:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_READY_PAUSED" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-READY-PAUSED:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_PAUSED_PLAYING" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-PAUSED-PLAYING:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_PLAYING_PAUSED" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-PLAYING-PAUSED:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_PAUSED_READY" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-PAUSED-READY:CAPS"/>
+    <keyword type="constant" name="FAKE_SINK_STATE_ERROR_READY_NULL" link="gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-READY-NULL:CAPS"/>
+    <keyword type="constant" name="GST_FILE_SINK_BUFFER_MODE_DEFAULT" link="gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-DEFAULT:CAPS"/>
+    <keyword type="constant" name="GST_FILE_SINK_BUFFER_MODE_FULL" link="gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-FULL:CAPS"/>
+    <keyword type="constant" name="GST_FILE_SINK_BUFFER_MODE_LINE" link="gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-LINE:CAPS"/>
+    <keyword type="constant" name="GST_FILE_SINK_BUFFER_MODE_UNBUFFERED" link="gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-UNBUFFERED:CAPS"/>
+    <keyword type="constant" name="GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT" link="gstreamer-plugins-input-selector.html#GST-INPUT-SELECTOR-SYNC-MODE-ACTIVE-SEGMENT:CAPS"/>
+    <keyword type="constant" name="GST_INPUT_SELECTOR_SYNC_MODE_CLOCK" link="gstreamer-plugins-input-selector.html#GST-INPUT-SELECTOR-SYNC-MODE-CLOCK:CAPS"/>
+    <keyword type="constant" name="GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_NONE" link="gstreamer-plugins-output-selector.html#GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-NONE:CAPS"/>
+    <keyword type="constant" name="GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ALL" link="gstreamer-plugins-output-selector.html#GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-ALL:CAPS"/>
+    <keyword type="constant" name="GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ACTIVE" link="gstreamer-plugins-output-selector.html#GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-ACTIVE:CAPS"/>
+    <keyword type="constant" name="GST_QUEUE_NO_LEAK" link="gstreamer-plugins-queue.html#GST-QUEUE-NO-LEAK:CAPS"/>
+    <keyword type="constant" name="GST_QUEUE_LEAK_UPSTREAM" link="gstreamer-plugins-queue.html#GST-QUEUE-LEAK-UPSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_QUEUE_LEAK_DOWNSTREAM" link="gstreamer-plugins-queue.html#GST-QUEUE-LEAK-DOWNSTREAM:CAPS"/>
+    <keyword type="constant" name="GST_TEE_PULL_MODE_NEVER" link="gstreamer-plugins-tee.html#GST-TEE-PULL-MODE-NEVER:CAPS"/>
+    <keyword type="constant" name="GST_TEE_PULL_MODE_SINGLE" link="gstreamer-plugins-tee.html#GST-TEE-PULL-MODE-SINGLE:CAPS"/>
   </functions>
 </book>
diff --git a/docs/plugins/html/gstreamer-plugins-capsfilter.html b/docs/plugins/html/gstreamer-plugins-capsfilter.html
index ae20ad8..db9774f 100644
--- a/docs/plugins/html/gstreamer-plugins-capsfilter.html
+++ b/docs/plugins/html/gstreamer-plugins-capsfilter.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: capsfilter</title>
+<title>capsfilter: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="ch01.html" title="gstreamer Elements">
-<link rel="next" href="gstreamer-plugins-downloadbuffer.html" title="downloadbuffer">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-plugins-concat.html" title="concat">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,14 +22,14 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="ch01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-plugins-downloadbuffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-plugins-concat.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gstreamer-plugins-capsfilter"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-capsfilter.top_of_page"></a>capsfilter</span></h2>
-<p>capsfilter — Pass data without modification, limiting formats</p>
+<p>capsfilter</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -41,12 +41,19 @@
 <col width="300px" class="properties_name">
 <col width="200px" class="properties_flags">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *</td>
 <td class="property_name"><a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps" title="The “caps” property">caps</a></td>
 <td class="property_flags">Read / Write</td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="property_type"><a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilterCapsChangeMode" title="enum GstCapsFilterCapsChangeMode"><span class="type">GstCapsFilterCapsChangeMode</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps-change-mode" title="The “caps-change-mode” property">caps-change-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <a name="GstCapsFilter"></a><div class="refsect1">
@@ -56,10 +63,16 @@
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilter-struct" title="struct GstCapsFilter">GstCapsFilter</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilterCapsChangeMode" title="enum GstCapsFilterCapsChangeMode">GstCapsFilterCapsChangeMode</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -83,12 +96,23 @@
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>GRAY8 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> capsfilter caps<span class="gtkdoc opt">=</span>video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>GRAY8 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
       </tr>
     </tbody>
   </table>
 </div>
- Limits acceptable video from videotestsrc to be grayscale.
+ Limits acceptable video from videotestsrc to be grayscale. Equivalent to
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>GRAY8 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ which is a short notation for the capsfilter element.
 </div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
@@ -170,11 +194,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-capsfilter.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-capsfilter.other_details"></a><h2>Types and Values</h2>
@@ -183,6 +206,37 @@
 <pre class="programlisting">struct GstCapsFilter;</pre>
 <p>The opaque <a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilter"><span class="type">GstCapsFilter</span></a> data structure.</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstCapsFilterCapsChangeMode"></a><h3>enum GstCapsFilterCapsChangeMode</h3>
+<p>Filter caps change behaviour</p>
+<div class="refsect3">
+<a name="id-1.2.2.9.3.4"></a><h4>Members</h4>
+<div class="informaltable"><table 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-CAPS-FILTER-CAPS-CHANGE-MODE-IMMEDIATE:CAPS"></a>GST_CAPS_FILTER_CAPS_CHANGE_MODE_IMMEDIATE</p></td>
+<td class="enum_member_description">
+<p>Only accept the current filter caps</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-CAPS-FILTER-CAPS-CHANGE-MODE-DELAYED:CAPS"></a>GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED</p></td>
+<td class="enum_member_description">
+<p>Temporarily accept previous filter caps</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-capsfilter.property-details"></a><h2>Property Details</h2>
@@ -192,10 +246,17 @@
 <p>Restrict the possible allowed capabilities (NULL means ANY). Setting this property takes a reference to the supplied GstCaps object.</p>
 <p>Flags: Read / Write</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstCapsFilter--caps-change-mode"></a><h3>The <code class="literal">“caps-change-mode”</code> property</h3>
+<pre class="programlisting">  “caps-change-mode”         <a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilterCapsChangeMode" title="enum GstCapsFilterCapsChangeMode"><span class="type">GstCapsFilterCapsChangeMode</span></a></pre>
+<p>Filter caps change behaviour.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Only accept the current filter caps</p>
+</div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-concat.html b/docs/plugins/html/gstreamer-plugins-concat.html
new file mode 100644
index 0000000..b99c366
--- /dev/null
+++ b/docs/plugins/html/gstreamer-plugins-concat.html
@@ -0,0 +1,226 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>concat: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gstreamer Elements">
+<link rel="prev" href="gstreamer-plugins-capsfilter.html" title="capsfilter">
+<link rel="next" href="gstreamer-plugins-downloadbuffer.html" title="downloadbuffer">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-concat.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-concat.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-concat.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gstreamer-plugins-capsfilter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-plugins-downloadbuffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-plugins-concat"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-plugins-concat.top_of_page"></a>concat</span></h2>
+<p>concat</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *</td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-concat.html#GstConcat--active-pad" title="The “active-pad” property">active-pad</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-concat.html#GstConcat--adjust-base" title="The “adjust-base” property">adjust-base</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstConcat"></a><div class="refsect1">
+<a name="gstreamer-plugins-concat.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-plugins-concat.html#GstConcat-struct" title="struct GstConcat">GstConcat</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+    <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+            <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+                <span class="lineart">╰──</span> GstConcat
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.description"></a><h2>Description</h2>
+<p>Concatenates streams together to one continous stream.</p>
+<p>All streams but the current one are blocked until the current one
+finished with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#GST-EVENT-EOS:CAPS"><code class="literal">GST_EVENT_EOS</code></a>. Then the next stream is enabled, while
+keeping the running time continous for <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> segments or
+keeping the segment continous for <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"><code class="literal">GST_FORMAT_BYTES</code></a> segments.</p>
+<p>Streams are switched in the order in which the sinkpads were requested.</p>
+<p>By default, the stream segment's base values are adjusted to ensure
+the segment transitions between streams are continuous. In some cases,
+it may be desirable to turn off these adjustments (for example, because
+another downstream element like a streamsynchronizer adjusts the base
+values on its own). The adjust-value property can be used for this purpose.</p>
+<div class="refsect2">
+<a name="id-1.2.3.7.6"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> concat name<span class="gtkdoc opt">=</span>c <span class="gtkdoc opt">!</span> xvimagesink  videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> c<span class="gtkdoc opt">.</span>   videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">100</span> pattern<span class="gtkdoc opt">=</span>ball <span class="gtkdoc opt">!</span> c<span class="gtkdoc opt">.</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Plays two video streams one after another.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.3.7.7.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gstreamer-plugins-plugin-coreelements.html#plugin-coreelements">coreelements</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Sebastian Dröge &lt;sebastian@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Generic</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.3.7.7.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstConcat-struct"></a><h3>struct GstConcat</h3>
+<pre class="programlisting">struct GstConcat;</pre>
+<p>The private concat structure</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstConcat--active-pad"></a><h3>The <code class="literal">“active-pad”</code> property</h3>
+<pre class="programlisting">  “active-pad”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *</pre>
+<p>Currently active src pad.</p>
+<p>Flags: Read</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstConcat--adjust-base"></a><h3>The <code class="literal">“adjust-base”</code> property</h3>
+<pre class="programlisting">  “adjust-base”              <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Adjust the base value of segments to ensure they are adjacent.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-concat.see-also"></a><h2>See Also</h2>
+<p><a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a></p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-downloadbuffer.html b/docs/plugins/html/gstreamer-plugins-downloadbuffer.html
index de4be66..c188a2b 100644
--- a/docs/plugins/html/gstreamer-plugins-downloadbuffer.html
+++ b/docs/plugins/html/gstreamer-plugins-downloadbuffer.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: downloadbuffer</title>
+<title>downloadbuffer: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
-<link rel="prev" href="gstreamer-plugins-capsfilter.html" title="capsfilter">
+<link rel="prev" href="gstreamer-plugins-concat.html" title="concat">
 <link rel="next" href="gstreamer-plugins-fakesrc.html" title="fakesrc">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gstreamer-plugins-capsfilter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-plugins-concat.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-plugins-fakesrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -29,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-downloadbuffer.top_of_page"></a>downloadbuffer</span></h2>
-<p>downloadbuffer — Download Buffer element</p>
+<p>downloadbuffer</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -130,7 +130,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.3.7.8.1"></a><h3>Element Information</h3>
+<a name="id-1.2.4.7.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -156,7 +156,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.3.7.8.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.4.7.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -207,19 +207,16 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-downloadbuffer.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-downloadbuffer.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
 <a name="GstDownloadBuffer-struct"></a><h3>struct GstDownloadBuffer</h3>
 <pre class="programlisting">struct GstDownloadBuffer;</pre>
-<p>
-</p>
 </div>
 </div>
 <div class="refsect1">
@@ -284,7 +281,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-fakesink.html b/docs/plugins/html/gstreamer-plugins-fakesink.html
index edc3806..1e45086 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesink.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesink.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: fakesink</title>
+<title>fakesink: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-fakesrc.html" title="fakesrc">
 <link rel="next" href="gstreamer-plugins-fdsink.html" title="fdsink">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-fakesink.top_of_page"></a>fakesink</span></h2>
-<p>fakesink — Black hole for data</p>
+<p>fakesink</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -99,12 +99,12 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-fakesink.html#GstFakeSink-handoff" title="The “handoff” signal">handoff</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-fakesink.html#GstFakeSink-preroll-handoff" title="The “preroll-handoff” signal">preroll-handoff</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -142,13 +142,13 @@
 <a name="gstreamer-plugins-fakesink.description"></a><h2>Description</h2>
 <p>Dummy sink that swallows everything.</p>
 <div class="refsect2">
-<a name="id-1.2.5.8.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.6.8.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch audiotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> fakesink sync<span class="gtkdoc opt">=</span><span class="keyword">false</span></pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> fakesink sync<span class="gtkdoc opt">=</span><span class="keyword">false</span></pre></td>
       </tr>
     </tbody>
   </table>
@@ -158,7 +158,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.5.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.6.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -184,7 +184,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.5.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.6.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -211,11 +211,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fakesink.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fakesink.other_details"></a><h2>Types and Values</h2>
@@ -229,7 +228,7 @@
 <a name="GstFakeSinkStateError"></a><h3>enum GstFakeSinkStateError</h3>
 <p>Possible state change errors for the state-error property.</p>
 <div class="refsect3">
-<a name="id-1.2.5.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.6.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -369,7 +368,7 @@
                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>     user_data)</pre>
 <p>This signal gets emitted before unreffing the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.5.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -400,7 +399,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -412,7 +411,7 @@
                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>     user_data)</pre>
 <p>This signal gets emitted before unreffing the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.5.12.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -443,7 +442,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -452,7 +451,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-fakesrc.html b/docs/plugins/html/gstreamer-plugins-fakesrc.html
index 474d662..2596054 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesrc.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: fakesrc</title>
+<title>fakesrc: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-downloadbuffer.html" title="downloadbuffer">
 <link rel="next" href="gstreamer-plugins-fakesink.html" title="fakesink">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-fakesrc.top_of_page"></a>fakesrc</span></h2>
-<p>fakesrc — Push empty (no data) buffers around</p>
+<p>fakesrc</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -144,7 +144,7 @@
 <tbody><tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-fakesrc.html#GstFakeSrc-handoff" title="The “handoff” signal">handoff</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -196,13 +196,13 @@
 <p>It is mostly used as a testing element, one trivial example for testing
 basic <span class="application">GStreamer</span> core functionality is:</p>
 <div class="refsect2">
-<a name="id-1.2.4.8.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.5.8.4"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v fakesrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">5</span> <span class="gtkdoc opt">!</span> fakesink</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v fakesrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">5</span> <span class="gtkdoc opt">!</span> fakesink</pre></td>
       </tr>
     </tbody>
   </table>
@@ -213,7 +213,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.4.8.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.5.8.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -239,7 +239,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.4.8.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.5.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -266,11 +266,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fakesrc.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fakesrc.other_details"></a><h2>Types and Values</h2>
@@ -284,7 +283,7 @@
 <a name="GstFakeSrcDataType"></a><h3>enum GstFakeSrcDataType</h3>
 <p>The different ways buffers are allocated.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.5.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -315,7 +314,7 @@
 <a name="GstFakeSrcFillType"></a><h3>enum GstFakeSrcFillType</h3>
 <p>The different ways of filling the buffers.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.4.4"></a><h4>Members</h4>
+<a name="id-1.2.5.10.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -367,7 +366,7 @@
 <a name="GstFakeSrcOutputType"></a><h3>enum GstFakeSrcOutputType</h3>
 <p>The different output types. Unused currently.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.5.4"></a><h4>Members</h4>
+<a name="id-1.2.5.10.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -440,7 +439,7 @@
 <a name="GstFakeSrcSizeType"></a><h3>enum GstFakeSrcSizeType</h3>
 <p>The different size of the allocated buffers.</p>
 <div class="refsect3">
-<a name="id-1.2.4.10.6.4"></a><h4>Members</h4>
+<a name="id-1.2.5.10.6.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -561,7 +560,7 @@
 <div class="refsect2">
 <a name="GstFakeSrc--pattern"></a><h3>The <code class="literal">“pattern”</code> property</h3>
 <pre class="programlisting">  “pattern”                  <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>pattern.</p>
+<p>Set the pattern (unused).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: NULL</p>
 </div>
@@ -627,7 +626,7 @@
                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
 <p>This signal gets emitted before sending the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.4.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -658,7 +657,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -667,7 +666,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-fdsink.html b/docs/plugins/html/gstreamer-plugins-fdsink.html
index 7118c0d..1dff00f 100644
--- a/docs/plugins/html/gstreamer-plugins-fdsink.html
+++ b/docs/plugins/html/gstreamer-plugins-fdsink.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: fdsink</title>
+<title>fdsink: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-fakesink.html" title="fakesink">
 <link rel="next" href="gstreamer-plugins-fdsrc.html" title="fdsrc">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-fdsink.top_of_page"></a>fdsink</span></h2>
-<p>fdsink — Write data to a file descriptor</p>
+<p>fdsink</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -87,7 +87,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.6.8.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.7.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -113,7 +113,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.6.8.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.7.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -140,11 +140,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fdsink.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fdsink.other_details"></a><h2>Types and Values</h2>
@@ -171,7 +170,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-fdsrc.html b/docs/plugins/html/gstreamer-plugins-fdsrc.html
index c8a12f6..32d34af 100644
--- a/docs/plugins/html/gstreamer-plugins-fdsrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fdsrc.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: fdsrc</title>
+<title>fdsrc: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-fdsink.html" title="fdsink">
 <link rel="next" href="gstreamer-plugins-filesrc.html" title="filesrc">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-fdsrc.top_of_page"></a>fdsrc</span></h2>
-<p>fdsrc — Read from a file descriptor</p>
+<p>fdsrc</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -92,22 +92,22 @@
 <p>To generate data, enter some data on the console followed by enter.
 The above mentioned pipeline should dump data packets to the console.</p>
 <p>If the <a class="link" href="gstreamer-plugins-fdsrc.html#GstFdSrc--timeout" title="The “timeout” property"><span class="type">“timeout”</span></a> property is set to a value bigger than 0, fdsrc will
-generate an element message named</p>
-<code class="classname">"GstFdSrcTimeout"</code><p>if no data was received in the given timeout.
-The message's structure contains one field:</p>
+generate an element message named <code class="classname">"GstFdSrcTimeout"</code>
+if no data was received in the given timeout.</p>
+<p>The message's structure contains one field:</p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
   <span class="type">guint64</span>
   <code class="classname">"timeout"</code>: the timeout in microseconds that
   expired when waiting for data.
   </p></li></ul></div>
 <div class="refsect2">
-<a name="id-1.2.7.8.8"></a><h3>Example launch line</h3>
+<a name="id-1.2.8.8.7"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">echo <span class="string">&quot;Hello GStreamer&quot;</span> <span class="gtkdoc opt">|</span> gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v fdsrc <span class="gtkdoc opt">!</span> fakesink dump<span class="gtkdoc opt">=</span><span class="keyword">true</span></pre></td>
+        <td class="listing_code"><pre class="programlisting">echo <span class="string">&quot;Hello GStreamer&quot;</span> <span class="gtkdoc opt">|</span> gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v fdsrc <span class="gtkdoc opt">!</span> fakesink dump<span class="gtkdoc opt">=</span><span class="keyword">true</span></pre></td>
       </tr>
     </tbody>
   </table>
@@ -118,7 +118,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.7.8.9.1"></a><h3>Element Information</h3>
+<a name="id-1.2.8.8.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -144,7 +144,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.7.8.9.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.8.8.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -171,11 +171,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fdsrc.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-fdsrc.other_details"></a><h2>Types and Values</h2>
@@ -210,7 +209,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-filesink.html b/docs/plugins/html/gstreamer-plugins-filesink.html
index 1213e01..e35ad20 100644
--- a/docs/plugins/html/gstreamer-plugins-filesink.html
+++ b/docs/plugins/html/gstreamer-plugins-filesink.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: filesink</title>
+<title>filesink: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-filesrc.html" title="filesrc">
 <link rel="next" href="gstreamer-plugins-funnel.html" title="funnel">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-filesink.top_of_page"></a>filesink</span></h2>
-<p>filesink — Write stream to a file</p>
+<p>filesink</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -49,7 +49,7 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><span class="type">GstFileSinkBufferMode</span></td>
+<td class="property_type"><a class="link" href="gstreamer-plugins-filesink.html#GstFileSinkBufferMode" title="enum GstFileSinkBufferMode"><span class="type">GstFileSinkBufferMode</span></a></td>
 <td class="property_name"><a class="link" href="gstreamer-plugins-filesink.html#GstFileSink--buffer-mode" title="The “buffer-mode” property">buffer-mode</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -74,10 +74,16 @@
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="gstreamer-plugins-filesink.html#GstFileSink-struct" title="struct GstFileSink">GstFileSink</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gstreamer-plugins-filesink.html#GstFileSinkBufferMode" title="enum GstFileSinkBufferMode">GstFileSinkBufferMode</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -100,13 +106,13 @@
 <a name="gstreamer-plugins-filesink.description"></a><h2>Description</h2>
 <p>Write incoming data to a file in the local file system.</p>
 <div class="refsect2">
-<a name="id-1.2.9.8.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.10.8.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch v4l2src num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> jpegenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>capture1<span class="gtkdoc opt">.</span>jpeg</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> v4l2src num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> jpegenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>capture1<span class="gtkdoc opt">.</span>jpeg</pre></td>
       </tr>
     </tbody>
   </table>
@@ -116,7 +122,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.9.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.10.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -142,7 +148,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.9.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.10.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -169,11 +175,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-filesink.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-filesink.other_details"></a><h2>Types and Values</h2>
@@ -182,6 +187,51 @@
 <pre class="programlisting">struct GstFileSink;</pre>
 <p>Opaque <a class="link" href="gstreamer-plugins-filesink.html#GstFileSink"><span class="type">GstFileSink</span></a> structure.</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstFileSinkBufferMode"></a><h3>enum GstFileSinkBufferMode</h3>
+<p>File read buffering mode.</p>
+<div class="refsect3">
+<a name="id-1.2.10.10.3.4"></a><h4>Members</h4>
+<div class="informaltable"><table 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-FILE-SINK-BUFFER-MODE-DEFAULT:CAPS"></a>GST_FILE_SINK_BUFFER_MODE_DEFAULT</p></td>
+<td class="enum_member_description">
+<p>Default buffering</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FILE-SINK-BUFFER-MODE-FULL:CAPS"></a>GST_FILE_SINK_BUFFER_MODE_FULL</p></td>
+<td class="enum_member_description">
+<p>Fully buffered</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FILE-SINK-BUFFER-MODE-LINE:CAPS"></a>GST_FILE_SINK_BUFFER_MODE_LINE</p></td>
+<td class="enum_member_description">
+<p>Line buffered</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FILE-SINK-BUFFER-MODE-UNBUFFERED:CAPS"></a>GST_FILE_SINK_BUFFER_MODE_UNBUFFERED</p></td>
+<td class="enum_member_description">
+<p>Unbuffered</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-filesink.property-details"></a><h2>Property Details</h2>
@@ -195,7 +245,7 @@
 <hr>
 <div class="refsect2">
 <a name="GstFileSink--buffer-mode"></a><h3>The <code class="literal">“buffer-mode”</code> property</h3>
-<pre class="programlisting">  “buffer-mode”              <span class="type">GstFileSinkBufferMode</span></pre>
+<pre class="programlisting">  “buffer-mode”              <a class="link" href="gstreamer-plugins-filesink.html#GstFileSinkBufferMode" title="enum GstFileSinkBufferMode"><span class="type">GstFileSinkBufferMode</span></a></pre>
 <p>The buffering mode to use.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Default buffering</p>
@@ -223,7 +273,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-filesrc.html b/docs/plugins/html/gstreamer-plugins-filesrc.html
index 9e3dc3c..a4b6890 100644
--- a/docs/plugins/html/gstreamer-plugins-filesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-filesrc.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: filesrc</title>
+<title>filesrc: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-fdsrc.html" title="fdsrc">
 <link rel="next" href="gstreamer-plugins-filesink.html" title="filesink">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-filesrc.top_of_page"></a>filesrc</span></h2>
-<p>filesrc — Read from arbitrary point in a file</p>
+<p>filesrc</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -83,23 +83,23 @@
 <a name="gstreamer-plugins-filesrc.description"></a><h2>Description</h2>
 <p>Read data from a file in the local file system.</p>
 <div class="refsect2">
-<a name="id-1.2.8.8.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.9.8.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>song<span class="gtkdoc opt">.</span>ogg <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>song<span class="gtkdoc opt">.</span>ogg <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
       </tr>
     </tbody>
   </table>
 </div>
- Play a song.ogg from local dir.
+ Play song.ogg audio file which must be in the current working directory.
 </div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.8.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.9.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -125,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.8.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.9.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -152,11 +152,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-filesrc.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-filesrc.other_details"></a><h2>Types and Values</h2>
@@ -182,7 +181,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-funnel.html b/docs/plugins/html/gstreamer-plugins-funnel.html
index c01f7d6..2f9da4e 100644
--- a/docs/plugins/html/gstreamer-plugins-funnel.html
+++ b/docs/plugins/html/gstreamer-plugins-funnel.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: funnel</title>
+<title>funnel: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-filesink.html" title="filesink">
 <link rel="next" href="gstreamer-plugins-identity.html" title="identity">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,7 +16,8 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#gstreamer-plugins-funnel.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gstreamer-plugins-funnel.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+                  <a href="#gstreamer-plugins-funnel.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-funnel.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -28,10 +29,25 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-funnel.top_of_page"></a>funnel</span></h2>
-<p>funnel — N-to-1 pipe fitting</p>
+<p>funnel</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-plugins-funnel.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-funnel.html#GstFunnel--forward-sticky-events" title="The “forward-sticky-events” property">forward-sticky-events</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
 <a name="GstFunnel"></a><div class="refsect1">
 <a name="gstreamer-plugins-funnel.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -58,7 +74,7 @@
 <a name="gstreamer-plugins-funnel.description"></a><h2>Description</h2>
 <p>Takes packets from various input sinks into one output source.</p>
 <p>funnel always outputs a single, open ended segment from
-0 with in <code class="literal">GST_FORMAT_TIME</code> and outputs the buffers of the
+0 with in <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> and outputs the buffers of the
 different sinkpads with timestamps that are set to the
 running time for that stream. funnel does not synchronize
 the different input streams but simply forwards all buffers
@@ -66,7 +82,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.10.6.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.11.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -92,7 +108,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.10.6.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.11.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -143,11 +159,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-funnel.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-funnel.other_details"></a><h2>Types and Values</h2>
@@ -157,9 +172,18 @@
 <p>Opaque <a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a> data structure.</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gstreamer-plugins-funnel.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstFunnel--forward-sticky-events"></a><h3>The <code class="literal">“forward-sticky-events”</code> property</h3>
+<pre class="programlisting">  “forward-sticky-events”    <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Forward sticky events on stream changes.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+</div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-identity.html b/docs/plugins/html/gstreamer-plugins-identity.html
index 82fd87e..cc0c202 100644
--- a/docs/plugins/html/gstreamer-plugins-identity.html
+++ b/docs/plugins/html/gstreamer-plugins-identity.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: identity</title>
+<title>identity: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-funnel.html" title="funnel">
 <link rel="next" href="gstreamer-plugins-input-selector.html" title="input-selector">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-identity.top_of_page"></a>identity</span></h2>
-<p>identity — Pass data without modification</p>
+<p>identity</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -118,7 +118,7 @@
 <tbody><tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-identity.html#GstIdentity-handoff" title="The “handoff” signal">handoff</a></td>
-<td class="signal_flags">Run Last</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -152,7 +152,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.11.8.2.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.12.8.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -178,7 +178,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.11.8.2.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.12.8.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -229,11 +229,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-identity.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-identity.other_details"></a><h2>Types and Values</h2>
@@ -354,7 +353,7 @@
                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>     user_data)</pre>
 <p>This signal gets emitted before passing the buffer downstream.</p>
 <div class="refsect3">
-<a name="id-1.2.11.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.12.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -385,12 +384,11 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-input-selector.html b/docs/plugins/html/gstreamer-plugins-input-selector.html
index 41863d4..e7d58b3 100644
--- a/docs/plugins/html/gstreamer-plugins-input-selector.html
+++ b/docs/plugins/html/gstreamer-plugins-input-selector.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: input-selector</title>
+<title>input-selector: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-identity.html" title="identity">
 <link rel="next" href="gstreamer-plugins-multiqueue.html" title="multiqueue">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,8 +17,7 @@
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#gstreamer-plugins-input-selector.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                   <a href="#gstreamer-plugins-input-selector.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
-                  <a href="#gstreamer-plugins-input-selector.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
-                  <a href="#gstreamer-plugins-input-selector.signals" class="shortcut">Signals</a></span>
+                  <a href="#gstreamer-plugins-input-selector.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -30,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-input-selector.top_of_page"></a>input-selector</span></h2>
-<p>input-selector — N-to-1 input stream selector</p>
+<p>input-selector</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -72,21 +71,6 @@
 </tbody>
 </table></div>
 </div>
-<div class="refsect1">
-<a name="gstreamer-plugins-input-selector.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
-<colgroup>
-<col width="150px" class="signals_return">
-<col width="300px" class="signals_name">
-<col width="200px" class="signals_flags">
-</colgroup>
-<tbody><tr>
-<td class="signal_type"><span class="returnvalue">gint64</span></td>
-<td class="signal_name"><a class="link" href="gstreamer-plugins-input-selector.html#GstInputSelector-block" title="The “block” signal">block</a></td>
-<td class="signal_flags">Action</td>
-</tr></tbody>
-</table></div>
-</div>
 <a name="GstInputSelector"></a><div class="refsect1">
 <a name="gstreamer-plugins-input-selector.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -131,14 +115,14 @@
 "active": If the pad is currently active (<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>)
 </li>
 <li class="listitem">
-"always-ok" : Make an inactive pads return <span class="type">GST_FLOW_OK</span> instead of
-<span class="type">GST_FLOW_NOT_LINKED</span>
+"always-ok" : Make an inactive pads return <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> instead of
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-NOT-LINKED:CAPS"><span class="type">GST_FLOW_NOT_LINKED</span></a>
 </li>
 </ul></div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.12.8.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.13.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -164,7 +148,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.12.8.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.13.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -215,26 +199,23 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-input-selector.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-input-selector.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
 <a name="GstInputSelector-struct"></a><h3>struct GstInputSelector</h3>
 <pre class="programlisting">struct GstInputSelector;</pre>
-<p>
-</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GstInputSelectorSyncMode"></a><h3>enum GstInputSelectorSyncMode</h3>
 <p>The different ways that input-selector can behave when in sync-streams mode.</p>
 <div class="refsect3">
-<a name="id-1.2.12.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.13.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -317,47 +298,11 @@
 </div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-plugins-input-selector.signal-details"></a><h2>Signal Details</h2>
-<div class="refsect2">
-<a name="GstInputSelector-block"></a><h3>The <code class="literal">“block”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">gint64</span>
-user_function (<a class="link" href="gstreamer-plugins-input-selector.html#GstInputSelector"><span class="type">GstInputSelector</span></a> *inputselector,
-               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>          user_data)</pre>
-<p>Block all sink pads in preparation for a switch. Returns the stop time of
-the current switch segment, as a running time, or 0 if there is no current
-active pad or the current active pad never received data.</p>
-<div class="refsect3">
-<a name="id-1.2.12.12.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>inputselector</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gstreamer-plugins-input-selector.html#GstInputSelector"><span class="type">GstInputSelector</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Action</p>
-</div>
-</div>
-<div class="refsect1">
 <a name="gstreamer-plugins-input-selector.see-also"></a><h2>See Also</h2>
 <p><a class="link" href="gstreamer-plugins-output-selector.html#GstOutputSelector"><span class="type">GstOutputSelector</span></a></p>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-multiqueue.html b/docs/plugins/html/gstreamer-plugins-multiqueue.html
index f6c0c67..5310e54 100644
--- a/docs/plugins/html/gstreamer-plugins-multiqueue.html
+++ b/docs/plugins/html/gstreamer-plugins-multiqueue.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: multiqueue</title>
+<title>multiqueue: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-input-selector.html" title="input-selector">
 <link rel="next" href="gstreamer-plugins-output-selector.html" title="output-selector">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-multiqueue.top_of_page"></a>multiqueue</span></h2>
-<p>multiqueue — Multiple data queue</p>
+<p>multiqueue</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -108,12 +108,12 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun" title="The “overrun” signal">overrun</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun" title="The “underrun” signal">underrun</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -143,7 +143,7 @@
 <div class="refsect1">
 <a name="gstreamer-plugins-multiqueue.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.8.2"></a><p>
+<a name="id-1.2.14.8.2"></a><p>
 Multiqueue is similar to a normal <a class="link" href="gstreamer-plugins-queue.html#GstQueue"><span class="type">GstQueue</span></a> with the following additional
 features:
 </p>
@@ -153,8 +153,8 @@
 <ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
 <p>
     The element handles queueing data on more than one stream at once. To
-    achieve such a feature it has request sink pads (sink%u) and
-    'sometimes' src pads (src%u).
+    achieve such a feature it has request sink pads (sinku) and
+    'sometimes' src pads (srcu).
   </p>
 <p>
     When requesting a given sinkpad with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-request-pad"><code class="function">gst_element_request_pad()</code></a>,
@@ -228,7 +228,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.13.8.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.14.8.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -254,7 +254,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.13.8.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.14.8.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -305,11 +305,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-multiqueue.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-multiqueue.other_details"></a><h2>Types and Values</h2>
@@ -421,7 +420,7 @@
 GObject properties.</p>
 <p>This can be used as an indicator of pre-roll.</p>
 <div class="refsect3">
-<a name="id-1.2.13.12.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.12.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -442,7 +441,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -454,7 +453,7 @@
 no data in any of the queues inside the multiqueue instance (underrun).</p>
 <p>This indicates either starvation or EOS from the upstream data sources.</p>
 <div class="refsect3">
-<a name="id-1.2.13.12.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.12.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -475,7 +474,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 </div>
 <div class="refsect1">
@@ -484,7 +483,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-output-selector.html b/docs/plugins/html/gstreamer-plugins-output-selector.html
index 14f9a10..7e019f0 100644
--- a/docs/plugins/html/gstreamer-plugins-output-selector.html
+++ b/docs/plugins/html/gstreamer-plugins-output-selector.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: output-selector</title>
+<title>output-selector: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-multiqueue.html" title="multiqueue">
 <link rel="next" href="gstreamer-plugins-queue.html" title="queue">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -29,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-output-selector.top_of_page"></a>output-selector</span></h2>
-<p>output-selector — 1-to-N output stream selector</p>
+<p>output-selector</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -95,7 +95,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.14.7.2.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.15.7.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -121,7 +121,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.14.7.2.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.15.7.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -172,26 +172,23 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-output-selector.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-output-selector.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
 <a name="GstOutputSelector-struct"></a><h3>struct GstOutputSelector</h3>
 <pre class="programlisting">struct GstOutputSelector;</pre>
-<p>
-</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GstOutputSelectorPadNegotiationMode"></a><h3>enum GstOutputSelectorPadNegotiationMode</h3>
 <p>To what output pad the input stream should be directed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.9.3.4"></a><h4>Members</h4>
+<a name="id-1.2.15.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -260,7 +257,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
index 4602abf..d4568ab 100644
--- a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
+++ b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: coreelements</title>
+<title>coreelements: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gstreamer Plugins">
 <link rel="prev" href="ch02.html" title="gstreamer Plugins">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.4.5</td>
+<td>1.5.91</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -71,6 +71,10 @@
 <td>Pass data without modification, limiting formats</td>
 </tr>
 <tr>
+<td><p><span class="term"><a class="link" href="gstreamer-plugins-concat.html" title="concat">concat</a></span></p></td>
+<td>Concatenate multiple streams</td>
+</tr>
+<tr>
 <td><p><span class="term"><a class="link" href="gstreamer-plugins-downloadbuffer.html" title="downloadbuffer">downloadbuffer</a></span></p></td>
 <td>Download Buffer element</td>
 </tr>
@@ -127,6 +131,10 @@
 <td>Simple data queue</td>
 </tr>
 <tr>
+<td><p><span class="term"><a class="link" href="gstreamer-plugins-streamiddemux.html" title="streamiddemux">streamiddemux</a></span></p></td>
+<td>1-to-N output stream by stream-id</td>
+</tr>
+<tr>
 <td><p><span class="term"><a class="link" href="gstreamer-plugins-tee.html" title="tee">tee</a></span></p></td>
 <td>1-to-N pipe fitting</td>
 </tr>
@@ -143,7 +151,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-queue.html b/docs/plugins/html/gstreamer-plugins-queue.html
index eca1ab6..350909f 100644
--- a/docs/plugins/html/gstreamer-plugins-queue.html
+++ b/docs/plugins/html/gstreamer-plugins-queue.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: queue</title>
+<title>queue: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-output-selector.html" title="output-selector">
 <link rel="next" href="gstreamer-plugins-queue2.html" title="queue2">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-queue.top_of_page"></a>queue</span></h2>
-<p>queue — Simple data queue</p>
+<p>queue</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -118,22 +118,22 @@
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-queue.html#GstQueue-overrun" title="The “overrun” signal">overrun</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="gstreamer-plugins-queue.html#GstQueue-pushing" title="The “pushing” signal">pushing</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="gstreamer-plugins-queue.html#GstQueue-running" title="The “running” signal">running</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-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="gstreamer-plugins-queue.html#GstQueue-underrun" title="The “underrun” signal">underrun</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
 </tr>
 </tbody>
 </table></div>
@@ -194,7 +194,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.15.8.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.16.8.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -220,7 +220,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.15.8.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.16.8.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -271,11 +271,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-queue.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-queue.other_details"></a><h2>Types and Values</h2>
@@ -289,7 +288,7 @@
 <a name="GstQueueLeaky"></a><h3>enum GstQueueLeaky</h3>
 <p>Buffer dropping scheme to avoid the queue to block when full.</p>
 <div class="refsect3">
-<a name="id-1.2.15.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.16.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -362,7 +361,7 @@
 max. sizes though).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
-<p class="since">Since 1.2</p>
+<p class="since">Since: 1.2</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -442,7 +441,7 @@
 size) is higher than the boundary values which can be set through the
 GObject properties.</p>
 <div class="refsect3">
-<a name="id-1.2.15.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.16.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -463,7 +462,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -474,7 +473,7 @@
 <p>Reports when the queue has enough data to start pushing data again on the
 source pad.</p>
 <div class="refsect3">
-<a name="id-1.2.15.12.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.16.12.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -495,7 +494,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -507,7 +506,7 @@
 together with the underrun signal to pause the pipeline on underrun and
 wait for the queue to fill-up before resume playback.</p>
 <div class="refsect3">
-<a name="id-1.2.15.12.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.16.12.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -528,7 +527,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 <hr>
 <div class="refsect2">
@@ -541,7 +540,7 @@
 size) is lower than the boundary values which can be set through the
 GObject properties.</p>
 <div class="refsect3">
-<a name="id-1.2.15.12.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.16.12.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -562,12 +561,11 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-queue2.html b/docs/plugins/html/gstreamer-plugins-queue2.html
index 7ffbfb4..d284f09 100644
--- a/docs/plugins/html/gstreamer-plugins-queue2.html
+++ b/docs/plugins/html/gstreamer-plugins-queue2.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: queue2</title>
+<title>queue2: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-queue.html" title="queue">
-<link rel="next" href="gstreamer-plugins-tee.html" title="tee">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<link rel="next" href="gstreamer-plugins-streamiddemux.html" title="streamiddemux">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,14 +22,14 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gstreamer-plugins-queue.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-plugins-tee.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-plugins-streamiddemux.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gstreamer-plugins-queue2"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-queue2.top_of_page"></a>queue2</span></h2>
-<p>queue2 — Simple data queue</p>
+<p>queue2</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -161,7 +161,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.16.7.7.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.17.7.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -187,7 +187,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.16.7.7.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.17.7.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -238,19 +238,16 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-queue2.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-queue2.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
 <a name="GstQueue2-struct"></a><h3>struct GstQueue2</h3>
 <pre class="programlisting">struct GstQueue2;</pre>
-<p>
-</p>
 </div>
 </div>
 <div class="refsect1">
@@ -372,7 +369,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-streamiddemux.html b/docs/plugins/html/gstreamer-plugins-streamiddemux.html
new file mode 100644
index 0000000..4c0280e
--- /dev/null
+++ b/docs/plugins/html/gstreamer-plugins-streamiddemux.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>streamiddemux: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gstreamer Elements">
+<link rel="prev" href="gstreamer-plugins-queue2.html" title="queue2">
+<link rel="next" href="gstreamer-plugins-tee.html" title="tee">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-streamiddemux.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-streamiddemux.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-streamiddemux.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gstreamer-plugins-queue2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-plugins-tee.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-plugins-streamiddemux"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-plugins-streamiddemux.top_of_page"></a>streamiddemux</span></h2>
+<p>streamiddemux</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *</td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux--active-pad" title="The “active-pad” property">active-pad</a></td>
+<td class="property_flags">Read</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstStreamidDemux"></a><div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux-struct" title="struct GstStreamidDemux">GstStreamidDemux</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+    <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+            <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+                <span class="lineart">╰──</span> GstStreamidDemux
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.description"></a><h2>Description</h2>
+<p>The basic concept was started from de-funneling element which restores one
+serialized stream via <a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a> to its original state. <a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux"><span class="type">GstStreamidDemux</span></a>
+classifies each stream base on stream ids.</p>
+<p>The stream id demux always takes one input and checks how many streams
+are contained in a stream by STREAM_START event. Likewise <a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a>,
+<a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux"><span class="type">GstStreamidDemux</span></a> does not synchronize the different output streams.</p>
+<p><a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux--active-pad" title="The “active-pad” property"><span class="type">“active-pad”</span></a> provides information about which output pad
+is activated at the moment.</p>
+<p><em class="parameter"><code>see_also</code></em>
+: <a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-start"><span class="type">gst_event_new_stream_start</span></a></p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.18.7.6.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gstreamer-plugins-plugin-coreelements.html#plugin-coreelements">coreelements</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>HoonHee Lee &lt;hoonhee.lee@lge.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Generic</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.18.7.6.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>sometimes</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstStreamidDemux-struct"></a><h3>struct GstStreamidDemux</h3>
+<pre class="programlisting">struct GstStreamidDemux;</pre>
+<p>The opaque <a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux"><span class="type">GstStreamidDemux</span></a> data structure.</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-streamiddemux.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstStreamidDemux--active-pad"></a><h3>The <code class="literal">“active-pad”</code> property</h3>
+<pre class="programlisting">  “active-pad”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> *</pre>
+<p>The currently active src pad.</p>
+<p>Flags: Read</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.24</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-tee.html b/docs/plugins/html/gstreamer-plugins-tee.html
index 66298f3..d42555e 100644
--- a/docs/plugins/html/gstreamer-plugins-tee.html
+++ b/docs/plugins/html/gstreamer-plugins-tee.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: tee</title>
+<title>tee: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
-<link rel="prev" href="gstreamer-plugins-queue2.html" title="queue2">
+<link rel="prev" href="gstreamer-plugins-streamiddemux.html" title="streamiddemux">
 <link rel="next" href="gstreamer-plugins-typefind.html" title="typefind">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gstreamer-plugins-queue2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-plugins-streamiddemux.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-plugins-typefind.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -29,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-tee.top_of_page"></a>tee</span></h2>
-<p>tee — 1-to-N pipe fitting</p>
+<p>tee</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -74,6 +74,11 @@
 <td class="property_name"><a class="link" href="gstreamer-plugins-tee.html#GstTee--silent" title="The “silent” property">silent</a></td>
 <td class="property_flags">Read / Write / Construct</td>
 </tr>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-tee.html#GstTee--allow-not-linked" title="The “allow-not-linked” property">allow-not-linked</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -115,24 +120,25 @@
 provide separate threads for each branch. Otherwise a blocked dataflow in one
 branch would stall the other branches.</p>
 <div class="refsect2">
-<a name="id-1.2.17.7.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.19.7.4"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
       <tr>
         <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>song<span class="gtkdoc opt">.</span>ogg <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> tee name<span class="gtkdoc opt">=</span>t <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> autoaudiosink t<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> goom <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>song<span class="gtkdoc opt">.</span>ogg <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> tee name<span class="gtkdoc opt">=</span>t <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink t<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> goom <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
       </tr>
     </tbody>
   </table>
 </div>
- Play a song.ogg from local dir and render visualisations using the goom
-element.
+ Play song.ogg audio file which must be in the current working directory
+and render visualisations using the goom element (this can be easier done
+using the playbin element, this is just an example pipeline).
 </div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.17.7.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.19.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -158,7 +164,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.17.7.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.19.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -209,11 +215,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-tee.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-tee.other_details"></a><h2>Types and Values</h2>
@@ -229,7 +234,7 @@
 
 disables pull mode.</p>
 <div class="refsect3">
-<a name="id-1.2.17.9.3.4"></a><h4>Members</h4>
+<a name="id-1.2.19.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -305,6 +310,18 @@
 <p>Flags: Read / Write / Construct</p>
 <p>Default value: TRUE</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstTee--allow-not-linked"></a><h3>The <code class="literal">“allow-not-linked”</code> property</h3>
+<pre class="programlisting">  “allow-not-linked”         <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>This property makes sink pad return GST_FLOW_OK even if there are no
+source pads or any of them is linked.</p>
+<p>This is useful to avoid errors when you have a dynamic pipeline and during
+a reconnection you can have all the pads unlinked or removed.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: FALSE</p>
+<p class="since">Since: 1.6</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-tee.see-also"></a><h2>See Also</h2>
@@ -312,7 +329,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-typefind.html b/docs/plugins/html/gstreamer-plugins-typefind.html
index fc72585..064f94d 100644
--- a/docs/plugins/html/gstreamer-plugins-typefind.html
+++ b/docs/plugins/html/gstreamer-plugins-typefind.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: typefind</title>
+<title>typefind: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-tee.html" title="tee">
 <link rel="next" href="gstreamer-plugins-valve.html" title="valve">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-typefind.top_of_page"></a>typefind</span></h2>
-<p>typefind — Finds the media type of a stream</p>
+<p>typefind</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -74,7 +74,7 @@
 <tbody><tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gstreamer-plugins-typefind.html#GstTypeFindElement-have-type" title="The “have-type” signal">have-type</a></td>
-<td class="signal_flags">Run First</td>
+<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -113,7 +113,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.18.8.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.20.8.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -139,7 +139,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.18.8.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.20.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -190,11 +190,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-typefind.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-typefind.other_details"></a><h2>Types and Values</h2>
@@ -241,7 +240,7 @@
 <p>This signal gets emitted when the type and its probability has
 been found.</p>
 <div class="refsect3">
-<a name="id-1.2.18.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.20.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -272,12 +271,11 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run First</p>
+<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-valve.html b/docs/plugins/html/gstreamer-plugins-valve.html
index 7fcb942..27805bb 100644
--- a/docs/plugins/html/gstreamer-plugins-valve.html
+++ b/docs/plugins/html/gstreamer-plugins-valve.html
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: valve</title>
+<title>valve: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gstreamer Elements">
 <link rel="prev" href="gstreamer-plugins-typefind.html" title="typefind">
 <link rel="next" href="ch02.html" title="gstreamer Plugins">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -29,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gstreamer-plugins-valve.top_of_page"></a>valve</span></h2>
-<p>valve — Drops buffers and events or lets them through</p>
+<p>valve</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -75,12 +75,12 @@
 <p>The valve is a simple element that drops buffers when the <a class="link" href="gstreamer-plugins-valve.html#GstValve--drop" title="The “drop” property"><span class="type">“drop”</span></a>
 property is set to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> and lets then through otherwise.</p>
 <p>Any downstream error received while the <a class="link" href="gstreamer-plugins-valve.html#GstValve--drop" title="The “drop” property"><span class="type">“drop”</span></a> property is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>
-is ignored. So downstream element can be set to  <code class="literal">GST_STATE_NULL</code> and removed,
+is ignored. So downstream element can be set to  <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-NULL:CAPS"><code class="literal">GST_STATE_NULL</code></a> and removed,
 without using pad blocking.</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.19.7.3.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.21.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -106,7 +106,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.19.7.3.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.21.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -157,11 +157,10 @@
 </table></div>
 </div>
 </div>
-<p>
-</p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-valve.functions_details"></a><h2>Functions</h2>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-valve.other_details"></a><h2>Types and Values</h2>
@@ -183,7 +182,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 33921af..f87488e 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
 <link rel="next" href="ch01.html" title="gstreamer Elements">
-<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -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.4.5)
+      for GStreamer Core Plugins 1.0 (1.5.91)
       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>
@@ -26,68 +26,73 @@
 <dt><span class="chapter"><a href="ch01.html">gstreamer Elements</a></span></dt>
 <dd><dl>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-capsfilter.html">capsfilter</a></span><span class="refpurpose"> — Pass data without modification, limiting formats</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-capsfilter.html">capsfilter</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"> — Download Buffer element</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-concat.html">concat</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fakesrc.html">fakesrc</a></span><span class="refpurpose"> — Push empty (no data) buffers around</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fakesink.html">fakesink</a></span><span class="refpurpose"> — Black hole for data</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fakesrc.html">fakesrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fdsink.html">fdsink</a></span><span class="refpurpose"> — Write data to a file descriptor</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fakesink.html">fakesink</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-fdsrc.html">fdsrc</a></span><span class="refpurpose"> — Read from a file descriptor</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fdsink.html">fdsink</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-filesrc.html">filesrc</a></span><span class="refpurpose"> — Read from arbitrary point in a file</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-fdsrc.html">fdsrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-filesink.html">filesink</a></span><span class="refpurpose"> — Write stream to a file</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-filesrc.html">filesrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-funnel.html">funnel</a></span><span class="refpurpose"> — N-to-1 pipe fitting</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-filesink.html">filesink</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-identity.html">identity</a></span><span class="refpurpose"> — Pass data without modification</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-funnel.html">funnel</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-input-selector.html">input-selector</a></span><span class="refpurpose"> — N-to-1 input stream selector</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-identity.html">identity</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-multiqueue.html">multiqueue</a></span><span class="refpurpose"> — Multiple data queue</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-input-selector.html">input-selector</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-output-selector.html">output-selector</a></span><span class="refpurpose"> — 1-to-N output stream selector</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-multiqueue.html">multiqueue</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-queue.html">queue</a></span><span class="refpurpose"> — Simple data queue</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-output-selector.html">output-selector</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-queue2.html">queue2</a></span><span class="refpurpose"> — Simple data queue</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-queue.html">queue</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-tee.html">tee</a></span><span class="refpurpose"> — 1-to-N pipe fitting</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-queue2.html">queue2</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-typefind.html">typefind</a></span><span class="refpurpose"> — Finds the media type of a stream</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-streamiddemux.html">streamiddemux</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-valve.html">valve</a></span><span class="refpurpose"> — Drops buffers and events or lets them through</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-tee.html">tee</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-plugins-typefind.html">typefind</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-plugins-valve.html">valve</a></span><span class="refpurpose"></span>
 </dt>
 </dl></dd>
 <dt><span class="chapter"><a href="ch02.html">gstreamer Plugins</a></span></dt>
 <dd><dl><dt>
-<span class="refentrytitle"><a href="gstreamer-plugins-plugin-coreelements.html">coreelements</a></span><span class="refpurpose">GStreamer core elements</span>
+<span class="refentrytitle"><a href="gstreamer-plugins-plugin-coreelements.html">coreelements</a></span><span class="refpurpose"> — GStreamer core elements</span>
 </dt></dl></dd>
 </dl></div>
 </div>
 <div class="footer">
-<hr>
-          Generated by GTK-Doc V1.21</div>
+<hr>Generated by GTK-Doc V1.24</div>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index 99195c8..4065783 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -8,8 +8,25 @@
 <ANCHOR id="gstreamer-plugins-capsfilter.functions_details" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#gstreamer-plugins-capsfilter.functions_details">
 <ANCHOR id="gstreamer-plugins-capsfilter.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#gstreamer-plugins-capsfilter.other_details">
 <ANCHOR id="GstCapsFilter-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GstCapsFilter-struct">
+<ANCHOR id="GstCapsFilterCapsChangeMode" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GstCapsFilterCapsChangeMode">
+<ANCHOR id="GST-CAPS-FILTER-CAPS-CHANGE-MODE-IMMEDIATE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GST-CAPS-FILTER-CAPS-CHANGE-MODE-IMMEDIATE:CAPS">
+<ANCHOR id="GST-CAPS-FILTER-CAPS-CHANGE-MODE-DELAYED:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GST-CAPS-FILTER-CAPS-CHANGE-MODE-DELAYED:CAPS">
 <ANCHOR id="gstreamer-plugins-capsfilter.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#gstreamer-plugins-capsfilter.property-details">
 <ANCHOR id="GstCapsFilter--caps" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GstCapsFilter--caps">
+<ANCHOR id="GstCapsFilter--caps-change-mode" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GstCapsFilter--caps-change-mode">
+<ANCHOR id="gstreamer-plugins-concat" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html">
+<ANCHOR id="gstreamer-plugins-concat.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.properties">
+<ANCHOR id="GstConcat" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#GstConcat">
+<ANCHOR id="gstreamer-plugins-concat.other" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.other">
+<ANCHOR id="gstreamer-plugins-concat.object-hierarchy" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.object-hierarchy">
+<ANCHOR id="gstreamer-plugins-concat.description" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.description">
+<ANCHOR id="gstreamer-plugins-concat.functions_details" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.functions_details">
+<ANCHOR id="gstreamer-plugins-concat.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.other_details">
+<ANCHOR id="GstConcat-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#GstConcat-struct">
+<ANCHOR id="gstreamer-plugins-concat.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.property-details">
+<ANCHOR id="GstConcat--active-pad" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#GstConcat--active-pad">
+<ANCHOR id="GstConcat--adjust-base" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#GstConcat--adjust-base">
+<ANCHOR id="gstreamer-plugins-concat.see-also" href="gstreamer-plugins-1.0/gstreamer-plugins-concat.html#gstreamer-plugins-concat.see-also">
 <ANCHOR id="gstreamer-plugins-downloadbuffer" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html">
 <ANCHOR id="gstreamer-plugins-downloadbuffer.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.properties">
 <ANCHOR id="GstDownloadBuffer" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer">
@@ -38,9 +55,27 @@
 <ANCHOR id="gstreamer-plugins-fakesrc.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#gstreamer-plugins-fakesrc.other_details">
 <ANCHOR id="GstFakeSrc-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrc-struct">
 <ANCHOR id="GstFakeSrcDataType" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrcDataType">
+<ANCHOR id="FAKE-SRC-DATA-ALLOCATE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-DATA-ALLOCATE:CAPS">
+<ANCHOR id="FAKE-SRC-DATA-SUBBUFFER:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-DATA-SUBBUFFER:CAPS">
 <ANCHOR id="GstFakeSrcFillType" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrcFillType">
+<ANCHOR id="FAKE-SRC-FILLTYPE-NOTHING:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-NOTHING:CAPS">
+<ANCHOR id="FAKE-SRC-FILLTYPE-ZERO:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-ZERO:CAPS">
+<ANCHOR id="FAKE-SRC-FILLTYPE-RANDOM:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-RANDOM:CAPS">
+<ANCHOR id="FAKE-SRC-FILLTYPE-PATTERN:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-PATTERN:CAPS">
+<ANCHOR id="FAKE-SRC-FILLTYPE-PATTERN-CONT:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-FILLTYPE-PATTERN-CONT:CAPS">
 <ANCHOR id="GstFakeSrcOutputType" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrcOutputType">
+<ANCHOR id="FAKE-SRC-FIRST-LAST-LOOP:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-FIRST-LAST-LOOP:CAPS">
+<ANCHOR id="FAKE-SRC-LAST-FIRST-LOOP:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-LAST-FIRST-LOOP:CAPS">
+<ANCHOR id="FAKE-SRC-PING-PONG:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-PING-PONG:CAPS">
+<ANCHOR id="FAKE-SRC-ORDERED-RANDOM:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-ORDERED-RANDOM:CAPS">
+<ANCHOR id="FAKE-SRC-RANDOM:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-RANDOM:CAPS">
+<ANCHOR id="FAKE-SRC-PATTERN-LOOP:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-PATTERN-LOOP:CAPS">
+<ANCHOR id="FAKE-SRC-PING-PONG-PATTERN:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-PING-PONG-PATTERN:CAPS">
+<ANCHOR id="FAKE-SRC-GET-ALWAYS-SUCEEDS:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-GET-ALWAYS-SUCEEDS:CAPS">
 <ANCHOR id="GstFakeSrcSizeType" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrcSizeType">
+<ANCHOR id="FAKE-SRC-SIZETYPE-EMPTY:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-SIZETYPE-EMPTY:CAPS">
+<ANCHOR id="FAKE-SRC-SIZETYPE-FIXED:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-SIZETYPE-FIXED:CAPS">
+<ANCHOR id="FAKE-SRC-SIZETYPE-RANDOM:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#FAKE-SRC-SIZETYPE-RANDOM:CAPS">
 <ANCHOR id="gstreamer-plugins-fakesrc.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#gstreamer-plugins-fakesrc.property-details">
 <ANCHOR id="GstFakeSrc--can-activate-pull" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrc--can-activate-pull">
 <ANCHOR id="GstFakeSrc--can-activate-push" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#GstFakeSrc--can-activate-push">
@@ -73,6 +108,13 @@
 <ANCHOR id="gstreamer-plugins-fakesink.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#gstreamer-plugins-fakesink.other_details">
 <ANCHOR id="GstFakeSink-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#GstFakeSink-struct">
 <ANCHOR id="GstFakeSinkStateError" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#GstFakeSinkStateError">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-NONE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-NONE:CAPS">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-NULL-READY:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-NULL-READY:CAPS">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-READY-PAUSED:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-READY-PAUSED:CAPS">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-PAUSED-PLAYING:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-PAUSED-PLAYING:CAPS">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-PLAYING-PAUSED:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-PLAYING-PAUSED:CAPS">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-PAUSED-READY:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-PAUSED-READY:CAPS">
+<ANCHOR id="FAKE-SINK-STATE-ERROR-READY-NULL:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#FAKE-SINK-STATE-ERROR-READY-NULL:CAPS">
 <ANCHOR id="gstreamer-plugins-fakesink.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#gstreamer-plugins-fakesink.property-details">
 <ANCHOR id="GstFakeSink--can-activate-pull" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#GstFakeSink--can-activate-pull">
 <ANCHOR id="GstFakeSink--can-activate-push" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesink.html#GstFakeSink--can-activate-push">
@@ -136,6 +178,11 @@
 <ANCHOR id="gstreamer-plugins-filesink.functions_details" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#gstreamer-plugins-filesink.functions_details">
 <ANCHOR id="gstreamer-plugins-filesink.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#gstreamer-plugins-filesink.other_details">
 <ANCHOR id="GstFileSink-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GstFileSink-struct">
+<ANCHOR id="GstFileSinkBufferMode" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GstFileSinkBufferMode">
+<ANCHOR id="GST-FILE-SINK-BUFFER-MODE-DEFAULT:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-DEFAULT:CAPS">
+<ANCHOR id="GST-FILE-SINK-BUFFER-MODE-FULL:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-FULL:CAPS">
+<ANCHOR id="GST-FILE-SINK-BUFFER-MODE-LINE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-LINE:CAPS">
+<ANCHOR id="GST-FILE-SINK-BUFFER-MODE-UNBUFFERED:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GST-FILE-SINK-BUFFER-MODE-UNBUFFERED:CAPS">
 <ANCHOR id="gstreamer-plugins-filesink.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#gstreamer-plugins-filesink.property-details">
 <ANCHOR id="GstFileSink--append" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GstFileSink--append">
 <ANCHOR id="GstFileSink--buffer-mode" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GstFileSink--buffer-mode">
@@ -143,6 +190,7 @@
 <ANCHOR id="GstFileSink--location" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#GstFileSink--location">
 <ANCHOR id="gstreamer-plugins-filesink.see-also" href="gstreamer-plugins-1.0/gstreamer-plugins-filesink.html#gstreamer-plugins-filesink.see-also">
 <ANCHOR id="gstreamer-plugins-funnel" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html">
+<ANCHOR id="gstreamer-plugins-funnel.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#gstreamer-plugins-funnel.properties">
 <ANCHOR id="GstFunnel" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#GstFunnel">
 <ANCHOR id="gstreamer-plugins-funnel.other" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#gstreamer-plugins-funnel.other">
 <ANCHOR id="gstreamer-plugins-funnel.object-hierarchy" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#gstreamer-plugins-funnel.object-hierarchy">
@@ -150,6 +198,8 @@
 <ANCHOR id="gstreamer-plugins-funnel.functions_details" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#gstreamer-plugins-funnel.functions_details">
 <ANCHOR id="gstreamer-plugins-funnel.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#gstreamer-plugins-funnel.other_details">
 <ANCHOR id="GstFunnel-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#GstFunnel-struct">
+<ANCHOR id="gstreamer-plugins-funnel.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#gstreamer-plugins-funnel.property-details">
+<ANCHOR id="GstFunnel--forward-sticky-events" href="gstreamer-plugins-1.0/gstreamer-plugins-funnel.html#GstFunnel--forward-sticky-events">
 <ANCHOR id="gstreamer-plugins-identity" href="gstreamer-plugins-1.0/gstreamer-plugins-identity.html">
 <ANCHOR id="gstreamer-plugins-identity.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-identity.html#gstreamer-plugins-identity.properties">
 <ANCHOR id="gstreamer-plugins-identity.signals" href="gstreamer-plugins-1.0/gstreamer-plugins-identity.html#gstreamer-plugins-identity.signals">
@@ -177,7 +227,6 @@
 <ANCHOR id="GstIdentity-handoff" href="gstreamer-plugins-1.0/gstreamer-plugins-identity.html#GstIdentity-handoff">
 <ANCHOR id="gstreamer-plugins-input-selector" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html">
 <ANCHOR id="gstreamer-plugins-input-selector.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.properties">
-<ANCHOR id="gstreamer-plugins-input-selector.signals" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.signals">
 <ANCHOR id="GstInputSelector" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector">
 <ANCHOR id="gstreamer-plugins-input-selector.other" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.other">
 <ANCHOR id="gstreamer-plugins-input-selector.object-hierarchy" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.object-hierarchy">
@@ -186,14 +235,14 @@
 <ANCHOR id="gstreamer-plugins-input-selector.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.other_details">
 <ANCHOR id="GstInputSelector-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector-struct">
 <ANCHOR id="GstInputSelectorSyncMode" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelectorSyncMode">
+<ANCHOR id="GST-INPUT-SELECTOR-SYNC-MODE-ACTIVE-SEGMENT:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GST-INPUT-SELECTOR-SYNC-MODE-ACTIVE-SEGMENT:CAPS">
+<ANCHOR id="GST-INPUT-SELECTOR-SYNC-MODE-CLOCK:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GST-INPUT-SELECTOR-SYNC-MODE-CLOCK:CAPS">
 <ANCHOR id="gstreamer-plugins-input-selector.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.property-details">
 <ANCHOR id="GstInputSelector--active-pad" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector--active-pad">
 <ANCHOR id="GstInputSelector--cache-buffers" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector--cache-buffers">
 <ANCHOR id="GstInputSelector--n-pads" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector--n-pads">
 <ANCHOR id="GstInputSelector--sync-mode" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector--sync-mode">
 <ANCHOR id="GstInputSelector--sync-streams" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector--sync-streams">
-<ANCHOR id="gstreamer-plugins-input-selector.signal-details" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.signal-details">
-<ANCHOR id="GstInputSelector-block" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#GstInputSelector-block">
 <ANCHOR id="gstreamer-plugins-input-selector.see-also" href="gstreamer-plugins-1.0/gstreamer-plugins-input-selector.html#gstreamer-plugins-input-selector.see-also">
 <ANCHOR id="gstreamer-plugins-multiqueue" href="gstreamer-plugins-1.0/gstreamer-plugins-multiqueue.html">
 <ANCHOR id="gstreamer-plugins-multiqueue.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-multiqueue.html#gstreamer-plugins-multiqueue.properties">
@@ -230,6 +279,9 @@
 <ANCHOR id="gstreamer-plugins-output-selector.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#gstreamer-plugins-output-selector.other_details">
 <ANCHOR id="GstOutputSelector-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GstOutputSelector-struct">
 <ANCHOR id="GstOutputSelectorPadNegotiationMode" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GstOutputSelectorPadNegotiationMode">
+<ANCHOR id="GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-NONE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-NONE:CAPS">
+<ANCHOR id="GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-ALL:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-ALL:CAPS">
+<ANCHOR id="GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-ACTIVE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GST-OUTPUT-SELECTOR-PAD-NEGOTIATION-MODE-ACTIVE:CAPS">
 <ANCHOR id="gstreamer-plugins-output-selector.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#gstreamer-plugins-output-selector.property-details">
 <ANCHOR id="GstOutputSelector--active-pad" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GstOutputSelector--active-pad">
 <ANCHOR id="GstOutputSelector--pad-negotiation-mode" href="gstreamer-plugins-1.0/gstreamer-plugins-output-selector.html#GstOutputSelector--pad-negotiation-mode">
@@ -246,6 +298,9 @@
 <ANCHOR id="gstreamer-plugins-queue.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#gstreamer-plugins-queue.other_details">
 <ANCHOR id="GstQueue-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GstQueue-struct">
 <ANCHOR id="GstQueueLeaky" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GstQueueLeaky">
+<ANCHOR id="GST-QUEUE-NO-LEAK:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GST-QUEUE-NO-LEAK:CAPS">
+<ANCHOR id="GST-QUEUE-LEAK-UPSTREAM:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GST-QUEUE-LEAK-UPSTREAM:CAPS">
+<ANCHOR id="GST-QUEUE-LEAK-DOWNSTREAM:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GST-QUEUE-LEAK-DOWNSTREAM:CAPS">
 <ANCHOR id="gstreamer-plugins-queue.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#gstreamer-plugins-queue.property-details">
 <ANCHOR id="GstQueue--current-level-buffers" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GstQueue--current-level-buffers">
 <ANCHOR id="GstQueue--current-level-bytes" href="gstreamer-plugins-1.0/gstreamer-plugins-queue.html#GstQueue--current-level-bytes">
@@ -288,6 +343,17 @@
 <ANCHOR id="GstQueue2--temp-template" href="gstreamer-plugins-1.0/gstreamer-plugins-queue2.html#GstQueue2--temp-template">
 <ANCHOR id="GstQueue2--use-buffering" href="gstreamer-plugins-1.0/gstreamer-plugins-queue2.html#GstQueue2--use-buffering">
 <ANCHOR id="GstQueue2--use-rate-estimate" href="gstreamer-plugins-1.0/gstreamer-plugins-queue2.html#GstQueue2--use-rate-estimate">
+<ANCHOR id="gstreamer-plugins-streamiddemux" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html">
+<ANCHOR id="gstreamer-plugins-streamiddemux.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.properties">
+<ANCHOR id="GstStreamidDemux" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#GstStreamidDemux">
+<ANCHOR id="gstreamer-plugins-streamiddemux.other" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.other">
+<ANCHOR id="gstreamer-plugins-streamiddemux.object-hierarchy" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.object-hierarchy">
+<ANCHOR id="gstreamer-plugins-streamiddemux.description" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.description">
+<ANCHOR id="gstreamer-plugins-streamiddemux.functions_details" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.functions_details">
+<ANCHOR id="gstreamer-plugins-streamiddemux.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.other_details">
+<ANCHOR id="GstStreamidDemux-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#GstStreamidDemux-struct">
+<ANCHOR id="gstreamer-plugins-streamiddemux.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#gstreamer-plugins-streamiddemux.property-details">
+<ANCHOR id="GstStreamidDemux--active-pad" href="gstreamer-plugins-1.0/gstreamer-plugins-streamiddemux.html#GstStreamidDemux--active-pad">
 <ANCHOR id="gstreamer-plugins-tee" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html">
 <ANCHOR id="gstreamer-plugins-tee.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#gstreamer-plugins-tee.properties">
 <ANCHOR id="GstTee" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee">
@@ -298,6 +364,8 @@
 <ANCHOR id="gstreamer-plugins-tee.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#gstreamer-plugins-tee.other_details">
 <ANCHOR id="GstTee-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee-struct">
 <ANCHOR id="GstTeePullMode" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTeePullMode">
+<ANCHOR id="GST-TEE-PULL-MODE-NEVER:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GST-TEE-PULL-MODE-NEVER:CAPS">
+<ANCHOR id="GST-TEE-PULL-MODE-SINGLE:CAPS" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GST-TEE-PULL-MODE-SINGLE:CAPS">
 <ANCHOR id="gstreamer-plugins-tee.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#gstreamer-plugins-tee.property-details">
 <ANCHOR id="GstTee--alloc-pad" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee--alloc-pad">
 <ANCHOR id="GstTee--has-chain" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee--has-chain">
@@ -305,6 +373,7 @@
 <ANCHOR id="GstTee--num-src-pads" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee--num-src-pads">
 <ANCHOR id="GstTee--pull-mode" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee--pull-mode">
 <ANCHOR id="GstTee--silent" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee--silent">
+<ANCHOR id="GstTee--allow-not-linked" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#GstTee--allow-not-linked">
 <ANCHOR id="gstreamer-plugins-tee.see-also" href="gstreamer-plugins-1.0/gstreamer-plugins-tee.html#gstreamer-plugins-tee.see-also">
 <ANCHOR id="gstreamer-plugins-typefind" href="gstreamer-plugins-1.0/gstreamer-plugins-typefind.html">
 <ANCHOR id="gstreamer-plugins-typefind.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-typefind.html#gstreamer-plugins-typefind.properties">
diff --git a/docs/plugins/html/style.css b/docs/plugins/html/style.css
index c141ddd..3675420 100644
--- a/docs/plugins/html/style.css
+++ b/docs/plugins/html/style.css
@@ -60,7 +60,7 @@
 div.informaltable table
 {
   border-collapse: separate;
-  border-spacing: 1em 0.5em;
+  border-spacing: 1em 0.3em;
   border: none;
 }
 
@@ -148,6 +148,8 @@
 h4
 {
   color: #555753;
+  margin-top: 1em;
+  margin-bottom: 1em;
 }
 
 hr
@@ -166,17 +168,16 @@
   padding-bottom: 0.25em;
 }
 
-dl.toc > dd > dl > dt
+dl.toc > dt
 {
   padding-top: 0.25em;
   padding-bottom: 0.25em;
+  font-weight: bold;
 }
 
-dl.toc > dt
+dl.toc > dl
 {
-  padding-top: 1em;
   padding-bottom: 0.5em;
-  font-weight: bold;
 }
 
 .parameter
@@ -346,7 +347,9 @@
 }
 
 @media screen {
-  sup a.footnote
+  /* these have a <sup> as a first child, but since there are no parent selectors
+   * we can't use that. */
+  a.footnote
   {
     position: relative;
     top: 0em ! important;
diff --git a/docs/plugins/inspect/plugin-coreelements.xml b/docs/plugins/inspect/plugin-coreelements.xml
index 96ddeb4..c77f5c7 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.4.5</version>
+  <version>1.5.91</version>
   <license>LGPL</license>
   <source>gstreamer</source>
   <package>GStreamer source release</package>
@@ -31,6 +31,27 @@
       </pads>
     </element>
     <element>
+      <name>concat</name>
+      <longname>Concat</longname>
+      <class>Generic</class>
+      <description>Concatenate multiple streams</description>
+      <author>Sebastian Dröge &lt;sebastian@centricular.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink_%u</name>
+          <direction>sink</direction>
+          <presence>request</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
       <name>downloadbuffer</name>
       <longname>DownloadBuffer</longname>
       <class>Generic</class>
@@ -289,6 +310,27 @@
       </pads>
     </element>
     <element>
+      <name>streamiddemux</name>
+      <longname>Streamid Demux</longname>
+      <class>Generic</class>
+      <description>1-to-N output stream by stream-id</description>
+      <author>HoonHee Lee &lt;hoonhee.lee@lge.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>src_%u</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
       <name>tee</name>
       <longname>Tee pipe fitting</longname>
       <class>Generic</class>
diff --git a/docs/pwg/Makefile.in b/docs/pwg/Makefile.in
index 4732ae1..cc71bab 100644
--- a/docs/pwg/Makefile.in
+++ b/docs/pwg/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -37,7 +37,17 @@
 # install directory trees :(
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -101,10 +111,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(srcdir)/../manuals.mak \
-	$(top_srcdir)/common/upload-doc.mak \
-	$(srcdir)/../htmlinstall.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am
 subdir = docs/pwg
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -114,6 +120,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -131,7 +138,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -144,6 +151,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -197,6 +205,9 @@
 am__installdirs = "$(DESTDIR)$(pwgdir)"
 DATA = $(pwg_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/../htmlinstall.mak \
+	$(srcdir)/../manuals.mak $(srcdir)/Makefile.in \
+	$(top_srcdir)/common/upload-doc.mak
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -208,7 +219,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +315,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +327,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +353,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +415,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +484,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -567,7 +590,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/pwg/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/pwg/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -576,7 +598,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../manuals.mak $(top_srcdir)/common/upload-doc.mak $(srcdir)/../htmlinstall.mak:
+$(srcdir)/../manuals.mak $(top_srcdir)/common/upload-doc.mak $(srcdir)/../htmlinstall.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -764,6 +786,8 @@
 	ps ps-am tags-am uninstall uninstall-am uninstall-local \
 	uninstall-pwgDATA
 
+.PRECIOUS: Makefile
+
 
 ### generate all documentation by default
 # hook in html generation
diff --git a/docs/pwg/advanced-allocation.xml b/docs/pwg/advanced-allocation.xml
index 5888037..253c60d 100644
--- a/docs/pwg/advanced-allocation.xml
+++ b/docs/pwg/advanced-allocation.xml
@@ -2,7 +2,7 @@
   <title>Memory allocation</title>
   <para>
     Memory allocation and management is a very important topic in
-    multimedia. High definition video uses many magabytes to store
+    multimedia. High definition video uses many megabytes to store
     one single frame of video. It is important to reuse the memory
     when possible instead of constantly allocating and freeing
     the memory.
@@ -117,7 +117,7 @@
     </para>
     <para>
       The buffer contains one or more <classname>GstMemory</classname>
-      objects thet represent the data in the buffer.
+      objects that represent the data in the buffer.
     </para>
     <para>
       Metadata in the buffer consists of:
@@ -398,7 +398,7 @@
           macro. You will also make a method to add your metadata
           implementation to a <classname>GstBuffer</classname>.
           Your <filename>my-example-meta.h</filename> header file will
-          need thse additions:
+          need these additions:
         </para>
         <programlisting>
 <![CDATA[
diff --git a/docs/pwg/advanced-clock.xml b/docs/pwg/advanced-clock.xml
index 4618167..a0ffc4f 100644
--- a/docs/pwg/advanced-clock.xml
+++ b/docs/pwg/advanced-clock.xml
@@ -64,7 +64,7 @@
     <title> Buffer running-time </title>
     <para>
       To calculate a buffer running-time, we need a buffer timestamp and
-      the SEGMENT event that preceeded the buffer. First we can convert
+      the SEGMENT event that preceded the buffer. First we can convert
       the SEGMENT event into a <classname>GstSegment</classname> object
       and then we can use the
       <function>gst_segment_to_running_time ()</function> function to
diff --git a/docs/pwg/advanced-events.xml b/docs/pwg/advanced-events.xml
index 997d5b3..5471ace 100644
--- a/docs/pwg/advanced-events.xml
+++ b/docs/pwg/advanced-events.xml
@@ -372,7 +372,7 @@
         The flush-stop event is created with
         <function>gst_event_new_flush_stop ()</function>. It has one
         parameter that controls if the running-time of the pipeline should
-        be reset to 0 or not. Normally aftera flushing seek, the
+        be reset to 0 or not. Normally after a flushing seek, the
         running_time is set back to 0.
       </para>
     </sect2>
diff --git a/docs/pwg/advanced-qos.xml b/docs/pwg/advanced-qos.xml
index 36ddf31..b87bf1e 100644
--- a/docs/pwg/advanced-qos.xml
+++ b/docs/pwg/advanced-qos.xml
@@ -2,7 +2,7 @@
   <title>Quality Of Service (QoS)</title>
 
   <para>
-    Quality of Service in &GStreamer; is about measuring and ajusting
+    Quality of Service in &GStreamer; is about measuring and adjusting
     the real-time performance of a pipeline. The real-time performance is
     always measured relative to the pipeline clock and typically happens in
     the sinks when they synchronize buffers against the clock.
@@ -77,12 +77,12 @@
       second long, it is operating at twice the required speed. If, on the
       other hand, it takes 2 seconds to produce a buffer with 1 seconds worth
       of data, upstream is producing buffers too slow and we won't be able to
-      keep sycnhronization. Usually, a running average is kept of the
+      keep synchronization. Usually, a running average is kept of the
       proportion.
     </para>
     <para>
       A synchronizing element also needs to measure its own performance in
-      order to figure out if the performace problem is upstream of itself.
+      order to figure out if the performance problem is upstream of itself.
     </para>
     <para>
       These measurements are used to construct a QOS event that is sent
@@ -184,7 +184,7 @@
       <para>
         Long term corrections are a bit more difficult to perform. They
         rely on the value of the proportion in the QOS event. Elements should
-        reduce the amount of resources they comsume by the proportion 
+        reduce the amount of resources they consume by the proportion
         field in the QoS message.
       </para>
       <para>
diff --git a/docs/pwg/advanced-scheduling.xml b/docs/pwg/advanced-scheduling.xml
index cd88288..4639d63 100644
--- a/docs/pwg/advanced-scheduling.xml
+++ b/docs/pwg/advanced-scheduling.xml
@@ -153,7 +153,7 @@
                                              GstObject   * parent);
 static gboolean	gst_my_filter_activate_mode (GstPad      * pad,
                                              GstObject   * parent,
-                                             GstPadMode    mode
+                                             GstPadMode    mode,
 					     gboolean      active);
 static void	gst_my_filter_loop	    (GstMyFilter * filter);
 
diff --git a/docs/pwg/advanced-tagging.xml b/docs/pwg/advanced-tagging.xml
index ae991d8..d1e5393 100644
--- a/docs/pwg/advanced-tagging.xml
+++ b/docs/pwg/advanced-tagging.xml
@@ -109,7 +109,7 @@
       TagSetter interface (which is just a layer). Pipeline tags are tags
       provided to the element from within the pipeline. The element receives
       such tags via the <symbol>GST_EVENT_TAG</symbol> event, which means
-      that tags writers should implment an event handler. The tag writer is
+      that tags writers should implement an event handler. The tag writer is
       responsible for combining all these three into one list and writing them
       to the output stream.
     </para>
diff --git a/docs/pwg/advanced-types.xml b/docs/pwg/advanced-types.xml
index d1c8b35..bb1d149 100644
--- a/docs/pwg/advanced-types.xml
+++ b/docs/pwg/advanced-types.xml
@@ -128,9 +128,8 @@
 static gboolean
 plugin_init (GstPlugin *plugin)
 {
-  static gchar *exts[] = { "avi", NULL };
   if (!gst_type_find_register (plugin, "", GST_RANK_PRIMARY,
-			       gst_my_typefind_function, exts,
+			       gst_my_typefind_function, "avi",
 			       gst_caps_new_simple ("video/x-msvideo",
 						    NULL), NULL))
     return FALSE;
diff --git a/docs/pwg/other-base.xml b/docs/pwg/other-base.xml
index 484f436..0c00f98 100644
--- a/docs/pwg/other-base.xml
+++ b/docs/pwg/other-base.xml
@@ -119,7 +119,7 @@
         base-class.
       </para>
       <para>
-        The <classname>GstBaseAusioSink</classname> has little to no
+        The <classname>GstAudioBaseSink</classname> has little to no
         limitations and should fit virtually every implementation, but is
         hard to implement. The <classname>GstAudioSink</classname>, on the
         other hand, only fits those systems with a simple <function>open
diff --git a/docs/slides/Makefile.in b/docs/slides/Makefile.in
index 9676b0a..c8f61b6 100644
--- a/docs/slides/Makefile.in
+++ b/docs/slides/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = docs/slides
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -142,6 +153,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -153,7 +165,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -244,6 +261,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -255,9 +273,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -279,6 +299,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -340,8 +361,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -407,6 +430,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -435,7 +459,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/slides/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/slides/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -610,6 +633,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/docs/xsl/Makefile.in b/docs/xsl/Makefile.in
index 4650e11..ca505c0 100644
--- a/docs/xsl/Makefile.in
+++ b/docs/xsl/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = docs/xsl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -142,6 +153,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -153,7 +165,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -244,6 +261,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -255,9 +273,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -279,6 +299,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -340,8 +361,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -407,6 +430,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -436,7 +460,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/xsl/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu docs/xsl/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -611,6 +634,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/gst/Makefile.am b/gst/Makefile.am
index 2e2a79c..213e3fd 100644
--- a/gst/Makefile.am
+++ b/gst/Makefile.am
@@ -41,7 +41,8 @@
 # make variables for all generated source and header files to make the
 # distinction clear
 
-built_header_configure = gstconfig.h gstversion.h
+built_header_configure = gstversion.h
+built_sys_header_configure = gstconfig.h
 built_header_make = gstenumtypes.h
 built_source_make = gstenumtypes.c
 
@@ -66,12 +67,14 @@
 	gstcapsfeatures.c	\
 	gstchildproxy.c		\
 	gstclock.c		\
+	gstclock-linreg.c	\
 	gstcontext.c \
 	gstcontrolbinding.c \
 	gstcontrolsource.c \
 	gstdatetime.c		\
 	gstdebugutils.c		\
 	gstdevice.c		\
+	gstdevicemonitor.c 	\
 	gstdeviceprovider.c	\
 	gstdeviceproviderfactory.c \
 	gstelement.c		\
@@ -80,7 +83,6 @@
 	gstevent.c		\
 	gstformat.c		\
 	gstghostpad.c		\
-	gstdevicemonitor.c 	\
 	gstinfo.c		\
 	gstiterator.c		\
 	gstatomicqueue.c	\
@@ -97,6 +99,7 @@
 	gstpluginloader.c	\
 	gstpoll.c		\
 	gstpreset.c             \
+	gstprotection.c         \
 	gstquark.c		\
 	gstquery.c		\
 	gstregistry.c		\
@@ -126,12 +129,13 @@
 # BUILT_SOURCES are built on make all/check/install before all other targets
 BUILT_SOURCES = \
         $(built_header_configure)	\
+        $(built_sys_header_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)
+DISTCLEANFILES = $(built_header_configure) $(built_sys_header_configure)
 
 libgstreamer_@GST_API_VERSION@_la_CFLAGS =		\
 	-D_GNU_SOURCE					\
@@ -147,6 +151,7 @@
 	$(GST_PRINTF_LA)				\
 	$(GST_ALL_LIBS)					\
 	$(WIN32_LIBS)					\
+	$(SOCKET_LIBS)					\
 	$(LIBM)
 
 libgstreamer_@GST_API_VERSION@_la_LDFLAGS =		\
@@ -201,6 +206,7 @@
 	gstpluginfeature.h	\
 	gstpoll.h		\
 	gstpreset.h             \
+	gstprotection.h         \
 	gstquery.h		\
 	gstsample.h		\
 	gstsegment.h		\
@@ -225,6 +231,9 @@
 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)
+
 noinst_HEADERS = 		\
 	gettext.h		\
 	glib-compat-private.h	\
@@ -260,23 +269,6 @@
 
 gcov: $(libgstreamer_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstreamer-@GST_API_VERSION@ \
-	 -:TAGS eng debug \
-         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstreamer_@GST_API_VERSION@_la_SOURCES) \
-	           $(nodist_libgstreamer_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstreamer_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstreamer_@GST_API_VERSION@_la_LIBADD) \
-	           -ldl \
-	 -:SUBDIR gst/parse \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst \
-	 -:HEADERS $(libgstreamer_@GST_API_VERSION@include_HEADERS) \
-	 -:LIBFILTER_STATIC gstparse \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 if HAVE_INTROSPECTION
 BUILT_GIRSOURCES = Gst-@GST_API_VERSION@.gir
 
@@ -287,7 +279,7 @@
 gir_sources+=$(patsubst %,$(builddir)/%, $(built_source_make))
 
 Gst-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstreamer-@GST_API_VERSION@.la
-	$(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+	$(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no GI_SCANNER_DISABLE_CACHE=yes\
 		$(INTROSPECTION_SCANNER) -v --namespace Gst \
 		--nsversion=@GST_API_VERSION@ \
 		--warn-all \
@@ -304,7 +296,7 @@
 		--pkg gobject-2.0 \
 		--pkg gmodule-no-export-2.0 \
 		--pkg-export gstreamer-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL, NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		--output $@ \
 		$(gir_headers) \
 		$(gir_sources)
diff --git a/gst/Makefile.in b/gst/Makefile.in
index 85f129d..8eebf5d 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,11 +93,6 @@
 target_triplet = @target@
 @HAVE_INTROSPECTION_TRUE@am__append_1 = $(BUILT_GIRSOURCES) $(typelibs_DATA)
 subdir = gst
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/gstconfig.h.in $(srcdir)/gstversion.h.in \
-	$(top_srcdir)/depcomp \
-	$(libgstreamer_@GST_API_VERSION@include_HEADERS) \
-	$(noinst_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -96,6 +101,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -113,7 +119,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -126,6 +132,9 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstreamer_@GST_API_VERSION@include_HEADERS) \
+	$(noinst_HEADERS) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES = gstconfig.h gstversion.h
@@ -160,6 +169,7 @@
 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
@@ -169,19 +179,20 @@
 libgstreamer_@GST_API_VERSION@_la_DEPENDENCIES =  \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
 	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) \
-	$(am__DEPENDENCIES_3)
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3)
 am__libgstreamer_@GST_API_VERSION@_la_SOURCES_DIST = gst.c gstobject.c \
 	gstallocator.c gstbin.c gstbuffer.c gstbufferlist.c \
 	gstbufferpool.c gstbus.c gstcaps.c gstcapsfeatures.c \
-	gstchildproxy.c gstclock.c gstcontext.c gstcontrolbinding.c \
-	gstcontrolsource.c gstdatetime.c gstdebugutils.c gstdevice.c \
+	gstchildproxy.c gstclock.c gstclock-linreg.c gstcontext.c \
+	gstcontrolbinding.c gstcontrolsource.c gstdatetime.c \
+	gstdebugutils.c gstdevice.c gstdevicemonitor.c \
 	gstdeviceprovider.c gstdeviceproviderfactory.c gstelement.c \
 	gstelementfactory.c gsterror.c gstevent.c gstformat.c \
-	gstghostpad.c gstdevicemonitor.c gstinfo.c gstiterator.c \
-	gstatomicqueue.c gstmessage.c gstmeta.c gstmemory.c \
-	gstminiobject.c gstpad.c gstpadtemplate.c gstparamspecs.c \
-	gstpipeline.c gstplugin.c gstpluginfeature.c gstpluginloader.c \
-	gstpoll.c gstpreset.c gstquark.c gstquery.c gstregistry.c \
+	gstghostpad.c gstinfo.c gstiterator.c gstatomicqueue.c \
+	gstmessage.c gstmeta.c gstmemory.c gstminiobject.c gstpad.c \
+	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 \
 	gstsystemclock.c gsttaglist.c gsttagsetter.c gsttask.c \
 	gsttaskpool.c gsttoc.c gsttocsetter.c gsttrace.c gsttypefind.c \
@@ -202,12 +213,14 @@
 	libgstreamer_@GST_API_VERSION@_la-gstcapsfeatures.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstchildproxy.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstclock.lo \
+	libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstcontext.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstcontrolbinding.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstcontrolsource.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstdatetime.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstdebugutils.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstdevice.lo \
+	libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstdeviceprovider.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstdeviceproviderfactory.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstelement.lo \
@@ -216,7 +229,6 @@
 	libgstreamer_@GST_API_VERSION@_la-gstevent.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstformat.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstghostpad.lo \
-	libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstinfo.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstiterator.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstatomicqueue.lo \
@@ -233,6 +245,7 @@
 	libgstreamer_@GST_API_VERSION@_la-gstpluginloader.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstpoll.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstpreset.lo \
+	libgstreamer_@GST_API_VERSION@_la-gstprotection.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstquark.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstquery.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstregistry.lo \
@@ -321,6 +334,7 @@
   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	\
@@ -350,6 +364,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gstconfig.h.in \
+	$(srcdir)/gstversion.h.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -386,7 +402,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -477,6 +498,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -488,9 +510,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -512,6 +536,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -573,8 +598,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -640,6 +667,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -672,7 +700,8 @@
 
 # make variables for all generated source and header files to make the
 # distinction clear
-built_header_configure = gstconfig.h gstversion.h
+built_header_configure = gstversion.h
+built_sys_header_configure = gstconfig.h
 built_header_make = gstenumtypes.h
 built_source_make = gstenumtypes.c
 EXTRA_libgstreamer_@GST_API_VERSION@_la_SOURCES = \
@@ -695,12 +724,14 @@
 	gstcapsfeatures.c	\
 	gstchildproxy.c		\
 	gstclock.c		\
+	gstclock-linreg.c	\
 	gstcontext.c \
 	gstcontrolbinding.c \
 	gstcontrolsource.c \
 	gstdatetime.c		\
 	gstdebugutils.c		\
 	gstdevice.c		\
+	gstdevicemonitor.c 	\
 	gstdeviceprovider.c	\
 	gstdeviceproviderfactory.c \
 	gstelement.c		\
@@ -709,7 +740,6 @@
 	gstevent.c		\
 	gstformat.c		\
 	gstghostpad.c		\
-	gstdevicemonitor.c 	\
 	gstinfo.c		\
 	gstiterator.c		\
 	gstatomicqueue.c	\
@@ -726,6 +756,7 @@
 	gstpluginloader.c	\
 	gstpoll.c		\
 	gstpreset.c             \
+	gstprotection.c         \
 	gstquark.c		\
 	gstquery.c		\
 	gstregistry.c		\
@@ -756,6 +787,7 @@
 # BUILT_SOURCES are built on make all/check/install before all other targets
 BUILT_SOURCES = \
         $(built_header_configure)	\
+        $(built_sys_header_configure)	\
         $(built_header_make)		\
         $(built_source_make)
 
@@ -764,7 +796,7 @@
 	$(as_dll_cleanfiles) *.gcno *.gcda *.gcov *.gcov.out \
 	$(am__append_1)
 # DISTCLEANFILES is for files generated by configure
-DISTCLEANFILES = $(built_header_configure)
+DISTCLEANFILES = $(built_header_configure) $(built_sys_header_configure)
 libgstreamer_@GST_API_VERSION@_la_CFLAGS = \
 	-D_GNU_SOURCE					\
 	-DGST_EXPORTS					\
@@ -779,6 +811,7 @@
 	$(GST_PRINTF_LA)				\
 	$(GST_ALL_LIBS)					\
 	$(WIN32_LIBS)					\
+	$(SOCKET_LIBS)					\
 	$(LIBM)
 
 libgstreamer_@GST_API_VERSION@_la_LDFLAGS = \
@@ -832,6 +865,7 @@
 	gstpluginfeature.h	\
 	gstpoll.h		\
 	gstpreset.h             \
+	gstprotection.h         \
 	gstquery.h		\
 	gstsample.h		\
 	gstsegment.h		\
@@ -855,6 +889,8 @@
 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)
 noinst_HEADERS = \
 	gettext.h		\
 	glib-compat-private.h	\
@@ -902,7 +938,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu gst/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -980,6 +1015,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcaps.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcapsfeatures.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstchildproxy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstclock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcontext.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcontrolbinding.Plo@am__quote@
@@ -1014,6 +1050,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstpluginloader.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstpoll.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstpreset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstprotection.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstquark.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstquery.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstregistry.Plo@am__quote@
@@ -1144,6 +1181,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gstclock.lo `test -f 'gstclock.c' || echo '$(srcdir)/'`gstclock.c
 
+libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.lo: gstclock-linreg.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-gstclock-linreg.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.lo `test -f 'gstclock-linreg.c' || echo '$(srcdir)/'`gstclock-linreg.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstclock-linreg.c' object='libgstreamer_@GST_API_VERSION@_la-gstclock-linreg.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-gstclock-linreg.lo `test -f 'gstclock-linreg.c' || echo '$(srcdir)/'`gstclock-linreg.c
+
 libgstreamer_@GST_API_VERSION@_la-gstcontext.lo: gstcontext.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-gstcontext.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcontext.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstcontext.lo `test -f 'gstcontext.c' || echo '$(srcdir)/'`gstcontext.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcontext.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstcontext.Plo
@@ -1186,6 +1230,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gstdevice.lo `test -f 'gstdevice.c' || echo '$(srcdir)/'`gstdevice.c
 
+libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.lo: gstdevicemonitor.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-gstdevicemonitor.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.lo `test -f 'gstdevicemonitor.c' || echo '$(srcdir)/'`gstdevicemonitor.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstdevicemonitor.c' object='libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.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-gstdevicemonitor.lo `test -f 'gstdevicemonitor.c' || echo '$(srcdir)/'`gstdevicemonitor.c
+
 libgstreamer_@GST_API_VERSION@_la-gstdeviceprovider.lo: gstdeviceprovider.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-gstdeviceprovider.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdeviceprovider.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstdeviceprovider.lo `test -f 'gstdeviceprovider.c' || echo '$(srcdir)/'`gstdeviceprovider.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdeviceprovider.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdeviceprovider.Plo
@@ -1242,13 +1293,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-gstghostpad.lo `test -f 'gstghostpad.c' || echo '$(srcdir)/'`gstghostpad.c
 
-libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.lo: gstdevicemonitor.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-gstdevicemonitor.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.lo `test -f 'gstdevicemonitor.c' || echo '$(srcdir)/'`gstdevicemonitor.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstdevicemonitor.c' object='libgstreamer_@GST_API_VERSION@_la-gstdevicemonitor.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-gstdevicemonitor.lo `test -f 'gstdevicemonitor.c' || echo '$(srcdir)/'`gstdevicemonitor.c
-
 libgstreamer_@GST_API_VERSION@_la-gstinfo.lo: gstinfo.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-gstinfo.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstinfo.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstinfo.lo `test -f 'gstinfo.c' || echo '$(srcdir)/'`gstinfo.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstinfo.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstinfo.Plo
@@ -1361,6 +1405,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gstpreset.lo `test -f 'gstpreset.c' || echo '$(srcdir)/'`gstpreset.c
 
+libgstreamer_@GST_API_VERSION@_la-gstprotection.lo: gstprotection.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-gstprotection.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstprotection.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstprotection.lo `test -f 'gstprotection.c' || echo '$(srcdir)/'`gstprotection.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstprotection.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstprotection.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstprotection.c' object='libgstreamer_@GST_API_VERSION@_la-gstprotection.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-gstprotection.lo `test -f 'gstprotection.c' || echo '$(srcdir)/'`gstprotection.c
+
 libgstreamer_@GST_API_VERSION@_la-gstquark.lo: gstquark.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-gstquark.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstquark.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gstquark.lo `test -f 'gstquark.c' || echo '$(srcdir)/'`gstquark.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstquark.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstquark.Plo
@@ -1590,6 +1641,27 @@
 	@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=; \
@@ -1772,7 +1844,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)$(libgstreamer_@GST_API_VERSION@includedir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)" "$(DESTDIR)$(configexecincludedir)" "$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -1841,7 +1913,8 @@
 
 install-dvi-am:
 
-install-exec-am: install-libLTLIBRARIES
+install-exec-am: install-libLTLIBRARIES \
+	install-nodist_configexecincludeHEADERS
 
 install-html: install-html-recursive
 
@@ -1883,6 +1956,7 @@
 
 uninstall-am: uninstall-girDATA uninstall-libLTLIBRARIES \
 	uninstall-libgstreamer_@GST_API_VERSION@includeHEADERS \
+	uninstall-nodist_configexecincludeHEADERS \
 	uninstall-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
@@ -1899,7 +1973,7 @@
 	install-html install-html-am install-info install-info-am \
 	install-libLTLIBRARIES \
 	install-libgstreamer_@GST_API_VERSION@includeHEADERS \
-	install-man \
+	install-man install-nodist_configexecincludeHEADERS \
 	install-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS \
 	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip install-typelibsDATA installcheck \
@@ -1909,9 +1983,12 @@
 	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
 
+.PRECIOUS: Makefile
+
 
 gstenumtypes.h: $(gst_headers)
 	$(AM_V_GEN)$(GLIB_MKENUMS) \
@@ -1935,25 +2012,8 @@
 
 gcov: $(libgstreamer_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstreamer-@GST_API_VERSION@ \
-	 -:TAGS eng debug \
-         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstreamer_@GST_API_VERSION@_la_SOURCES) \
-	           $(nodist_libgstreamer_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstreamer_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstreamer_@GST_API_VERSION@_la_LIBADD) \
-	           -ldl \
-	 -:SUBDIR gst/parse \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst \
-	 -:HEADERS $(libgstreamer_@GST_API_VERSION@include_HEADERS) \
-	 -:LIBFILTER_STATIC gstparse \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 @HAVE_INTROSPECTION_TRUE@Gst-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstreamer-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no GI_SCANNER_DISABLE_CACHE=yes\
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_SCANNER) -v --namespace Gst \
 @HAVE_INTROSPECTION_TRUE@		--nsversion=@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--warn-all \
@@ -1970,7 +2030,7 @@
 @HAVE_INTROSPECTION_TRUE@		--pkg gobject-2.0 \
 @HAVE_INTROSPECTION_TRUE@		--pkg gmodule-no-export-2.0 \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL, NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
 @HAVE_INTROSPECTION_TRUE@		$(gir_sources)
diff --git a/gst/glib-compat.h b/gst/glib-compat.h
index 934953b..5fb267b 100644
--- a/gst/glib-compat.h
+++ b/gst/glib-compat.h
@@ -30,6 +30,8 @@
 #ifndef __GST_GLIB_COMPAT_H__
 #define __GST_GLIB_COMPAT_H__
 
+#include <glib.h>
+
 G_BEGIN_DECLS
 
 G_END_DECLS
diff --git a/gst/gst.c b/gst/gst.c
index 4194e8e..fcd966c 100644
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -26,7 +26,7 @@
  *                     graphs.
  *
  * GStreamer is a framework for constructing graphs of various filters
- * (termed elements here) that will handle streaming media.  Any discreet
+ * (termed elements here) that will handle streaming media.  Any discrete
  * (packetizable) media type is supported, with provisions for automatically
  * determining source type.  Formatting/framing information is provided with
  * a powerful negotiation framework.  Plugins are heavily used to provide for
@@ -192,6 +192,17 @@
  */
 
 #ifdef G_OS_WIN32
+/* Note: DllMain is only called when DLLs are loaded or unloaded, so this will
+ * never be called if libgstreamer-1.0 is linked statically. Do not add any code
+ * here to, say, initialize variables or set things up since that will only
+ * happen for dynamically-built GStreamer.
+ *
+ * Also, ideally this should not be defined when GStreamer is built statically.
+ * i.e., it should be conditional on #ifdef DLL_EXPORT. It will be ignored, but
+ * if other libraries make the same mistake of defining it when building
+ * statically, there will be a symbol collision during linking. Fixing this
+ * requires one to build two object files: one for static linking and another
+ * for dynamic linking. */
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
 BOOL WINAPI
 DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
@@ -318,14 +329,18 @@
 gboolean
 gst_init_check (int *argc, char **argv[], GError ** err)
 {
+  static GMutex init_lock;
 #ifndef GST_DISABLE_OPTION_PARSING
   GOptionGroup *group;
   GOptionContext *ctx;
 #endif
   gboolean res;
 
+  g_mutex_lock (&init_lock);
+
   if (gst_initialized) {
     GST_DEBUG ("already initialized gst");
+    g_mutex_unlock (&init_lock);
     return TRUE;
   }
 #ifndef GST_DISABLE_OPTION_PARSING
@@ -344,11 +359,7 @@
 
   gst_initialized = res;
 
-  if (res) {
-    GST_INFO ("initialized GStreamer successfully");
-  } else {
-    GST_INFO ("failed to initialize GStreamer");
-  }
+  g_mutex_unlock (&init_lock);
 
   return res;
 }
@@ -709,6 +720,7 @@
       glib_minor_version, glib_micro_version);
   GST_INFO ("GLib headers version: %d.%d.%d", GLIB_MAJOR_VERSION,
       GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+  GST_INFO ("initialized GStreamer successfully");
 
   return TRUE;
 }
diff --git a/gst/gst.h b/gst/gst.h
index 6617f28..8ebd76c 100644
--- a/gst/gst.h
+++ b/gst/gst.h
@@ -44,13 +44,13 @@
 #include <gst/gstdatetime.h>
 #include <gst/gstdebugutils.h>
 #include <gst/gstdevice.h>
+#include <gst/gstdevicemonitor.h>
 #include <gst/gstdeviceprovider.h>
 #include <gst/gstelement.h>
 #include <gst/gstelementmetadata.h>
 #include <gst/gsterror.h>
 #include <gst/gstevent.h>
 #include <gst/gstghostpad.h>
-#include <gst/gstdevicemonitor.h>
 #include <gst/gstinfo.h>
 #include <gst/gstiterator.h>
 #include <gst/gstmessage.h>
@@ -64,6 +64,7 @@
 #include <gst/gstplugin.h>
 #include <gst/gstpoll.h>
 #include <gst/gstpreset.h>
+#include <gst/gstprotection.h>
 #include <gst/gstquery.h>
 #include <gst/gstregistry.h>
 #include <gst/gstsample.h>
diff --git a/gst/gst_private.h b/gst/gst_private.h
index b25707c..6de9013 100644
--- a/gst/gst_private.h
+++ b/gst/gst_private.h
@@ -133,6 +133,10 @@
 
 gboolean _gst_plugin_loader_client_run (void);
 
+G_GNUC_INTERNAL  GstPlugin * _priv_gst_plugin_load_file_for_registry (const gchar *filename,
+                                                                      GstRegistry * registry,
+                                                                      GError** error);
+
 /* Used in GstBin for manual state handling */
 G_GNUC_INTERNAL  void _priv_gst_element_state_changed (GstElement *element,
                       GstState oldstate, GstState newstate, GstState pending);
@@ -180,6 +184,16 @@
 G_GNUC_INTERNAL
 gchar * __gst_date_time_serialize (GstDateTime * datetime, gboolean with_usecs);
 
+/* Non-static, for access from the testsuite, but not for external use */
+gboolean
+_priv_gst_do_linear_regression (GstClockTime *times, guint n,
+    GstClockTime * m_num, GstClockTime * m_denom, GstClockTime * b,
+    GstClockTime * xbase, gdouble * r_squared);
+
+/* For use in gstdebugutils */
+G_GNUC_INTERNAL
+GstCapsFeatures * __gst_caps_get_features_unchecked (const GstCaps * caps, guint idx);
+
 #ifndef GST_DISABLE_REGISTRY
 /* Secret variable to initialise gst without registry cache */
 GST_EXPORT gboolean _gst_disable_registry_cache;
@@ -244,6 +258,11 @@
 #define GST_CAT_POLL _priv_GST_CAT_POLL
 extern GstDebugCategory *_priv_GST_CAT_POLL;
 
+#define GST_CAT_PROTECTION _priv_GST_CAT_PROTECTION
+extern GstDebugCategory *_priv_GST_CAT_PROTECTION;
+
+extern GstClockTime _priv_gst_info_start_time;
+
 #else
 
 #define GST_CAT_GST_INIT         NULL
@@ -281,6 +300,7 @@
 #define GST_CAT_META             NULL
 #define GST_CAT_LOCKING          NULL
 #define GST_CAT_CONTEXT          NULL
+#define GST_CAT_PROTECTION       NULL
 
 #endif
 
@@ -418,5 +438,8 @@
   gpointer _gst_reserved[GST_PADDING];
 };
 
+/* privat flag used by GstBus / GstMessage */
+#define GST_MESSAGE_FLAG_ASYNC_DELIVERY (GST_MINI_OBJECT_FLAG_LAST << 0)
+
 G_END_DECLS
 #endif /* __GST_PRIVATE_H__ */
diff --git a/gst/gstallocator.h b/gst/gstallocator.h
index 99deee2..f0e84d8 100644
--- a/gst/gstallocator.h
+++ b/gst/gstallocator.h
@@ -24,6 +24,7 @@
 #define __GST_ALLOCATOR_H__
 
 #include <gst/gstmemory.h>
+#include <gst/gstobject.h>
 
 G_BEGIN_DECLS
 
@@ -97,6 +98,10 @@
  * @mem_copy: the implementation of the GstMemoryCopyFunction
  * @mem_share: the implementation of the GstMemoryShareFunction
  * @mem_is_span: the implementation of the GstMemoryIsSpanFunction
+ * @mem_map_full: the implementation of the GstMemoryMapFullFunction.
+ *      Will be used instead of @mem_map if present. (Since 1.6)
+ * @mem_unmap_full: the implementation of the GstMemoryUnmapFullFunction.
+ *      Will be used instead of @mem_unmap if present. (Since 1.6)
  *
  * The #GstAllocator is used to create new memory.
  */
@@ -104,18 +109,21 @@
 {
   GstObject  object;
 
-  const gchar              *mem_type;
+  const gchar               *mem_type;
 
   /*< public >*/
-  GstMemoryMapFunction      mem_map;
-  GstMemoryUnmapFunction    mem_unmap;
+  GstMemoryMapFunction       mem_map;
+  GstMemoryUnmapFunction     mem_unmap;
 
-  GstMemoryCopyFunction     mem_copy;
-  GstMemoryShareFunction    mem_share;
-  GstMemoryIsSpanFunction   mem_is_span;
+  GstMemoryCopyFunction      mem_copy;
+  GstMemoryShareFunction     mem_share;
+  GstMemoryIsSpanFunction    mem_is_span;
+
+  GstMemoryMapFullFunction   mem_map_full;
+  GstMemoryUnmapFullFunction mem_unmap_full;
 
   /*< private >*/
-  gpointer _gst_reserved[GST_PADDING];
+  gpointer _gst_reserved[GST_PADDING - 2];
 
   GstAllocatorPrivate *priv;
 };
diff --git a/gst/gstatomicqueue.h b/gst/gstatomicqueue.h
index a176c1b..3f674c3 100644
--- a/gst/gstatomicqueue.h
+++ b/gst/gstatomicqueue.h
@@ -21,6 +21,7 @@
  */
 
 #include <glib.h>
+#include <glib-object.h>
 
 #ifndef __GST_ATOMIC_QUEUE_H__
 #define __GST_ATOMIC_QUEUE_H__
diff --git a/gst/gstbin.c b/gst/gstbin.c
index 0adc0e0..3f684bc 100644
--- a/gst/gstbin.c
+++ b/gst/gstbin.c
@@ -475,7 +475,7 @@
   klass->pool =
       g_thread_pool_new ((GFunc) gst_bin_continue_func, NULL, -1, FALSE, &err);
   if (err != NULL) {
-    g_critical ("could alloc threadpool %s", err->message);
+    g_critical ("could not alloc threadpool %s", err->message);
   }
 }
 
@@ -1290,6 +1290,7 @@
 
   g_return_val_if_fail (GST_IS_BIN (bin), FALSE);
   g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+  g_return_val_if_fail (GST_ELEMENT_CAST (bin) != element, FALSE);
 
   bclass = GST_BIN_GET_CLASS (bin);
 
@@ -1333,6 +1334,10 @@
 
   GST_DEBUG_OBJECT (bin, "element :%s", GST_ELEMENT_NAME (element));
 
+  /* we obviously can't remove ourself from ourself */
+  if (G_UNLIKELY (element == GST_ELEMENT_CAST (bin)))
+    goto removing_itself;
+
   GST_OBJECT_LOCK (bin);
 
   GST_OBJECT_LOCK (element);
@@ -1564,6 +1569,13 @@
   return TRUE;
 
   /* ERROR handling */
+removing_itself:
+  {
+    GST_OBJECT_LOCK (bin);
+    g_warning ("Cannot remove bin '%s' from itself", GST_ELEMENT_NAME (bin));
+    GST_OBJECT_UNLOCK (bin);
+    return FALSE;
+  }
 not_in_bin:
   {
     g_warning ("Element '%s' is not in bin '%s'", elem_name,
@@ -1603,6 +1615,7 @@
 
   g_return_val_if_fail (GST_IS_BIN (bin), FALSE);
   g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+  g_return_val_if_fail (GST_ELEMENT_CAST (bin) != element, FALSE);
 
   bclass = GST_BIN_GET_CLASS (bin);
 
@@ -2540,6 +2553,17 @@
   return ret;
 }
 
+static void
+reset_state (const GValue * data, gpointer user_data)
+{
+  GstElement *e = g_value_get_object (data);
+  GstState state = GPOINTER_TO_INT (user_data);
+
+  if (gst_element_set_state (e, state) == GST_STATE_CHANGE_FAILURE)
+    GST_WARNING_OBJECT (e, "Failed to switch back down to %s",
+        gst_element_state_get_name (state));
+}
+
 static GstStateChangeReturn
 gst_bin_change_state_func (GstElement * element, GstStateChange transition)
 {
@@ -2696,7 +2720,7 @@
             if (parent == GST_OBJECT_CAST (element)) {
               /* element is still in bin, really error now */
               gst_object_unref (parent);
-              goto done;
+              goto undo;
             }
             /* child removed from bin, let the resync code redo the state
              * change */
@@ -2809,6 +2833,24 @@
         "failure (de)activating src pads");
     return GST_STATE_CHANGE_FAILURE;
   }
+
+undo:
+  {
+    if (current < next) {
+      GstIterator *it = gst_bin_iterate_sorted (GST_BIN (element));
+      GstIteratorResult ret;
+
+      GST_DEBUG_OBJECT (element,
+          "Bin failed to change state, switching children back to %s",
+          gst_element_state_get_name (current));
+      do {
+        ret =
+            gst_iterator_foreach (it, &reset_state, GINT_TO_POINTER (current));
+      } while (ret == GST_ITERATOR_RESYNC);
+      gst_iterator_free (it);
+    }
+    goto done;
+  }
 }
 
 /*
@@ -3888,7 +3930,7 @@
         fold->max = max;
       else if (max < fold->max)
         fold->max = max;
-      if (fold->live == FALSE)
+      if (!fold->live)
         fold->live = live;
     }
   } else {
@@ -3936,7 +3978,7 @@
 static gboolean
 bin_iterate_fold (GstBin * bin, GstIterator * iter, QueryInitFunction fold_init,
     QueryDoneFunction fold_done, GstIteratorFoldFunction fold_func,
-    QueryFold fold_data, gboolean default_return)
+    QueryFold * fold_data, gboolean default_return)
 {
   gboolean res = default_return;
   GValue ret = { 0 };
@@ -3947,20 +3989,20 @@
   while (TRUE) {
     GstIteratorResult ires;
 
-    ires = gst_iterator_fold (iter, fold_func, &ret, &fold_data);
+    ires = gst_iterator_fold (iter, fold_func, &ret, fold_data);
 
     switch (ires) {
       case GST_ITERATOR_RESYNC:
         gst_iterator_resync (iter);
         if (fold_init)
-          fold_init (bin, &fold_data);
+          fold_init (bin, fold_data);
         g_value_set_boolean (&ret, res);
         break;
       case GST_ITERATOR_OK:
       case GST_ITERATOR_DONE:
         res = g_value_get_boolean (&ret);
         if (fold_done != NULL && res)
-          fold_done (bin, &fold_data);
+          fold_done (bin, fold_data);
         goto done;
       default:
         res = FALSE;
@@ -4058,7 +4100,7 @@
     fold_init (bin, &fold_data);
 
   res =
-      bin_iterate_fold (bin, iter, fold_init, fold_done, fold_func, fold_data,
+      bin_iterate_fold (bin, iter, fold_init, fold_done, fold_func, &fold_data,
       default_return);
   gst_iterator_free (iter);
 
@@ -4067,7 +4109,7 @@
     iter = gst_element_iterate_src_pads (element);
     src_pads_query_result =
         bin_iterate_fold (bin, iter, fold_init, fold_done, fold_func,
-        fold_data, default_return);
+        &fold_data, default_return);
     gst_iterator_free (iter);
 
     if (src_pads_query_result)
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index eb7077a..b569387 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -104,6 +104,16 @@
  * the refcount drops to 0, any memory and metadata pointed to by the buffer is
  * unreffed as well. Buffers allocated from a #GstBufferPool will be returned to
  * the pool when the refcount drops to 0.
+ *
+ * The #GstParentBufferMeta is a meta which can be attached to a #GstBuffer
+ * to hold a reference to another buffer that is only released when the child
+ * #GstBuffer is released.
+ *
+ * Typically, #GstParentBufferMeta is used when the child buffer is directly
+ * using the #GstMemory of the parent buffer, and wants to prevent the parent
+ * buffer from being returned to a buffer pool until the #GstMemory is available
+ * for re-use. (Since 1.6)
+ *
  */
 #include "gst_private.h"
 
@@ -284,13 +294,40 @@
   GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY);
 }
 
+/* transfer full for return and transfer none for @mem */
+static inline GstMemory *
+_memory_get_exclusive_reference (GstMemory * mem)
+{
+  GstMemory *ret = NULL;
+
+  if (gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE)) {
+    ret = gst_memory_ref (mem);
+  } else {
+    /* we cannot take another exclusive lock as the memory is already
+     * locked WRITE + EXCLUSIVE according to part-miniobject.txt */
+    ret = gst_memory_copy (mem, 0, -1);
+
+    if (ret) {
+      if (!gst_memory_lock (ret, GST_LOCK_FLAG_EXCLUSIVE)) {
+        gst_memory_unref (ret);
+        ret = NULL;
+      }
+    }
+  }
+
+  if (!ret)
+    GST_CAT_WARNING (GST_CAT_BUFFER, "Failed to acquire an exclusive lock for "
+        "memory %p", mem);
+
+  return ret;
+}
+
 static inline void
-_memory_add (GstBuffer * buffer, gint idx, GstMemory * mem, gboolean lock)
+_memory_add (GstBuffer * buffer, gint idx, GstMemory * mem)
 {
   guint i, len = GST_BUFFER_MEM_LEN (buffer);
 
-  GST_CAT_LOG (GST_CAT_BUFFER, "buffer %p, idx %d, mem %p, lock %d", buffer,
-      idx, mem, lock);
+  GST_CAT_LOG (GST_CAT_BUFFER, "buffer %p, idx %d, mem %p", buffer, idx, mem);
 
   if (G_UNLIKELY (len >= GST_BUFFER_MEM_MAX)) {
     /* too many buffer, span them. */
@@ -312,8 +349,6 @@
     GST_BUFFER_MEM_PTR (buffer, i) = GST_BUFFER_MEM_PTR (buffer, i - 1);
   }
   /* and insert the new buffer */
-  if (lock)
-    gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE);
   GST_BUFFER_MEM_PTR (buffer, idx) = mem;
   GST_BUFFER_MEM_LEN (buffer) = len + 1;
 
@@ -451,17 +486,22 @@
         if (tocopy < bsize && !deep && !GST_MEMORY_IS_NO_SHARE (mem)) {
           /* we need to clip something */
           newmem = gst_memory_share (mem, skip, tocopy);
-          if (newmem)
+          if (newmem) {
+            gst_memory_lock (newmem, GST_LOCK_FLAG_EXCLUSIVE);
             skip = 0;
+          }
         }
 
         if (deep || GST_MEMORY_IS_NO_SHARE (mem) || (!newmem && tocopy < bsize)) {
           /* deep copy or we're not allowed to share this memory
            * between buffers, always copy then */
           newmem = gst_memory_copy (mem, skip, tocopy);
-          skip = 0;
+          if (newmem) {
+            gst_memory_lock (newmem, GST_LOCK_FLAG_EXCLUSIVE);
+            skip = 0;
+          }
         } else if (!newmem) {
-          newmem = gst_memory_ref (mem);
+          newmem = _memory_get_exclusive_reference (mem);
         }
 
         if (!newmem) {
@@ -469,7 +509,7 @@
           return FALSE;
         }
 
-        _memory_add (dest, -1, newmem, TRUE);
+        _memory_add (dest, -1, newmem);
         left -= tocopy;
       }
     }
@@ -487,19 +527,36 @@
   }
 
   if (flags & GST_BUFFER_COPY_META) {
+    /* NOTE: GstGLSyncMeta copying relies on the meta
+     *       being copied now, after the buffer data,
+     *       so this has to happen last */
     for (walk = GST_BUFFER_META (src); walk; walk = walk->next) {
       GstMeta *meta = &walk->meta;
       const GstMetaInfo *info = meta->info;
 
-      if (info->transform_func) {
+      /* Don't copy memory metas if we only copied part of the buffer, didn't
+       * copy memories or merged memories. In all these cases the memory
+       * structure has changed and the memory meta becomes meaningless.
+       */
+      if ((region || !(flags & GST_BUFFER_COPY_MEMORY)
+              || (flags & GST_BUFFER_COPY_MERGE))
+          && gst_meta_api_type_has_tag (info->api, _gst_meta_tag_memory)) {
+        GST_CAT_DEBUG (GST_CAT_BUFFER,
+            "don't copy memory meta %p of API type %s", meta,
+            g_type_name (info->api));
+      } else if (info->transform_func) {
         GstMetaTransformCopy copy_data;
 
         copy_data.region = region;
         copy_data.offset = offset;
         copy_data.size = size;
 
-        info->transform_func (dest, meta, src,
-            _gst_meta_transform_copy, &copy_data);
+        if (!info->transform_func (dest, meta, src,
+                _gst_meta_transform_copy, &copy_data)) {
+          GST_CAT_ERROR (GST_CAT_BUFFER,
+              "failed to copy meta %p of API type %s", meta,
+              g_type_name (info->api));
+        }
       }
     }
   }
@@ -508,7 +565,7 @@
 }
 
 static GstBuffer *
-_gst_buffer_copy (GstBuffer * buffer)
+gst_buffer_copy_with_flags (const GstBuffer * buffer, GstBufferCopyFlags flags)
 {
   GstBuffer *copy;
 
@@ -517,8 +574,9 @@
   /* create a fresh new buffer */
   copy = gst_buffer_new ();
 
-  /* we simply copy everything from our parent */
-  if (!gst_buffer_copy_into (copy, buffer, GST_BUFFER_COPY_ALL, 0, -1))
+  /* copy what the 'flags' want from our parent */
+  /* FIXME why we can't pass const to gst_buffer_copy_into() ? */
+  if (!gst_buffer_copy_into (copy, (GstBuffer *) buffer, flags, 0, -1))
     gst_buffer_replace (&copy, NULL);
 
   if (copy)
@@ -527,6 +585,30 @@
   return copy;
 }
 
+static GstBuffer *
+_gst_buffer_copy (const GstBuffer * buffer)
+{
+  return gst_buffer_copy_with_flags (buffer, GST_BUFFER_COPY_ALL);
+}
+
+/**
+ * gst_buffer_copy_deep:
+ * @buf: a #GstBuffer.
+ *
+ * Create a copy of the given buffer. This will make a newly allocated
+ * copy of the data the source buffer contains.
+ *
+ * Returns: (transfer full): a new copy of @buf.
+ *
+ * Since: 1.6
+ */
+GstBuffer *
+gst_buffer_copy_deep (const GstBuffer * buffer)
+{
+  return gst_buffer_copy_with_flags (buffer,
+      GST_BUFFER_COPY_ALL | GST_BUFFER_COPY_DEEP);
+}
+
 /* the default dispose function revives the buffer and returns it to the
  * pool when there is a pool */
 static gboolean
@@ -679,8 +761,10 @@
 
   newbuf = gst_buffer_new ();
 
-  if (mem != NULL)
-    _memory_add (newbuf, -1, mem, TRUE);
+  if (mem != NULL) {
+    gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE);
+    _memory_add (newbuf, -1, mem);
+  }
 
   GST_CAT_LOG (GST_CAT_BUFFER,
       "new buffer %p of size %" G_GSIZE_FORMAT " from allocator %p", newbuf,
@@ -774,7 +858,8 @@
   mem =
       gst_memory_new_wrapped (flags, data, maxsize, offset, size, user_data,
       notify);
-  _memory_add (newbuf, -1, mem, TRUE);
+  gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE);
+  _memory_add (newbuf, -1, mem);
   GST_BUFFER_FLAG_UNSET (newbuf, GST_BUFFER_FLAG_TAG_MEMORY);
 
   return newbuf;
@@ -865,13 +950,18 @@
 void
 gst_buffer_insert_memory (GstBuffer * buffer, gint idx, GstMemory * mem)
 {
+  GstMemory *tmp;
+
   g_return_if_fail (GST_IS_BUFFER (buffer));
   g_return_if_fail (gst_buffer_is_writable (buffer));
   g_return_if_fail (mem != NULL);
   g_return_if_fail (idx == -1 ||
       (idx >= 0 && idx <= GST_BUFFER_MEM_LEN (buffer)));
 
-  _memory_add (buffer, idx, mem, TRUE);
+  tmp = _memory_get_exclusive_reference (mem);
+  g_return_if_fail (tmp != NULL);
+  gst_memory_unref (mem);
+  _memory_add (buffer, idx, tmp);
 }
 
 static GstMemory *
@@ -1114,9 +1204,9 @@
  * in @buffer.
  *
  * When this function returns %TRUE, @idx will contain the index of the first
- * memory bock where the byte for @offset can be found and @length contains the
+ * memory block where the byte for @offset can be found and @length contains the
  * number of memory blocks containing the @size remaining bytes. @skip contains
- * the number of bytes to skip in the memory bock at @idx to get to the byte
+ * the number of bytes to skip in the memory block at @idx to get to the byte
  * for @offset.
  *
  * @size can be -1 to get all the memory blocks after @idx.
@@ -1831,14 +1921,15 @@
  * gst_buffer_copy_region:
  * @parent: a #GstBuffer.
  * @flags: the #GstBufferCopyFlags
- * @offset: the offset into parent #GstBuffer at which the new sub-buffer 
+ * @offset: the offset into parent #GstBuffer at which the new sub-buffer
  *          begins.
- * @size: the size of the new #GstBuffer sub-buffer, in bytes.
+ * @size: the size of the new #GstBuffer sub-buffer, in bytes. If -1, all
+ *        data is copied.
  *
  * Creates a sub-buffer from @parent at @offset and @size.
  * This sub-buffer uses the actual memory space of the parent buffer.
  * This function will copy the offset and timestamp fields when the
- * offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and 
+ * offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and
  * #GST_BUFFER_OFFSET_NONE.
  * If @offset equals 0 and @size equals the total size of @buffer, the
  * duration and offset end fields are also copied. If not they will be set
@@ -1920,7 +2011,7 @@
 
     mem = GST_BUFFER_MEM_PTR (buf2, i);
     GST_BUFFER_MEM_PTR (buf2, i) = NULL;
-    _memory_add (buf1, -1, mem, FALSE);
+    _memory_add (buf1, -1, mem);
   }
 
   GST_BUFFER_MEM_LEN (buf2) = 0;
@@ -1935,8 +2026,11 @@
  * @buffer: a #GstBuffer
  * @api: the #GType of an API
  *
- * Get the metadata for @api on buffer. When there is no such
- * metadata, %NULL is returned.
+ * Get the metadata for @api on buffer. When there is no such metadata, %NULL is
+ * returned. If multiple metadata with the given @api are attached to this
+ * buffer only the first one is returned.  To handle multiple metadata with a
+ * given API use gst_buffer_iterate_meta() or gst_buffer_foreach_meta() instead
+ * and check the meta->info.api member for the API type.
  *
  * Returns: (transfer none) (nullable): the metadata for @api on
  * @buffer.
@@ -2165,8 +2259,8 @@
  *  the destination array will be written.
  * @dest_size: (out): A location where the size of @dest can be written
  *
- * Extracts a copy of at most @size bytes the data at @offset into a #GBytes.
- * @dest must be freed using g_free() when done.
+ * Extracts a copy of at most @size bytes the data at @offset into
+ * newly-allocated memory. @dest must be freed using g_free() when done.
  *
  * Since: 1.0.10
  */
@@ -2183,3 +2277,131 @@
 
   *dest_size = gst_buffer_extract (buffer, offset, *dest, size);
 }
+
+GST_DEBUG_CATEGORY_STATIC (gst_parent_buffer_meta_debug);
+
+/**
+ * gst_buffer_add_parent_buffer_meta:
+ * @buffer: (transfer none): a #GstBuffer
+ * @ref: (transfer none): a #GstBuffer to ref
+ *
+ * Add a #GstParentBufferMeta to @buffer that holds a reference on
+ * @ref until the buffer is freed.
+ *
+ * Returns: (transfer none): The #GstParentBufferMeta that was added to the buffer
+ *
+ * Since: 1.6
+ */
+GstParentBufferMeta *
+gst_buffer_add_parent_buffer_meta (GstBuffer * buffer, GstBuffer * ref)
+{
+  GstParentBufferMeta *meta;
+
+  g_return_val_if_fail (GST_IS_BUFFER (ref), NULL);
+
+  meta =
+      (GstParentBufferMeta *) gst_buffer_add_meta (buffer,
+      GST_PARENT_BUFFER_META_INFO, NULL);
+
+  if (!meta)
+    return NULL;
+
+  meta->buffer = gst_buffer_ref (ref);
+
+  return meta;
+}
+
+static gboolean
+_gst_parent_buffer_meta_transform (GstBuffer * dest, GstMeta * meta,
+    GstBuffer * buffer, GQuark type, gpointer data)
+{
+  GstParentBufferMeta *dmeta, *smeta;
+
+  smeta = (GstParentBufferMeta *) meta;
+
+  if (GST_META_TRANSFORM_IS_COPY (type)) {
+    /* copy over the reference to the parent buffer.
+     * Usually, this meta means we need to keep the parent buffer
+     * alive because one of the child memories is in use, which
+     * might not be the case if memory is deep copied or sub-regioned,
+     * but we can't tell, so keep the meta */
+    dmeta = gst_buffer_add_parent_buffer_meta (dest, smeta->buffer);
+    if (!dmeta)
+      return FALSE;
+
+    GST_CAT_DEBUG (gst_parent_buffer_meta_debug,
+        "copy buffer reference metadata");
+  } else {
+    /* return FALSE, if transform type is not supported */
+    return FALSE;
+  }
+  return TRUE;
+}
+
+static void
+_gst_parent_buffer_meta_free (GstParentBufferMeta * parent_meta,
+    GstBuffer * buffer)
+{
+  GST_CAT_DEBUG (gst_parent_buffer_meta_debug,
+      "Dropping reference on buffer %p", parent_meta->buffer);
+  gst_buffer_unref (parent_meta->buffer);
+}
+
+static gboolean
+_gst_parent_buffer_meta_init (GstParentBufferMeta * parent_meta,
+    gpointer params, GstBuffer * buffer)
+{
+  static volatile gsize _init;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (gst_parent_buffer_meta_debug, "parentbuffermeta",
+        0, "parentbuffermeta");
+    g_once_init_leave (&_init, 1);
+  }
+
+  parent_meta->buffer = NULL;
+
+  return TRUE;
+}
+
+GType
+gst_parent_buffer_meta_api_get_type (void)
+{
+  static volatile GType type = 0;
+  static const gchar *tags[] = { NULL };
+
+  if (g_once_init_enter (&type)) {
+    GType _type = gst_meta_api_type_register ("GstParentBufferMetaAPI", tags);
+    g_once_init_leave (&type, _type);
+  }
+
+  return type;
+}
+
+/**
+ * gst_parent_buffer_meta_get_info:
+ *
+ * Get the global #GstMetaInfo describing  the #GstParentBufferMeta meta.
+ *
+ * Returns: (transfer none): The #GstMetaInfo
+ *
+ * Since: 1.6
+ */
+const GstMetaInfo *
+gst_parent_buffer_meta_get_info (void)
+{
+  static const GstMetaInfo *meta_info = NULL;
+
+  if (g_once_init_enter (&meta_info)) {
+    const GstMetaInfo *meta =
+        gst_meta_register (gst_parent_buffer_meta_api_get_type (),
+        "GstParentBufferMeta",
+        sizeof (GstParentBufferMeta),
+        (GstMetaInitFunction) _gst_parent_buffer_meta_init,
+        (GstMetaFreeFunction) _gst_parent_buffer_meta_free,
+        _gst_parent_buffer_meta_transform);
+    g_once_init_leave (&meta_info, meta);
+  }
+
+  return meta_info;
+}
diff --git a/gst/gstbuffer.h b/gst/gstbuffer.h
index 643db7d..20154aa 100644
--- a/gst/gstbuffer.h
+++ b/gst/gstbuffer.h
@@ -194,6 +194,9 @@
  * @GST_BUFFER_FLAG_DELTA_UNIT:  this unit cannot be decoded independently.
  * @GST_BUFFER_FLAG_TAG_MEMORY:  this flag is set when memory of the buffer
  *                               is added/removed
+ * @GST_BUFFER_FLAG_SYNC_AFTER:  Elements which write to disk or permanent
+ * 				 storage should ensure the data is synced after
+ * 				 writing the contents of this buffer. (Since 1.6)
  * @GST_BUFFER_FLAG_LAST:        additional media specific flags can be added starting from
  *                               this flag.
  *
@@ -211,6 +214,7 @@
   GST_BUFFER_FLAG_DROPPABLE   = (GST_MINI_OBJECT_FLAG_LAST << 8),
   GST_BUFFER_FLAG_DELTA_UNIT  = (GST_MINI_OBJECT_FLAG_LAST << 9),
   GST_BUFFER_FLAG_TAG_MEMORY  = (GST_MINI_OBJECT_FLAG_LAST << 10),
+  GST_BUFFER_FLAG_SYNC_AFTER  = (GST_MINI_OBJECT_FLAG_LAST << 11),
 
   GST_BUFFER_FLAG_LAST        = (GST_MINI_OBJECT_FLAG_LAST << 16)
 } GstBufferFlags;
@@ -365,8 +369,11 @@
  * gst_buffer_copy:
  * @buf: a #GstBuffer.
  *
- * Create a copy of the given buffer. This will also make a newly allocated
- * copy of the data the source buffer contains.
+ * Create a copy of the given buffer. This will only copy the buffer's
+ * data to a newly allocated memory if needed (if the type of memory
+ * requires it), otherwise the underlying data is just referenced.
+ * Check gst_buffer_copy_deep() if you want to force the data
+ * to be copied to newly allocated memory.
  *
  * Returns: (transfer full): a new copy of @buf.
  */
@@ -380,6 +387,7 @@
   return GST_BUFFER (gst_mini_object_copy (GST_MINI_OBJECT_CONST_CAST (buf)));
 }
 
+GstBuffer * gst_buffer_copy_deep (const GstBuffer * buf);
 
 /**
  * GstBufferCopyFlags:
@@ -553,6 +561,52 @@
  */
 #define         gst_value_get_buffer(v)         GST_BUFFER_CAST (g_value_get_boxed(v))
 
+typedef struct _GstParentBufferMeta GstParentBufferMeta;
+
+/**
+ * GstParentBufferMeta:
+ * @parent: the parent #GstMeta structure
+ * @buffer: the #GstBuffer on which a reference is being held.
+ *
+ * The #GstParentBufferMeta is a #GstMeta which can be attached to a #GstBuffer
+ * to hold a reference to another buffer that is only released when the child
+ * #GstBuffer is released.
+ *
+ * Typically, #GstParentBufferMeta is used when the child buffer is directly
+ * using the #GstMemory of the parent buffer, and wants to prevent the parent
+ * buffer from being returned to a buffer pool until the #GstMemory is available
+ * for re-use.
+ *
+ * Since: 1.6
+ */
+struct _GstParentBufferMeta
+{
+  GstMeta parent;
+
+  /*< public >*/
+  GstBuffer *buffer;
+};
+
+GType gst_parent_buffer_meta_api_get_type (void);
+#define GST_TYPE_PARENT_BUFFER_META_API_TYPE (gst_parent_buffer_meta_api_get_type())
+
+/**
+ * gst_buffer_get_parent_buffer_meta:
+ * @b: a #GstBuffer
+ *
+ * Find and return a #GstParentBufferMeta if one exists on the
+ * buffer
+ */
+#define gst_buffer_get_parent_buffer_meta(b) \
+  ((GstParentBufferMeta*)gst_buffer_get_meta((b),GST_PARENT_BUFFER_META_API_TYPE))
+
+const GstMetaInfo *gst_parent_buffer_meta_get_info (void);
+#define GST_PARENT_BUFFER_META_INFO (gst_parent_buffer_meta_get_info())
+
+/* implementation */
+GstParentBufferMeta *gst_buffer_add_parent_buffer_meta (GstBuffer *buffer,
+    GstBuffer *ref);
+
 G_END_DECLS
 
 #endif /* __GST_BUFFER_H__ */
diff --git a/gst/gstbufferlist.c b/gst/gstbufferlist.c
index 7b8558c..dabcd6a 100644
--- a/gst/gstbufferlist.c
+++ b/gst/gstbufferlist.c
@@ -1,6 +1,7 @@
 /* GStreamer
  * Copyright (C) 2009 Axis Communications <dev-gstreamer at axis dot com>
  * @author Jonas Holmberg <jonas dot holmberg at axis dot com>
+ * Copyright (C) 2014 Tim-Philipp Müller <tim at centricular dot com>
  *
  * gstbufferlist.c: Buffer list
  *
@@ -38,9 +39,13 @@
 
 #include "gstbuffer.h"
 #include "gstbufferlist.h"
+#include "gstutils.h"
 
 #define GST_CAT_DEFAULT GST_CAT_BUFFER_LIST
 
+#define GST_BUFFER_LIST_IS_USING_DYNAMIC_ARRAY(list) \
+    ((list)->buffers != &(list)->arr[0])
+
 /**
  * GstBufferList:
  *
@@ -50,7 +55,16 @@
 {
   GstMiniObject mini_object;
 
-  GArray *array;
+  GstBuffer **buffers;
+  guint n_buffers;
+  guint n_allocated;
+
+  gsize slice_size;
+
+  /* one-item array, in reality more items are pre-allocated
+   * as part of the GstBufferList structure, and that
+   * pre-allocated array extends beyond the declared struct */
+  GstBuffer *arr[1];
 };
 
 GType _gst_buffer_list_type = 0;
@@ -69,15 +83,15 @@
   GstBufferList *copy;
   guint i, len;
 
-  len = list->array->len;
-  copy = gst_buffer_list_new_sized (len);
+  len = list->n_buffers;
+  copy = gst_buffer_list_new_sized (list->n_allocated);
 
   /* add and ref all buffers in the array */
-  for (i = 0; i < len; i++) {
-    GstBuffer *buf = g_array_index (list->array, GstBuffer *, i);
-    buf = gst_buffer_ref (buf);
-    g_array_append_val (copy->array, buf);
-  }
+  for (i = 0; i < len; i++)
+    copy->buffers[i] = gst_buffer_ref (list->buffers[i]);
+
+  copy->n_buffers = len;
+
   return copy;
 }
 
@@ -85,25 +99,31 @@
 _gst_buffer_list_free (GstBufferList * list)
 {
   guint i, len;
+
   GST_LOG ("free %p", list);
 
   /* unrefs all buffers too */
-  len = list->array->len;
+  len = list->n_buffers;
   for (i = 0; i < len; i++)
-    gst_buffer_unref (g_array_index (list->array, GstBuffer *, i));
-  g_array_free (list->array, TRUE);
+    gst_buffer_unref (list->buffers[i]);
 
-  g_slice_free1 (sizeof (GstBufferList), list);
+  if (GST_BUFFER_LIST_IS_USING_DYNAMIC_ARRAY (list))
+    g_free (list->buffers);
+
+  g_slice_free1 (list->slice_size, list);
 }
 
 static void
-gst_buffer_list_init (GstBufferList * list, guint asize)
+gst_buffer_list_init (GstBufferList * list, guint n_allocated, gsize slice_size)
 {
   gst_mini_object_init (GST_MINI_OBJECT_CAST (list), 0, _gst_buffer_list_type,
       (GstMiniObjectCopyFunction) _gst_buffer_list_copy, NULL,
       (GstMiniObjectFreeFunction) _gst_buffer_list_free);
 
-  list->array = g_array_sized_new (FALSE, FALSE, sizeof (GstBuffer *), asize);
+  list->buffers = &list->arr[0];
+  list->n_buffers = 0;
+  list->n_allocated = n_allocated;
+  list->slice_size = slice_size;
 
   GST_LOG ("init %p", list);
 }
@@ -125,12 +145,18 @@
 gst_buffer_list_new_sized (guint size)
 {
   GstBufferList *list;
+  gsize slice_size;
+  guint n_allocated;
 
-  list = g_slice_new0 (GstBufferList);
+  n_allocated = GST_ROUND_UP_16 (size);
+
+  slice_size = sizeof (GstBufferList) + (n_allocated - 1) * sizeof (gpointer);
+
+  list = g_slice_alloc0 (slice_size);
 
   GST_LOG ("new %p", list);
 
-  gst_buffer_list_init (list, size);
+  gst_buffer_list_init (list, n_allocated, slice_size);
 
   return list;
 }
@@ -165,7 +191,26 @@
 {
   g_return_val_if_fail (GST_IS_BUFFER_LIST (list), 0);
 
-  return list->array->len;
+  return list->n_buffers;
+}
+
+static inline void
+gst_buffer_list_remove_range_internal (GstBufferList * list, guint idx,
+    guint length, gboolean unref_old)
+{
+  guint i;
+
+  if (unref_old) {
+    for (i = idx; i < idx + length; ++i)
+      gst_buffer_unref (list->buffers[i]);
+  }
+
+  if (idx + length != list->n_buffers) {
+    memmove (&list->buffers[idx], &list->buffers[idx + length],
+        (list->n_buffers - (idx + length)) * sizeof (void *));
+  }
+
+  list->n_buffers -= length;
 }
 
 /**
@@ -193,20 +238,20 @@
   g_return_val_if_fail (GST_IS_BUFFER_LIST (list), FALSE);
   g_return_val_if_fail (func != NULL, FALSE);
 
-  len = list->array->len;
+  len = list->n_buffers;
   for (i = 0; i < len;) {
     GstBuffer *buf, *buf_ret;
 
-    buf = buf_ret = g_array_index (list->array, GstBuffer *, i);
+    buf = buf_ret = list->buffers[i];
     ret = func (&buf_ret, i, user_data);
 
     /* Check if the function changed the buffer */
     if (buf != buf_ret) {
       if (buf_ret == NULL) {
-        g_array_remove_index (list->array, i);
-        len--;
+        gst_buffer_list_remove_range_internal (list, i, 1, FALSE);
+        --len;
       } else {
-        g_array_index (list->array, GstBuffer *, i) = buf_ret;
+        list->buffers[i] = buf_ret;
       }
     }
 
@@ -229,19 +274,15 @@
  *
  * Returns: (transfer none) (nullable): the buffer at @idx in @group
  *     or %NULL when there is no buffer. The buffer remains valid as
- *     long as @list is valid.
+ *     long as @list is valid and buffer is not removed from the list.
  */
 GstBuffer *
 gst_buffer_list_get (GstBufferList * list, guint idx)
 {
-  GstBuffer *buf;
-
   g_return_val_if_fail (GST_IS_BUFFER_LIST (list), NULL);
-  g_return_val_if_fail (idx < list->array->len, NULL);
+  g_return_val_if_fail (idx < list->n_buffers, NULL);
 
-  buf = g_array_index (list->array, GstBuffer *, idx);
-
-  return buf;
+  return list->buffers[idx];
 }
 
 /**
@@ -265,15 +306,43 @@
 void
 gst_buffer_list_insert (GstBufferList * list, gint idx, GstBuffer * buffer)
 {
+  guint want_alloc;
+
   g_return_if_fail (GST_IS_BUFFER_LIST (list));
   g_return_if_fail (buffer != NULL);
+  g_return_if_fail (gst_buffer_list_is_writable (list));
 
-  if (idx == -1)
-    g_array_append_val (list->array, buffer);
-  else {
-    g_return_if_fail (idx < list->array->len);
-    g_array_insert_val (list->array, idx, buffer);
+  if (idx == -1 && list->n_buffers < list->n_allocated) {
+    list->buffers[list->n_buffers++] = buffer;
+    return;
   }
+
+  if (idx == -1 || idx > list->n_buffers)
+    idx = list->n_buffers;
+
+  want_alloc = list->n_buffers + 1;
+
+  if (want_alloc > list->n_allocated) {
+    want_alloc = MAX (GST_ROUND_UP_16 (want_alloc), list->n_allocated * 2);
+
+    if (GST_BUFFER_LIST_IS_USING_DYNAMIC_ARRAY (list)) {
+      list->buffers = g_renew (GstBuffer *, list->buffers, want_alloc);
+    } else {
+      list->buffers = g_new0 (GstBuffer *, want_alloc);
+      memcpy (list->buffers, &list->arr[0], list->n_buffers * sizeof (void *));
+      GST_CAT_LOG (GST_CAT_PERFORMANCE, "exceeding pre-alloced array");
+    }
+
+    list->n_allocated = want_alloc;
+  }
+
+  if (idx < list->n_buffers) {
+    memmove (&list->buffers[idx + 1], &list->buffers[idx],
+        (list->n_buffers - idx) * sizeof (void *));
+  }
+
+  ++list->n_buffers;
+  list->buffers[idx] = buffer;
 }
 
 /**
@@ -288,15 +357,49 @@
 void
 gst_buffer_list_remove (GstBufferList * list, guint idx, guint length)
 {
-  GstBuffer *buf;
-  gint i;
-
   g_return_if_fail (GST_IS_BUFFER_LIST (list));
-  g_return_if_fail (idx < list->array->len);
+  g_return_if_fail (idx < list->n_buffers);
+  g_return_if_fail (idx + length <= list->n_buffers);
+  g_return_if_fail (gst_buffer_list_is_writable (list));
 
-  for (i = idx; i < idx + length; ++i) {
-    buf = g_array_index (list->array, GstBuffer *, i);
-    gst_buffer_unref (buf);
+  gst_buffer_list_remove_range_internal (list, idx, length, TRUE);
+}
+
+/**
+ * gst_buffer_list_copy_deep:
+ * @list: a #GstBufferList
+ *
+ * Create a copy of the given buffer list. This will make a newly allocated
+ * copy of the buffer that the source buffer list contains.
+ *
+ * Returns: (transfer full): a new copy of @list.
+ *
+ * Since: 1.6
+ */
+GstBufferList *
+gst_buffer_list_copy_deep (const GstBufferList * list)
+{
+  guint i, len;
+  GstBufferList *result = NULL;
+
+  g_return_val_if_fail (GST_IS_BUFFER_LIST (list), NULL);
+
+  result = gst_buffer_list_new ();
+
+  len = list->n_buffers;
+  for (i = 0; i < len; i++) {
+    GstBuffer *old = list->buffers[i];
+    GstBuffer *new = gst_buffer_copy_deep (old);
+
+    if (G_LIKELY (new)) {
+      gst_buffer_list_insert (result, i, new);
+    } else {
+      g_warning
+          ("Failed to deep copy buffer %p while deep "
+          "copying buffer list %p. Buffer list copy "
+          "will be incomplete", old, list);
+    }
   }
-  g_array_remove_range (list->array, idx, length);
+
+  return result;
 }
diff --git a/gst/gstbufferlist.h b/gst/gstbufferlist.h
index e5ddb08..96ea727 100644
--- a/gst/gstbufferlist.h
+++ b/gst/gstbufferlist.h
@@ -158,6 +158,7 @@
 gboolean                 gst_buffer_list_foreach               (GstBufferList *list,
                                                                 GstBufferListFunc func,
 								gpointer user_data);
+GstBufferList *          gst_buffer_list_copy_deep             (const GstBufferList * list);
 
 #define gst_buffer_list_add(l,b) gst_buffer_list_insert((l),-1,(b));
 
diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c
index eaf434b..3bbff34 100644
--- a/gst/gstbufferpool.c
+++ b/gst/gstbufferpool.c
@@ -236,10 +236,8 @@
 static gboolean
 mark_meta_pooled (GstBuffer * buffer, GstMeta ** meta, gpointer user_data)
 {
-  GstBufferPool *pool = user_data;
-
-  GST_DEBUG_OBJECT (pool, "marking meta %p as POOLED in buffer %p", *meta,
-      buffer);
+  GST_DEBUG_OBJECT (GST_BUFFER_POOL (user_data),
+      "marking meta %p as POOLED in buffer %p", *meta, buffer);
   GST_META_FLAG_SET (*meta, GST_META_FLAG_POOLED);
   GST_META_FLAG_SET (*meta, GST_META_FLAG_LOCKED);
 
@@ -609,9 +607,9 @@
  *
  * Set the configuration of the pool. If the pool is already configured, and
  * the configuration haven't change, this function will return %TRUE. If the
- * pool is active, this function will try deactivating it. Buffers allocated
- * form this pool must be returned or else this function will do nothing and
- * return %FALSE.
+ * pool is active, this method will return %FALSE and active configuration
+ * will remain. Buffers allocated form this pool must be returned or else this
+ * function will do nothing and return %FALSE.
  *
  * @config is a #GstStructure that contains the configuration parameters for
  * the pool. A default and mandatory set of parameters can be configured with
@@ -645,18 +643,8 @@
     goto config_unchanged;
 
   /* can't change the settings when active */
-  if (priv->active) {
-    GST_BUFFER_POOL_UNLOCK (pool);
-    if (!gst_buffer_pool_set_active (pool, FALSE)) {
-      GST_BUFFER_POOL_LOCK (pool);
-      goto was_active;
-    }
-    GST_BUFFER_POOL_LOCK (pool);
-
-    /* not likely but as we released the lock */
-    if (priv->active)
-      goto was_active;
-  }
+  if (priv->active)
+    goto was_active;
 
   /* we can't change when outstanding buffers */
   if (g_atomic_int_get (&priv->outstanding) != 0)
@@ -694,7 +682,7 @@
 was_active:
   {
     gst_structure_free (config);
-    GST_WARNING_OBJECT (pool, "can't change config, we are active");
+    GST_INFO_OBJECT (pool, "can't change config, we are active");
     GST_BUFFER_POOL_UNLOCK (pool);
     return FALSE;
   }
@@ -1008,8 +996,8 @@
 /**
  * gst_buffer_pool_config_get_allocator:
  * @config: (transfer none): a #GstBufferPool configuration
- * @allocator: (transfer none): a #GstAllocator
- * @params: #GstAllocationParams
+ * @allocator: (out) (allow-none) (transfer none): a #GstAllocator, or %NULL
+ * @params: (out) (allow-none): #GstAllocationParams, or %NULL
  *
  * Get the @allocator and @params from @config.
  *
@@ -1049,9 +1037,11 @@
  * Validate that changes made to @config are still valid in the context of the
  * expected parameters. This function is a helper that can be used to validate
  * changes made by a pool to a config when gst_buffer_pool_set_config()
- * returns %FALSE. This expects that @caps and @size haven't changed, and that
- * @min_buffers aren't lower then what we initially expected. This does not check
- * if options or allocator parameters.
+ * returns %FALSE. This expects that @caps haven't changed and that
+ * @min_buffers aren't lower then what we initially expected.
+ * This does not check if options or allocator parameters are still valid,
+ * won't check if size have changed, since changing the size is valid to adapt
+ * padding.
  *
  * Since: 1.4
  *
@@ -1069,7 +1059,7 @@
 
   gst_buffer_pool_config_get_params (config, &newcaps, &newsize, &newmin, NULL);
 
-  if (gst_caps_is_equal (caps, newcaps) && (size == newsize)
+  if (gst_caps_is_equal (caps, newcaps) && (newsize >= size)
       && (newmin >= min_buffers))
     ret = TRUE;
 
diff --git a/gst/gstbufferpool.h b/gst/gstbufferpool.h
index 5427cb1..38c59e2 100644
--- a/gst/gstbufferpool.h
+++ b/gst/gstbufferpool.h
@@ -146,8 +146,8 @@
  *        is not set on the buffer. If #GST_BUFFER_FLAG_TAG_MEMORY is set, the 
  *        buffer will be freed with @free_buffer.
  * @free_buffer: free a buffer. The default implementation unrefs the buffer.
- * @flush_start: enter the flushing state. Since: 1.4
- * @flush_stop: leave the flushign state. Since: 1.4
+ * @flush_start: enter the flushing state. (Since 1.4)
+ * @flush_stop: leave the flushign state. (Since 1.4)
  *
  * The GstBufferPool class.
  */
diff --git a/gst/gstbus.c b/gst/gstbus.c
index 0d784e1..9936290 100644
--- a/gst/gstbus.c
+++ b/gst/gstbus.c
@@ -111,11 +111,10 @@
   gpointer sync_handler_data;
   GDestroyNotify sync_handler_notify;
 
-  guint signal_watch_id;
   guint num_signal_watchers;
 
   guint num_sync_message_emitters;
-  GSource *watch_id;
+  GSource *signal_watch;
 
   gboolean enable_async;
   GstPoll *poll;
@@ -309,6 +308,10 @@
   GST_DEBUG_OBJECT (bus, "[msg %p] posting on bus %" GST_PTR_FORMAT, message,
       message);
 
+  /* check we didn't accidentally add a public flag that maps to same value */
+  g_assert (!GST_MINI_OBJECT_FLAG_IS_SET (message,
+          GST_MESSAGE_FLAG_ASYNC_DELIVERY));
+
   GST_OBJECT_LOCK (bus);
   /* check if the bus is flushing */
   if (GST_OBJECT_FLAG_IS_SET (bus, GST_BUS_FLUSHING))
@@ -358,6 +361,8 @@
       g_cond_init (cond);
       g_mutex_init (lock);
 
+      GST_MINI_OBJECT_FLAG_SET (message, GST_MESSAGE_FLAG_ASYNC_DELIVERY);
+
       GST_DEBUG_OBJECT (bus, "[msg %p] waiting for async delivery", message);
 
       /* now we lock the message mutex, send the message to the async
@@ -370,12 +375,18 @@
 
       /* now block till the message is freed */
       g_cond_wait (cond, lock);
+
+      /* we acquired a new ref from gst_message_dispose() so we can clean up */
       g_mutex_unlock (lock);
 
       GST_DEBUG_OBJECT (bus, "[msg %p] delivered asynchronously", message);
 
+      GST_MINI_OBJECT_FLAG_UNSET (message, GST_MESSAGE_FLAG_ASYNC_DELIVERY);
+
       g_mutex_clear (lock);
       g_cond_clear (cond);
+
+      gst_message_unref (message);
       break;
     }
     default:
@@ -388,8 +399,8 @@
 is_flushing:
   {
     GST_DEBUG_OBJECT (bus, "bus is flushing");
-    gst_message_unref (message);
     GST_OBJECT_UNLOCK (bus);
+    gst_message_unref (message);
 
     return FALSE;
   }
@@ -435,6 +446,9 @@
 gst_bus_set_flushing (GstBus * bus, gboolean flushing)
 {
   GstMessage *message;
+  GList *message_list = NULL;
+
+  g_return_if_fail (GST_IS_BUS (bus));
 
   GST_OBJECT_LOCK (bus);
 
@@ -444,13 +458,15 @@
     GST_DEBUG_OBJECT (bus, "set bus flushing");
 
     while ((message = gst_bus_pop (bus)))
-      gst_message_unref (message);
+      message_list = g_list_prepend (message_list, message);
   } else {
     GST_DEBUG_OBJECT (bus, "unset bus flushing");
     GST_OBJECT_FLAG_UNSET (bus, GST_BUS_FLUSHING);
   }
 
   GST_OBJECT_UNLOCK (bus);
+
+  g_list_free_full (message_list, (GDestroyNotify) gst_message_unref);
 }
 
 /**
@@ -506,7 +522,7 @@
       if ((GST_MESSAGE_TYPE (message) & types) != 0) {
         /* Extra check to ensure extended types don't get matched unless
          * asked for */
-        if ((GST_MESSAGE_TYPE_IS_EXTENDED (message) == FALSE)
+        if ((!GST_MESSAGE_TYPE_IS_EXTENDED (message))
             || (types & GST_MESSAGE_EXTENDED)) {
           /* exit the loop, we have a message */
           goto beach;
@@ -799,8 +815,8 @@
   GST_DEBUG_OBJECT (bus, "finalize source %p", source);
 
   GST_OBJECT_LOCK (bus);
-  if (bus->priv->watch_id == source)
-    bus->priv->watch_id = NULL;
+  if (bus->priv->signal_watch == source)
+    bus->priv->signal_watch = NULL;
   GST_OBJECT_UNLOCK (bus);
 
   gst_object_unref (bsource->bus);
@@ -852,7 +868,7 @@
   guint id;
   GSource *source;
 
-  if (bus->priv->watch_id) {
+  if (bus->priv->signal_watch) {
     GST_ERROR_OBJECT (bus,
         "Tried to add new watch while one was already there");
     return 0;
@@ -870,7 +886,7 @@
   g_source_unref (source);
 
   if (id) {
-    bus->priv->watch_id = source;
+    bus->priv->signal_watch = source;
   }
 
   GST_DEBUG_OBJECT (bus, "New source %p with id %u", source, id);
@@ -878,7 +894,7 @@
 }
 
 /**
- * gst_bus_add_watch_full:
+ * gst_bus_add_watch_full: (rename-to gst_bus_add_watch)
  * @bus: a #GstBus to create the watch for.
  * @priority: The priority of the watch.
  * @func: A function to call when a message is received.
@@ -895,16 +911,18 @@
  * There can only be a single bus watch per bus, you must remove it before you
  * can set a new one.
  *
+ * The bus watch will only work if a GLib main loop is being run.
+ *
  * When @func is called, the message belongs to the caller; if you want to
  * keep a copy of it, call gst_message_ref() before leaving @func.
  *
- * The watch can be removed using g_source_remove() or by returning %FALSE
- * from @func.
+ * The watch can be removed using gst_bus_remove_watch() or by returning %FALSE
+ * from @func. If the watch was added to the default main context it is also
+ * possible to remove the watch using g_source_remove().
  *
  * MT safe.
  *
- * Returns: The event source id.
- * Rename to: gst_bus_add_watch
+ * Returns: The event source id or 0 if @bus already got an event source.
  */
 guint
 gst_bus_add_watch_full (GstBus * bus, gint priority,
@@ -937,10 +955,13 @@
  * There can only be a single bus watch per bus, you must remove it before you
  * can set a new one.
  *
- * The watch can be removed using g_source_remove() or by returning %FALSE
- * from @func.
+ * The bus watch will only work if a GLib main loop is being run.
  *
- * Returns: The event source id.
+ * The watch can be removed using gst_bus_remove_watch() or by returning %FALSE
+ * from @func. If the watch was added to the default main context it is also
+ * possible to remove the watch using g_source_remove().
+ *
+ * Returns: The event source id or 0 if @bus already got an event source.
  *
  * MT safe.
  */
@@ -951,6 +972,45 @@
       user_data, NULL);
 }
 
+/**
+ * gst_bus_remove_watch:
+ * @bus: a #GstBus to remove the watch from.
+ *
+ * Removes an installed bus watch from @bus.
+ *
+ * Returns: %TRUE on success or %FALSE if @bus has no event source.
+ *
+ * Since: 1.6
+ *
+ */
+gboolean
+gst_bus_remove_watch (GstBus * bus)
+{
+  GSource *watch_id;
+
+  g_return_val_if_fail (GST_IS_BUS (bus), FALSE);
+
+  GST_OBJECT_LOCK (bus);
+
+  if (bus->priv->signal_watch == NULL) {
+    GST_ERROR_OBJECT (bus, "no bus watch was present");
+    goto no_watch;
+  }
+
+  watch_id = bus->priv->signal_watch;
+
+  GST_OBJECT_UNLOCK (bus);
+
+  g_source_destroy (watch_id);
+
+  return TRUE;
+
+no_watch:
+  GST_OBJECT_UNLOCK (bus);
+
+  return FALSE;
+}
+
 typedef struct
 {
   GMainLoop *loop;
@@ -1068,6 +1128,8 @@
   GstMessage *ret;
   gulong id;
 
+  g_return_val_if_fail (GST_IS_BUS (bus), NULL);
+
   poll_data = g_slice_new (GstBusPollData);
   poll_data->source_running = TRUE;
   poll_data->loop = g_main_loop_new (NULL, FALSE);
@@ -1255,13 +1317,12 @@
     goto done;
 
   /* this should not fail because the counter above takes care of it */
-  g_assert (bus->priv->signal_watch_id == 0);
+  g_assert (!bus->priv->signal_watch);
 
-  bus->priv->signal_watch_id =
-      gst_bus_add_watch_full_unlocked (bus, priority, gst_bus_async_signal_func,
+  gst_bus_add_watch_full_unlocked (bus, priority, gst_bus_async_signal_func,
       NULL, NULL);
 
-  if (G_UNLIKELY (bus->priv->signal_watch_id == 0))
+  if (G_UNLIKELY (!bus->priv->signal_watch))
     goto add_failed;
 
 done:
@@ -1316,7 +1377,7 @@
 void
 gst_bus_remove_signal_watch (GstBus * bus)
 {
-  guint id = 0;
+  GSource *source = NULL;
 
   g_return_if_fail (GST_IS_BUS (bus));
 
@@ -1331,16 +1392,16 @@
   if (bus->priv->num_signal_watchers > 0)
     goto done;
 
-  id = bus->priv->signal_watch_id;
-  bus->priv->signal_watch_id = 0;
+  GST_DEBUG_OBJECT (bus, "removing signal watch %u",
+      g_source_get_id (bus->priv->signal_watch));
 
-  GST_DEBUG_OBJECT (bus, "removing signal watch %u", id);
+  source = bus->priv->signal_watch;
 
 done:
   GST_OBJECT_UNLOCK (bus);
 
-  if (id)
-    g_source_remove (id);
+  if (source)
+    g_source_destroy (source);
 
   return;
 
diff --git a/gst/gstbus.h b/gst/gstbus.h
index 92d2160..d369682 100644
--- a/gst/gstbus.h
+++ b/gst/gstbus.h
@@ -159,6 +159,7 @@
 guint                   gst_bus_add_watch               (GstBus * bus,
                                                          GstBusFunc func,
                                                          gpointer user_data);
+gboolean                gst_bus_remove_watch            (GstBus * bus);
 
 /* polling the bus */
 GstMessage*             gst_bus_poll                    (GstBus *bus, GstMessageType events,
diff --git a/gst/gstcaps.c b/gst/gstcaps.c
index 51f7ae4..6acc564 100644
--- a/gst/gstcaps.c
+++ b/gst/gstcaps.c
@@ -145,6 +145,12 @@
       G_TYPE_STRING, gst_caps_transform_to_string);
 }
 
+GstCapsFeatures *
+__gst_caps_get_features_unchecked (const GstCaps * caps, guint idx)
+{
+  return gst_caps_get_features_unchecked (caps, idx);
+}
+
 static GstCaps *
 _gst_caps_copy (const GstCaps * caps)
 {
@@ -484,8 +490,6 @@
   return s;
 }
 
-
-
 /**
  * gst_caps_steal_structure:
  * @caps: the #GstCaps to retrieve from
@@ -2358,3 +2362,151 @@
   g_value_take_string (dest_value,
       gst_caps_to_string (gst_value_get_caps (src_value)));
 }
+
+/**
+ * gst_caps_foreach:
+ * @caps: a #GstCaps
+ * @func: (scope call): a function to call for each field
+ * @user_data: (closure): private data
+ *
+ * Calls the provided function once for each structure and caps feature in the
+ * #GstCaps. The function must not modify the fields.
+ * Also see gst_caps_map_in_place() and gst_caps_filter_and_map_in_place().
+ *
+ * Returns: %TRUE if the supplied function returns %TRUE for each call,
+ * %FALSE otherwise.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_caps_foreach (const GstCaps * caps, GstCapsForeachFunc func,
+    gpointer user_data)
+{
+  guint i, n;
+  GstCapsFeatures *features;
+  GstStructure *structure;
+  gboolean ret;
+
+  g_return_val_if_fail (GST_IS_CAPS (caps), FALSE);
+  g_return_val_if_fail (func != NULL, FALSE);
+
+  n = GST_CAPS_LEN (caps);
+
+  for (i = 0; i < n; i++) {
+    features = gst_caps_get_features_unchecked (caps, i);
+    structure = gst_caps_get_structure_unchecked (caps, i);
+
+    ret = func (features, structure, user_data);
+    if (G_UNLIKELY (!ret))
+      return FALSE;
+  }
+
+  return TRUE;
+}
+
+/**
+ * gst_caps_map_in_place:
+ * @caps: a #GstCaps
+ * @func: (scope call): a function to call for each field
+ * @user_data: (closure): private data
+ *
+ * Calls the provided function once for each structure and caps feature in the
+ * #GstCaps. In contrast to gst_caps_foreach(), the function may modify but not
+ * delete the structures and features. The caps must be mutable.
+ *
+ * Returns: %TRUE if the supplied function returns %TRUE for each call,
+ * %FALSE otherwise.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_caps_map_in_place (GstCaps * caps, GstCapsMapFunc func, gpointer user_data)
+{
+  guint i, n;
+  GstCapsFeatures *features;
+  GstStructure *structure;
+  gboolean ret;
+
+  g_return_val_if_fail (GST_IS_CAPS (caps), FALSE);
+  g_return_val_if_fail (gst_caps_is_writable (caps), FALSE);
+  g_return_val_if_fail (func != NULL, FALSE);
+
+  n = GST_CAPS_LEN (caps);
+
+  for (i = 0; i < n; i++) {
+    features = gst_caps_get_features_unchecked (caps, i);
+    structure = gst_caps_get_structure_unchecked (caps, i);
+
+    /* Provide sysmem features if there are none yet */
+    if (!features) {
+      features =
+          gst_caps_features_copy (GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY);
+      gst_caps_set_features (caps, i, features);
+    }
+
+    ret = func (features, structure, user_data);
+    if (G_UNLIKELY (!ret))
+      return FALSE;
+  }
+
+  return TRUE;
+}
+
+/**
+ * gst_caps_filter_and_map_in_place:
+ * @caps: a #GstCaps
+ * @func: (scope call): a function to call for each field
+ * @user_data: (closure): private data
+ *
+ * Calls the provided function once for each structure and caps feature in the
+ * #GstCaps. In contrast to gst_caps_foreach(), the function may modify the
+ * structure and features. In contrast to gst_caps_filter_and_map_in_place(),
+ * the structure and features are removed from the caps if %FALSE is returned
+ * from the function.
+ * The caps must be mutable.
+ *
+ * Since: 1.6
+ */
+void
+gst_caps_filter_and_map_in_place (GstCaps * caps, GstCapsFilterMapFunc func,
+    gpointer user_data)
+{
+  guint i, n;
+  GstCapsFeatures *features;
+  GstStructure *structure;
+  gboolean ret;
+
+  g_return_if_fail (GST_IS_CAPS (caps));
+  g_return_if_fail (gst_caps_is_writable (caps));
+  g_return_if_fail (func != NULL);
+
+  n = GST_CAPS_LEN (caps);
+
+  for (i = 0; i < n;) {
+    features = gst_caps_get_features_unchecked (caps, i);
+    structure = gst_caps_get_structure_unchecked (caps, i);
+
+    /* Provide sysmem features if there are none yet */
+    if (!features) {
+      features =
+          gst_caps_features_copy (GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY);
+      gst_caps_set_features (caps, i, features);
+    }
+
+    ret = func (features, structure, user_data);
+    if (!ret) {
+      GST_CAPS_ARRAY (caps) = g_array_remove_index (GST_CAPS_ARRAY (caps), i);
+
+      gst_structure_set_parent_refcount (structure, NULL);
+      gst_structure_free (structure);
+      if (features) {
+        gst_caps_features_set_parent_refcount (features, NULL);
+        gst_caps_features_free (features);
+      }
+
+      n = GST_CAPS_LEN (caps);
+    } else {
+      i++;
+    }
+  }
+}
diff --git a/gst/gstcaps.h b/gst/gstcaps.h
index 4b09b8e..5cd1b78 100644
--- a/gst/gstcaps.h
+++ b/gst/gstcaps.h
@@ -363,6 +363,58 @@
   gpointer _gst_reserved[GST_PADDING];
 };
 
+/**
+ * GstCapsForeachFunc:
+ * @features: the #GstCapsFeatures
+ * @structure: the #GstStructure
+ * @user_data: user data
+ *
+ * A function that will be called in gst_caps_foreach(). The function may
+ * not modify @features or @structure.
+ *
+ * Returns: %TRUE if the foreach operation should continue, %FALSE if
+ * the foreach operation should stop with %FALSE.
+ *
+ * Since: 1.6
+ */
+typedef gboolean (*GstCapsForeachFunc) (GstCapsFeatures *features,
+                                        GstStructure    *structure,
+                                        gpointer         user_data);
+
+/**
+ * GstCapsMapFunc:
+ * @features: the #GstCapsFeatures
+ * @structure: the #GstStructure
+ * @user_data: user data
+ *
+ * A function that will be called in gst_caps_map_in_place(). The function
+ * may modify @features and @structure.
+ *
+ * Returns: %TRUE if the map operation should continue, %FALSE if
+ * the map operation should stop with %FALSE.
+ */
+typedef gboolean (*GstCapsMapFunc)     (GstCapsFeatures *features,
+                                        GstStructure    *structure,
+                                        gpointer         user_data);
+
+/**
+ * GstCapsFilterMapFunc:
+ * @features: the #GstCapsFeatures
+ * @structure: the #GstStructure
+ * @user_data: user data
+ *
+ * A function that will be called in gst_caps_filter_and_map_in_place().
+ * The function may modify @features and @structure, and both will be
+ * removed from the caps if %FALSE is returned.
+ *
+ * Returns: %TRUE if the features and structure should be preserved,
+ * %FALSE if it should be removed.
+ */
+typedef gboolean (*GstCapsFilterMapFunc) (GstCapsFeatures *features,
+                                          GstStructure    *structure,
+                                          gpointer user_data);
+
+
 GType             gst_caps_get_type                (void);
 
 GstCaps *         gst_caps_new_empty               (void);
@@ -417,6 +469,18 @@
                                                     const char    *field,
                                                     va_list        varargs);
 
+gboolean          gst_caps_foreach                 (const GstCaps       *caps,
+                                                    GstCapsForeachFunc   func,
+                                                    gpointer             user_data);
+
+gboolean          gst_caps_map_in_place            (GstCaps        *caps,
+                                                    GstCapsMapFunc  func,
+                                                    gpointer        user_data);
+
+void              gst_caps_filter_and_map_in_place (GstCaps              *caps,
+                                                    GstCapsFilterMapFunc  func,
+                                                    gpointer              user_data);
+
 /* tests */
 gboolean          gst_caps_is_any                  (const GstCaps *caps);
 gboolean          gst_caps_is_empty                (const GstCaps *caps);
diff --git a/gst/gstcapsfeatures.h b/gst/gstcapsfeatures.h
index 441e1a1..618e43f 100644
--- a/gst/gstcapsfeatures.h
+++ b/gst/gstcapsfeatures.h
@@ -23,6 +23,8 @@
 
 #include <gst/gstconfig.h>
 #include <gst/glib-compat.h>
+#include <glib-object.h>
+#include <glib.h>
 
 G_BEGIN_DECLS
 
diff --git a/gst/gstclock-linreg.c b/gst/gstclock-linreg.c
new file mode 100644
index 0000000..874917f
--- /dev/null
+++ b/gst/gstclock-linreg.c
@@ -0,0 +1,241 @@
+/* GStreamer
+ * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
+ *                    2000 Wim Taymans <wtay@chello.be>
+ *                    2004 Wim Taymans <wim@fluendo.com>
+ *                    2015 Jan Schmidt <jan@centricular.com>
+ *
+ * gstclock-linreg.c: Linear regression implementation, used in clock slaving
+ *
+ * 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_private.h"
+#include <time.h>
+
+#include "gstclock.h"
+#include "gstinfo.h"
+#include "gstutils.h"
+#include "glib-compat-private.h"
+
+/* Compute log2 of the passed 64-bit number by finding the highest set bit */
+static guint
+gst_log2 (GstClockTime in)
+{
+  const guint64 b[] =
+      { 0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000, 0xFFFFFFFF00000000LL };
+  const guint64 S[] = { 1, 2, 4, 8, 16, 32 };
+  int i;
+
+  guint count = 0;
+  for (i = 5; i >= 0; i--) {
+    if (in & b[i]) {
+      in >>= S[i];
+      count |= S[i];
+    }
+  }
+
+  return count;
+}
+
+/* http://mathworld.wolfram.com/LeastSquaresFitting.html
+ * with SLAVE_LOCK
+ */
+gboolean
+_priv_gst_do_linear_regression (GstClockTime * times, guint n,
+    GstClockTime * m_num, GstClockTime * m_denom, GstClockTime * b,
+    GstClockTime * xbase, gdouble * r_squared)
+{
+  GstClockTime *newx, *newy;
+  GstClockTime xmin, ymin, xbar, ybar, xbar4, ybar4;
+  GstClockTime xmax, ymax;
+  GstClockTimeDiff sxx, sxy, syy;
+  GstClockTime *x, *y;
+  gint i, j;
+  gint pshift = 0;
+  gint max_bits;
+
+  xbar = ybar = sxx = syy = sxy = 0;
+
+  x = times;
+  y = times + 2;
+
+  xmin = ymin = G_MAXUINT64;
+  xmax = ymax = 0;
+  for (i = j = 0; i < n; i++, j += 4) {
+    xmin = MIN (xmin, x[j]);
+    ymin = MIN (ymin, y[j]);
+
+    xmax = MAX (xmax, x[j]);
+    ymax = MAX (ymax, y[j]);
+  }
+
+  newx = times + 1;
+  newy = times + 3;
+
+  /* strip off unnecessary bits of precision */
+  for (i = j = 0; i < n; i++, j += 4) {
+    newx[j] = x[j] - xmin;
+    newy[j] = y[j] - ymin;
+  }
+
+#ifdef DEBUGGING_ENABLED
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "reduced numbers:");
+  for (i = j = 0; i < n; i++, j += 4)
+    GST_CAT_DEBUG (GST_CAT_CLOCK,
+        "  %" G_GUINT64_FORMAT "  %" G_GUINT64_FORMAT, newx[j], newy[j]);
+#endif
+
+  /* have to do this precisely otherwise the results are pretty much useless.
+   * should guarantee that none of these accumulators can overflow */
+
+  /* quantities on the order of 1e10 to 1e13 -> 30-35 bits;
+   * window size a max of 2^10, so
+   this addition could end up around 2^45 or so -- ample headroom */
+  for (i = j = 0; i < n; i++, j += 4) {
+    /* Just in case assumptions about headroom prove false, let's check */
+    if ((newx[j] > 0 && G_MAXUINT64 - xbar <= newx[j]) ||
+        (newy[j] > 0 && G_MAXUINT64 - ybar <= newy[j])) {
+      GST_CAT_WARNING (GST_CAT_CLOCK,
+          "Regression overflowed in clock slaving! xbar %"
+          G_GUINT64_FORMAT " newx[j] %" G_GUINT64_FORMAT " ybar %"
+          G_GUINT64_FORMAT " newy[j] %" G_GUINT64_FORMAT, xbar, newx[j], ybar,
+          newy[j]);
+      return FALSE;
+    }
+
+    xbar += newx[j];
+    ybar += newy[j];
+  }
+  xbar /= n;
+  ybar /= n;
+
+  /* multiplying directly would give quantities on the order of 1e20-1e26 ->
+   * 60 bits to 70 bits times the window size that's 80 which is too much.
+   * Instead we (1) subtract off the xbar*ybar in the loop instead of after,
+   * to avoid accumulation; (2) shift off some estimated number of bits from
+   * each multiplicand to limit the expected ceiling. For strange
+   * distributions of input values, things can still overflow, in which
+   * case we drop precision and retry - at most a few times, in practice rarely
+   */
+
+  /* Guess how many bits we might need for the usual distribution of input,
+   * with a fallback loop that drops precision if things go pear-shaped */
+  max_bits = gst_log2 (MAX (xmax - xmin, ymax - ymin)) * 7 / 8 + gst_log2 (n);
+  if (max_bits > 64)
+    pshift = max_bits - 64;
+
+  i = 0;
+  do {
+#ifdef DEBUGGING_ENABLED
+    GST_CAT_DEBUG (GST_CAT_CLOCK,
+        "Restarting regression with precision shift %u", pshift);
+#endif
+
+    xbar4 = xbar >> pshift;
+    ybar4 = ybar >> pshift;
+    sxx = syy = sxy = 0;
+    for (i = j = 0; i < n; i++, j += 4) {
+      GstClockTime newx4, newy4;
+      GstClockTimeDiff tmp;
+
+      newx4 = newx[j] >> pshift;
+      newy4 = newy[j] >> pshift;
+
+      tmp = (newx4 + xbar4) * (newx4 - xbar4);
+      if (G_UNLIKELY (tmp > 0 && sxx > 0 && (G_MAXINT64 - sxx <= tmp))) {
+        do {
+          /* Drop some precision and restart */
+          pshift++;
+          sxx /= 4;
+          tmp /= 4;
+        } while (G_MAXINT64 - sxx <= tmp);
+        break;
+      } else if (G_UNLIKELY (tmp < 0 && sxx < 0 && (G_MAXINT64 - sxx >= tmp))) {
+        do {
+          /* Drop some precision and restart */
+          pshift++;
+          sxx /= 4;
+          tmp /= 4;
+        } while (G_MININT64 - sxx >= tmp);
+        break;
+      }
+      sxx += tmp;
+
+      tmp = newy4 * newy4 - ybar4 * ybar4;
+      if (G_UNLIKELY (tmp > 0 && syy > 0 && (G_MAXINT64 - syy <= tmp))) {
+        do {
+          pshift++;
+          syy /= 4;
+          tmp /= 4;
+        } while (G_MAXINT64 - syy <= tmp);
+        break;
+      } else if (G_UNLIKELY (tmp < 0 && syy < 0 && (G_MAXINT64 - syy >= tmp))) {
+        do {
+          pshift++;
+          syy /= 4;
+          tmp /= 4;
+        } while (G_MININT64 - syy >= tmp);
+        break;
+      }
+      syy += tmp;
+
+      tmp = newx4 * newy4 - xbar4 * ybar4;
+      if (G_UNLIKELY (tmp > 0 && sxy > 0 && (G_MAXINT64 - sxy <= tmp))) {
+        do {
+          pshift++;
+          sxy /= 4;
+          tmp /= 4;
+        } while (G_MAXINT64 - sxy <= tmp);
+        break;
+      } else if (G_UNLIKELY (tmp < 0 && sxy < 0 && (G_MININT64 - sxy >= tmp))) {
+        do {
+          pshift++;
+          sxy /= 4;
+          tmp /= 4;
+        } while (G_MININT64 - sxy >= tmp);
+        break;
+      }
+      sxy += tmp;
+    }
+  } while (i < n);
+
+  if (G_UNLIKELY (sxx == 0))
+    goto invalid;
+
+  *m_num = sxy;
+  *m_denom = sxx;
+  *b = (ymin + ybar) - gst_util_uint64_scale (xbar, *m_num, *m_denom);
+  /* Report base starting from the most recent observation */
+  *xbase = xmax;
+  *b += gst_util_uint64_scale (xmax - xmin, *m_num, *m_denom);
+
+  *r_squared = ((double) sxy * (double) sxy) / ((double) sxx * (double) syy);
+
+#ifdef DEBUGGING_ENABLED
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "  m      = %g", ((double) *m_num) / *m_denom);
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "  b      = %" G_GUINT64_FORMAT, *b);
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "  xbase  = %" G_GUINT64_FORMAT, *xbase);
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "  r2     = %g", *r_squared);
+#endif
+
+  return TRUE;
+
+invalid:
+  {
+    GST_CAT_DEBUG (GST_CAT_CLOCK, "sxx == 0, regression failed");
+    return FALSE;
+  }
+}
diff --git a/gst/gstclock.c b/gst/gstclock.c
index d413dff..01dc360 100644
--- a/gst/gstclock.c
+++ b/gst/gstclock.c
@@ -100,7 +100,6 @@
  * defines the minimum number of samples before the calibration is performed.
  */
 
-
 #include "gst_private.h"
 #include <time.h>
 
@@ -129,6 +128,12 @@
   PROP_TIMEOUT
 };
 
+enum
+{
+  SIGNAL_SYNCED,
+  SIGNAL_LAST
+};
+
 #define GST_CLOCK_SLAVE_LOCK(clock)     g_mutex_lock (&GST_CLOCK_CAST (clock)->priv->slave_lock)
 #define GST_CLOCK_SLAVE_UNLOCK(clock)   g_mutex_unlock (&GST_CLOCK_CAST (clock)->priv->slave_lock)
 
@@ -136,6 +141,8 @@
 {
   GMutex slave_lock;            /* order: SLAVE_LOCK, OBJECT_LOCK */
 
+  GCond sync_cond;
+
   /* with LOCK */
   GstClockTime internal_calibration;
   GstClockTime external_calibration;
@@ -160,6 +167,8 @@
 
   gint pre_count;
   gint post_count;
+
+  gboolean synced;
 };
 
 /* seqlocks */
@@ -228,7 +237,7 @@
 static void gst_clock_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-/* static guint gst_clock_signals[LAST_SIGNAL] = { 0 }; */
+static guint gst_clock_signals[SIGNAL_LAST] = { 0 };
 
 static GstClockID
 gst_clock_entry_new (GstClock * clock, GstClockTime time,
@@ -695,6 +704,25 @@
           0, G_MAXUINT64, DEFAULT_TIMEOUT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  /**
+   * GstClock::synced:
+   * @clock: the clock
+   * @synced: if the clock is synced now
+   *
+   * Signaled on clocks with GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC set once
+   * the clock is synchronized, or when it completely lost synchronization.
+   * This signal will not be emitted on clocks without the flag.
+   *
+   * This signal will be emitted from an arbitrary thread, most likely not
+   * the application's main thread.
+   *
+   * Since: 1.6
+   */
+  gst_clock_signals[SIGNAL_SYNCED] =
+      g_signal_new ("synced", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+      0, NULL, NULL,
+      g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+
   g_type_class_add_private (klass, sizeof (GstClockPrivate));
 }
 
@@ -714,6 +742,7 @@
   priv->rate_denominator = 1;
 
   g_mutex_init (&priv->slave_lock);
+  g_cond_init (&priv->sync_cond);
   priv->window_size = DEFAULT_WINDOW_SIZE;
   priv->window_threshold = DEFAULT_WINDOW_THRESHOLD;
   priv->filling = TRUE;
@@ -755,6 +784,7 @@
   GST_CLOCK_SLAVE_UNLOCK (clock);
 
   g_mutex_clear (&clock->priv->slave_lock);
+  g_cond_clear (&clock->priv->sync_cond);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -818,6 +848,60 @@
 }
 
 /**
+ * gst_clock_adjust_with_calibration:
+ * @clock: a #GstClock to use
+ * @internal_target: a clock time
+ * @cinternal: a reference internal time
+ * @cexternal: a reference external time
+ * @cnum: the numerator of the rate of the clock relative to its
+ *        internal time
+ * @cdenom: the denominator of the rate of the clock
+ *
+ * Converts the given @internal_target clock time to the external time,
+ * using the passed calibration parameters. This function performs the
+ * same calculation as gst_clock_adjust_unlocked() when called using the
+ * current calibration parameters, but doesn't ensure a monotonically
+ * increasing result as gst_clock_adjust_unlocked() does.
+ *
+ * Returns: the converted time of the clock.
+ *
+ * Since: 1.6
+ */
+GstClockTime
+gst_clock_adjust_with_calibration (GstClock * clock,
+    GstClockTime internal_target, GstClockTime cinternal,
+    GstClockTime cexternal, GstClockTime cnum, GstClockTime cdenom)
+{
+  GstClockTime ret;
+
+  /* avoid divide by 0 */
+  if (G_UNLIKELY (cdenom == 0))
+    cnum = cdenom = 1;
+
+  /* The formula is (internal - cinternal) * cnum / cdenom + cexternal
+   *
+   * Since we do math on unsigned 64-bit ints we have to special case for
+   * internal < cinternal to get the sign right. this case is not very common,
+   * though.
+   */
+  if (G_LIKELY (internal_target >= cinternal)) {
+    ret = internal_target - cinternal;
+    ret = gst_util_uint64_scale (ret, cnum, cdenom);
+    ret += cexternal;
+  } else {
+    ret = cinternal - internal_target;
+    ret = gst_util_uint64_scale (ret, cnum, cdenom);
+    /* clamp to 0 */
+    if (G_LIKELY (cexternal > ret))
+      ret = cexternal - ret;
+    else
+      ret = 0;
+  }
+
+  return ret;
+}
+
+/**
  * gst_clock_adjust_unlocked:
  * @clock: a #GstClock to use
  * @internal: a clock time
@@ -843,29 +927,9 @@
   cnum = priv->rate_numerator;
   cdenom = priv->rate_denominator;
 
-  /* avoid divide by 0 */
-  if (G_UNLIKELY (cdenom == 0))
-    cnum = cdenom = 1;
-
-  /* The formula is (internal - cinternal) * cnum / cdenom + cexternal
-   *
-   * Since we do math on unsigned 64-bit ints we have to special case for
-   * internal < cinternal to get the sign right. this case is not very common,
-   * though.
-   */
-  if (G_LIKELY (internal >= cinternal)) {
-    ret = internal - cinternal;
-    ret = gst_util_uint64_scale (ret, cnum, cdenom);
-    ret += cexternal;
-  } else {
-    ret = cinternal - internal;
-    ret = gst_util_uint64_scale (ret, cnum, cdenom);
-    /* clamp to 0 */
-    if (G_LIKELY (cexternal > ret))
-      ret = cexternal - ret;
-    else
-      ret = 0;
-  }
+  ret =
+      gst_clock_adjust_with_calibration (clock, internal, cinternal, cexternal,
+      cnum, cdenom);
 
   /* make sure the time is increasing */
   priv->last_time = MAX (ret, priv->last_time);
@@ -939,6 +1003,11 @@
 
   g_return_val_if_fail (GST_IS_CLOCK (clock), GST_CLOCK_TIME_NONE);
 
+  if (G_UNLIKELY (GST_OBJECT_FLAG_IS_SET (clock,
+              GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC) && !clock->priv->synced))
+    GST_CAT_WARNING_OBJECT (GST_CAT_CLOCK, clock,
+        "clocked is not synchronized yet");
+
   cclass = GST_CLOCK_GET_CLASS (clock);
 
   if (G_UNLIKELY (cclass->get_internal_time == NULL))
@@ -1228,132 +1297,6 @@
   return result;
 }
 
-/* http://mathworld.wolfram.com/LeastSquaresFitting.html
- * with SLAVE_LOCK
- */
-static gboolean
-do_linear_regression (GstClock * clock, GstClockTime * m_num,
-    GstClockTime * m_denom, GstClockTime * b, GstClockTime * xbase,
-    gdouble * r_squared)
-{
-  GstClockTime *newx, *newy;
-  GstClockTime xmin, ymin, xbar, ybar, xbar4, ybar4;
-  GstClockTimeDiff sxx, sxy, syy;
-  GstClockTime *x, *y;
-  gint i, j;
-  guint n;
-  GstClockPrivate *priv;
-
-  xbar = ybar = sxx = syy = sxy = 0;
-
-  priv = clock->priv;
-
-  x = priv->times;
-  y = priv->times + 2;
-  n = priv->filling ? priv->time_index : priv->window_size;
-
-#ifdef DEBUGGING_ENABLED
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "doing regression on:");
-  for (i = j = 0; i < n; i++, j += 4)
-    GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock,
-        "  %" G_GUINT64_FORMAT "  %" G_GUINT64_FORMAT, x[j], y[j]);
-#endif
-
-  xmin = ymin = G_MAXUINT64;
-  for (i = j = 0; i < n; i++, j += 4) {
-    xmin = MIN (xmin, x[j]);
-    ymin = MIN (ymin, y[j]);
-  }
-
-#ifdef DEBUGGING_ENABLED
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "min x: %" G_GUINT64_FORMAT,
-      xmin);
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "min y: %" G_GUINT64_FORMAT,
-      ymin);
-#endif
-
-  newx = priv->times + 1;
-  newy = priv->times + 3;
-
-  /* strip off unnecessary bits of precision */
-  for (i = j = 0; i < n; i++, j += 4) {
-    newx[j] = x[j] - xmin;
-    newy[j] = y[j] - ymin;
-  }
-
-#ifdef DEBUGGING_ENABLED
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "reduced numbers:");
-  for (i = j = 0; i < n; i++, j += 4)
-    GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock,
-        "  %" G_GUINT64_FORMAT "  %" G_GUINT64_FORMAT, newx[j], newy[j]);
-#endif
-
-  /* have to do this precisely otherwise the results are pretty much useless.
-   * should guarantee that none of these accumulators can overflow */
-
-  /* quantities on the order of 1e10 -> 30 bits; window size a max of 2^10, so
-     this addition could end up around 2^40 or so -- ample headroom */
-  for (i = j = 0; i < n; i++, j += 4) {
-    xbar += newx[j];
-    ybar += newy[j];
-  }
-  xbar /= n;
-  ybar /= n;
-
-#ifdef DEBUGGING_ENABLED
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "  xbar  = %" G_GUINT64_FORMAT,
-      xbar);
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "  ybar  = %" G_GUINT64_FORMAT,
-      ybar);
-#endif
-
-  /* multiplying directly would give quantities on the order of 1e20 -> 60 bits;
-     times the window size that's 70 which is too much. Instead we (1) subtract
-     off the xbar*ybar in the loop instead of after, to avoid accumulation; (2)
-     shift off 4 bits from each multiplicand, giving an expected ceiling of 52
-     bits, which should be enough. Need to check the incoming range and domain
-     to ensure this is an appropriate loss of precision though. */
-  xbar4 = xbar >> 4;
-  ybar4 = ybar >> 4;
-  for (i = j = 0; i < n; i++, j += 4) {
-    GstClockTime newx4, newy4;
-
-    newx4 = newx[j] >> 4;
-    newy4 = newy[j] >> 4;
-
-    sxx += newx4 * newx4 - xbar4 * xbar4;
-    syy += newy4 * newy4 - ybar4 * ybar4;
-    sxy += newx4 * newy4 - xbar4 * ybar4;
-  }
-
-  if (G_UNLIKELY (sxx == 0))
-    goto invalid;
-
-  *m_num = sxy;
-  *m_denom = sxx;
-  *xbase = xmin;
-  *b = (ybar + ymin) - gst_util_uint64_scale (xbar, *m_num, *m_denom);
-  *r_squared = ((double) sxy * (double) sxy) / ((double) sxx * (double) syy);
-
-#ifdef DEBUGGING_ENABLED
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "  m      = %g",
-      ((double) *m_num) / *m_denom);
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "  b      = %" G_GUINT64_FORMAT,
-      *b);
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "  xbase  = %" G_GUINT64_FORMAT,
-      *xbase);
-  GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "  r2     = %g", *r_squared);
-#endif
-
-  return TRUE;
-
-invalid:
-  {
-    GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock, "sxx == 0, regression failed");
-    return FALSE;
-  }
-}
-
 /**
  * gst_clock_add_observation:
  * @clock: a #GstClock 
@@ -1382,7 +1325,46 @@
     GstClockTime master, gdouble * r_squared)
 {
   GstClockTime m_num, m_denom, b, xbase;
+
+  if (!gst_clock_add_observation_unapplied (clock, slave, master, r_squared,
+          &xbase, &b, &m_num, &m_denom))
+    return FALSE;
+
+  /* if we have a valid regression, adjust the clock */
+  gst_clock_set_calibration (clock, xbase, b, m_num, m_denom);
+
+  return TRUE;
+}
+
+/**
+ * gst_clock_add_observation_unapplied:
+ * @clock: a #GstClock
+ * @slave: a time on the slave
+ * @master: a time on the master
+ * @r_squared: (out): a pointer to hold the result
+ * @internal: (out) (allow-none): a location to store the internal time
+ * @external: (out) (allow-none): a location to store the external time
+ * @rate_num: (out) (allow-none): a location to store the rate numerator
+ * @rate_denom: (out) (allow-none): a location to store the rate denominator
+ *
+ * Add a clock observation to the internal slaving algorithm the same as
+ * gst_clock_add_observation(), and return the result of the master clock
+ * estimation, without updating the internal calibration.
+ *
+ * The caller can then take the results and call gst_clock_set_calibration()
+ * with the values, or some modified version of them.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_clock_add_observation_unapplied (GstClock * clock, GstClockTime slave,
+    GstClockTime master, gdouble * r_squared,
+    GstClockTime * internal, GstClockTime * external,
+    GstClockTime * rate_num, GstClockTime * rate_denom)
+{
+  GstClockTime m_num, m_denom, b, xbase;
   GstClockPrivate *priv;
+  guint n;
 
   g_return_val_if_fail (GST_IS_CLOCK (clock), FALSE);
   g_return_val_if_fail (r_squared != NULL, FALSE);
@@ -1407,7 +1389,9 @@
   if (G_UNLIKELY (priv->filling && priv->time_index < priv->window_threshold))
     goto filling;
 
-  if (!do_linear_regression (clock, &m_num, &m_denom, &b, &xbase, r_squared))
+  n = priv->filling ? priv->time_index : priv->window_size;
+  if (!_priv_gst_do_linear_regression (priv->times, n, &m_num, &m_denom, &b,
+          &xbase, r_squared))
     goto invalid;
 
   GST_CLOCK_SLAVE_UNLOCK (clock);
@@ -1416,8 +1400,14 @@
       "adjusting clock to m=%" G_GUINT64_FORMAT "/%" G_GUINT64_FORMAT ", b=%"
       G_GUINT64_FORMAT " (rsquared=%g)", m_num, m_denom, b, *r_squared);
 
-  /* if we have a valid regression, adjust the clock */
-  gst_clock_set_calibration (clock, xbase, b, m_num, m_denom);
+  if (internal)
+    *internal = xbase;
+  if (external)
+    *external = b;
+  if (rate_num)
+    *rate_num = m_num;
+  if (rate_denom)
+    *rate_denom = m_denom;
 
   return TRUE;
 
@@ -1538,3 +1528,109 @@
       break;
   }
 }
+
+
+/**
+ * gst_clock_wait_for_sync:
+ * @clock: a GstClock
+ * @timeout: timeout for waiting or %GST_CLOCK_TIME_NONE
+ *
+ * Waits until @clock is synced for reporting the current time. If @timeout
+ * is %GST_CLOCK_TIME_NONE it will wait forever, otherwise it will time out
+ * after @timeout nanoseconds.
+ *
+ * For asynchronous waiting, the GstClock::synced signal can be used.
+ *
+ *
+ * This returns immediately with TRUE if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC
+ * is not set on the clock, or if the clock is already synced.
+ *
+ * Returns: %TRUE if waiting was successful, or %FALSE on timeout
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_clock_wait_for_sync (GstClock * clock, GstClockTime timeout)
+{
+  gboolean timed_out = FALSE;
+
+  g_return_val_if_fail (GST_IS_CLOCK (clock), FALSE);
+
+  GST_OBJECT_LOCK (clock);
+  if (!GST_OBJECT_FLAG_IS_SET (clock, GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC)
+      || clock->priv->synced) {
+    GST_OBJECT_UNLOCK (clock);
+    return TRUE;
+  }
+
+  if (timeout != GST_CLOCK_TIME_NONE) {
+    gint64 end_time = g_get_monotonic_time () + gst_util_uint64_scale (timeout,
+        G_TIME_SPAN_SECOND, GST_SECOND);
+
+    while (!clock->priv->synced && !timed_out) {
+      timed_out =
+          !g_cond_wait_until (&clock->priv->sync_cond,
+          GST_OBJECT_GET_LOCK (clock), end_time);
+    }
+  } else {
+    timed_out = FALSE;
+    while (!clock->priv->synced) {
+      g_cond_wait (&clock->priv->sync_cond, GST_OBJECT_GET_LOCK (clock));
+    }
+  }
+  GST_OBJECT_UNLOCK (clock);
+
+  return !timed_out;
+}
+
+/**
+ * gst_clock_is_synced:
+ * @clock: a GstClock
+ *
+ * Checks if the clock is currently synced.
+ *
+ * This returns if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC is not set on the clock.
+ *
+ * Returns: %TRUE if the clock is currently synced
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_clock_is_synced (GstClock * clock)
+{
+  g_return_val_if_fail (GST_IS_CLOCK (clock), TRUE);
+
+  return !GST_OBJECT_FLAG_IS_SET (clock, GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC)
+      || clock->priv->synced;
+}
+
+/**
+ * gst_clock_set_synced:
+ * @clock: a GstClock
+ * @synced: if the clock is synced
+ *
+ * Sets @clock to synced and emits the GstClock::synced signal, and wakes up any
+ * thread waiting in gst_clock_wait_for_sync().
+ *
+ * This function must only be called if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC
+ * is set on the clock, and is intended to be called by subclasses only.
+ *
+ * Since: 1.6
+ */
+void
+gst_clock_set_synced (GstClock * clock, gboolean synced)
+{
+  g_return_if_fail (GST_IS_CLOCK (clock));
+  g_return_if_fail (GST_OBJECT_FLAG_IS_SET (clock,
+          GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC));
+
+  GST_OBJECT_LOCK (clock);
+  if (clock->priv->synced != ! !synced) {
+    clock->priv->synced = ! !synced;
+    g_cond_signal (&clock->priv->sync_cond);
+    GST_OBJECT_UNLOCK (clock);
+    g_signal_emit (clock, gst_clock_signals[SIGNAL_SYNCED], 0, ! !synced);
+  } else {
+    GST_OBJECT_UNLOCK (clock);
+  }
+}
diff --git a/gst/gstclock.h b/gst/gstclock.h
index 2fbe90c..cb82831 100644
--- a/gst/gstclock.h
+++ b/gst/gstclock.h
@@ -24,6 +24,9 @@
 #ifndef __GST_CLOCK_H__
 #define __GST_CLOCK_H__
 
+#include <gst/gstconfig.h>
+#include <glib.h>
+
 G_BEGIN_DECLS
 
 /* --- standard type macros --- */
@@ -63,12 +66,9 @@
 typedef gpointer GstClockID;
 
 /**
- * GST_CLOCK_TIME_NONE:
+ * GST_CLOCK_TIME_NONE: (value 18446744073709551615) (type GstClockTime)
  *
  * Constant to define an undefined clock time.
- *
- * Value: 18446744073709551615
- * Type: GstClockTime
  */
 #define GST_CLOCK_TIME_NONE             ((GstClockTime) -1)
 /**
@@ -79,41 +79,45 @@
  */
 #define GST_CLOCK_TIME_IS_VALID(time)   (((GstClockTime)(time)) != GST_CLOCK_TIME_NONE)
 
+/**
+ * GST_CLOCK_STIME_NONE: (value -9223372036854775808) (type GstClockTimeDiff)
+ *
+ * Constant to define an undefined clock time.
+ */
+#define GST_CLOCK_STIME_NONE             G_MININT64
+/**
+ * GST_CLOCK_STIME_IS_VALID:
+ * @time: signed clock time to validate
+ *
+ * Tests if a given #GstClockTimeDiff of #gint64 represents a valid defined time.
+ *
+ * Since: 1.6
+ */
+#define GST_CLOCK_STIME_IS_VALID(time)   (((GstClockTimeDiff)(time)) != GST_CLOCK_STIME_NONE)
+
 /* FIXME: still need to explicitly force types on the defines below */
 /**
- * GST_SECOND:
+ * GST_SECOND: (value 1000000000) (type GstClockTime)
  *
  * Constant that defines one GStreamer second.
- *
- * Value: 1000000000
- * Type: GstClockTime
  */
 #define GST_SECOND  (G_USEC_PER_SEC * G_GINT64_CONSTANT (1000))
 /**
- * GST_MSECOND:
+ * GST_MSECOND: (value 1000000) (type GstClockTime)
  *
  * Constant that defines one GStreamer millisecond.
- *
- * Value: 1000000
- * Type: GstClockTime
  */
 #define GST_MSECOND (GST_SECOND / G_GINT64_CONSTANT (1000))
 /**
- * GST_USECOND:
+ * GST_USECOND: (value 1000) (type GstClockTime)
  *
  * Constant that defines one GStreamer microsecond.
- *
- * Value: 1000
- * Type: GstClockTime
  */
 #define GST_USECOND (GST_SECOND / G_GINT64_CONSTANT (1000000))
 /**
- * GST_NSECOND:
+ * GST_NSECOND: (value 1) (type GstClockTime)
  *
  * Constant that defines one GStreamer nanosecond
- *
- * Value: 1
- * Type: GstClockTime
  */
 #define GST_NSECOND (GST_SECOND / G_GINT64_CONSTANT (1000000000))
 
@@ -238,6 +242,32 @@
         (guint) ((((GstClockTime)(t)) / GST_SECOND) % 60) : 99, \
         GST_CLOCK_TIME_IS_VALID (t) ? \
         (guint) (((GstClockTime)(t)) % GST_SECOND) : 999999999
+/**
+ * GST_STIME_FORMAT:
+ *
+ * A string that can be used in printf-like format strings to display a signed
+ * #GstClockTimeDiff or #gint64 value in h:m:s format.  Use GST_TIME_ARGS() to
+ * construct the matching arguments.
+ *
+ * Example:
+ * |[
+ * printf("%" GST_STIME_FORMAT "\n", GST_STIME_ARGS(ts));
+ * ]|
+ *
+ * Since: 1.6
+ */
+#define GST_STIME_FORMAT "c%" GST_TIME_FORMAT
+/**
+ * GST_STIME_ARGS:
+ * @t: a #GstClockTimeDiff or #gint64
+ *
+ * Format @t for the #GST_STIME_FORMAT format string. Note: @t will be
+ * evaluated more than once.
+ *
+ * Since: 1.6
+ */
+#define GST_STIME_ARGS(t) \
+          ((t) >= 0) ? ' ' : '-', GST_TIME_ARGS (ABS (t))
 
 typedef struct _GstClockEntry   GstClockEntry;
 typedef struct _GstClock        GstClock;
@@ -375,6 +405,8 @@
  * @GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC: clock can do async periodic timeout callbacks
  * @GST_CLOCK_FLAG_CAN_SET_RESOLUTION: clock's resolution can be changed
  * @GST_CLOCK_FLAG_CAN_SET_MASTER: clock can be slaved to a master clock
+ * @GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC: clock needs to be synced before it can be used
+ *     (Since 1.6)
  * @GST_CLOCK_FLAG_LAST: subclasses can add additional flags starting from this flag
  *
  * The capabilities of this clock
@@ -386,6 +418,7 @@
   GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC  = (GST_OBJECT_FLAG_LAST << 3),
   GST_CLOCK_FLAG_CAN_SET_RESOLUTION     = (GST_OBJECT_FLAG_LAST << 4),
   GST_CLOCK_FLAG_CAN_SET_MASTER         = (GST_OBJECT_FLAG_LAST << 5),
+  GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC     = (GST_OBJECT_FLAG_LAST << 6),
   /* padding */
   GST_CLOCK_FLAG_LAST                   = (GST_OBJECT_FLAG_LAST << 8)
 } GstClockFlags;
@@ -478,12 +511,30 @@
 gboolean                gst_clock_add_observation       (GstClock *clock, GstClockTime slave,
                                                          GstClockTime master, gdouble *r_squared);
 
+gboolean                gst_clock_add_observation_unapplied (GstClock *clock, GstClockTime slave,
+                                                         GstClockTime master, gdouble *r_squared,
+                                                         GstClockTime *internal,
+                                                         GstClockTime *external,
+                                                         GstClockTime *rate_num,
+                                                         GstClockTime *rate_denom);
 
 /* getting and adjusting internal/external time */
 GstClockTime            gst_clock_get_internal_time     (GstClock *clock);
 GstClockTime            gst_clock_adjust_unlocked       (GstClock *clock, GstClockTime internal);
+GstClockTime            gst_clock_adjust_with_calibration (GstClock *clock,
+                                                         GstClockTime internal_target,
+                                                         GstClockTime cinternal,
+                                                         GstClockTime cexternal,
+                                                         GstClockTime cnum,
+                                                         GstClockTime cdenom);
 GstClockTime            gst_clock_unadjust_unlocked     (GstClock * clock, GstClockTime external);
 
+/* waiting for, signalling and checking for synchronization */
+gboolean                gst_clock_wait_for_sync         (GstClock * clock, GstClockTime timeout);
+gboolean                gst_clock_is_synced             (GstClock * clock);
+
+/* to be used by subclasses only */
+void                    gst_clock_set_synced            (GstClock * clock, gboolean synced);
 
 /* creating IDs that can be used to get notifications */
 GstClockID              gst_clock_new_single_shot_id    (GstClock *clock,
diff --git a/gst/gstcompat.h b/gst/gstcompat.h
index 67f5168..b611246 100644
--- a/gst/gstcompat.h
+++ b/gst/gstcompat.h
@@ -32,6 +32,9 @@
  * This can be done in CFLAGS for compiling old code.
  */
 
+#include <glib.h>
+#include <gst/gstpad.h>
+
 
 G_BEGIN_DECLS
 
diff --git a/gst/gstcontext.h b/gst/gstcontext.h
index 0883f0d..f1f89f5 100644
--- a/gst/gstcontext.h
+++ b/gst/gstcontext.h
@@ -24,6 +24,8 @@
 #ifndef __GST_CONTEXT_H__
 #define __GST_CONTEXT_H__
 
+#include <glib.h>
+
 G_BEGIN_DECLS
 
 typedef struct _GstContext GstContext;
diff --git a/gst/gstcontrolbinding.c b/gst/gstcontrolbinding.c
index 9e02a47..11bd65d 100644
--- a/gst/gstcontrolbinding.c
+++ b/gst/gstcontrolbinding.c
@@ -468,5 +468,5 @@
 gst_control_binding_is_disabled (GstControlBinding * binding)
 {
   g_return_val_if_fail (GST_IS_CONTROL_BINDING (binding), TRUE);
-  return (binding->disabled == TRUE);
+  return ! !binding->disabled;
 }
diff --git a/gst/gstdatetime.c b/gst/gstdatetime.c
index 8c0eda5..6e7ea27 100644
--- a/gst/gstdatetime.c
+++ b/gst/gstdatetime.c
@@ -748,7 +748,13 @@
  * @string: ISO 8601-formatted datetime string.
  *
  * Tries to parse common variants of ISO-8601 datetime strings into a
- * #GstDateTime.
+ * #GstDateTime. Possible input formats are (for example):
+ * 2012-06-30T22:46:43Z, 2012, 2012-06, 2012-06-30, 2012-06-30T22:46:43-0430,
+ * 2012-06-30T22:46Z, 2012-06-30T22:46-0430, 2012-06-30 22:46,
+ * 2012-06-30 22:46:43, 2012-06-00, 2012-00-00, 2012-00-30, 22:46:43Z, 22:46Z,
+ * 22:46:43-0430, 22:46-0430, 22:46:30, 22:46
+ * If no date is provided, it is assumed to be "today" in the timezone
+ * provided (if any), otherwise UTC.
  *
  * Free-function: gst_date_time_unref
  *
@@ -759,6 +765,7 @@
 gst_date_time_new_from_iso8601_string (const gchar * string)
 {
   gint year = -1, month = -1, day = -1, hour = -1, minute = -1;
+  gint gmt_offset_hour = -99, gmt_offset_min = -99;
   gdouble second = -1.0;
   gfloat tzoffset = 0.0;
   guint64 usecs;
@@ -770,40 +777,45 @@
 
   len = strlen (string);
 
-  if (len < 4 || !g_ascii_isdigit (string[0]) || !g_ascii_isdigit (string[1])
-      || !g_ascii_isdigit (string[2]) || !g_ascii_isdigit (string[3]))
+  /* The input string is expected to start either with a year (4 digits) or
+   * with an hour (2 digits). Hour must be followed by minute. In any case,
+   * the string must be at least 4 characters long and start with 2 digits */
+  if (len < 4 || !g_ascii_isdigit (string[0]) || !g_ascii_isdigit (string[1]))
     return NULL;
 
-  ret = sscanf (string, "%04d-%02d-%02d", &year, &month, &day);
+  if (g_ascii_isdigit (string[2]) && g_ascii_isdigit (string[3])) {
+    ret = sscanf (string, "%04d-%02d-%02d", &year, &month, &day);
 
-  if (ret == 0)
-    return NULL;
+    if (ret == 0)
+      return NULL;
 
-  if (ret == 3 && day <= 0) {
-    ret = 2;
-    day = -1;
+    if (ret == 3 && day <= 0) {
+      ret = 2;
+      day = -1;
+    }
+
+    if (ret >= 2 && month <= 0) {
+      ret = 1;
+      month = day = -1;
+    }
+
+    if (ret >= 1 && year <= 0)
+      return NULL;
+
+    else if (ret >= 1 && len < 16)
+      /* YMD is 10 chars. XMD + HM will be 16 chars. if it is less,
+       * it make no sense to continue. We will stay with YMD. */
+      goto ymd;
+
+    string += 10;
+    /* Exit if there is no expeceted value on this stage */
+    if (!(*string == 'T' || *string == '-' || *string == ' '))
+      goto ymd;
+
+    string += 1;
   }
-
-  if (ret >= 2 && month <= 0) {
-    ret = 1;
-    month = day = -1;
-  }
-
-  if (ret >= 1 && year <= 0)
-    return NULL;
-
-  else if (ret >= 1 && len < 16)
-    /* YMD is 10 chars. XMD + HM will be 16 chars. if it is less,
-     * it make no sense to continue. We will stay with YMD. */
-    goto ymd;
-
-  string += 10;
-  /* Exit if there is no expeceted value on this stage */
-  if (!(*string == 'T' || *string == '-' || *string == ' '))
-    goto ymd;
-
-  /* if hour or minute fails, then we will use onlly ymd. */
-  hour = g_ascii_strtoull (string + 1, (gchar **) & string, 10);
+  /* if hour or minute fails, then we will use only ymd. */
+  hour = g_ascii_strtoull (string, (gchar **) & string, 10);
   if (hour > 24 || *string != ':')
     goto ymd;
 
@@ -838,7 +850,7 @@
     goto ymd_hms;
   else {
     /* reuse some code from gst-plugins-base/gst-libs/gst/tag/gstxmptag.c */
-    gint gmt_offset_hour = -1, gmt_offset_min = -1, gmt_offset = -1;
+    gint gmt_offset = -1;
     gchar *plus_pos = NULL;
     gchar *neg_pos = NULL;
     gchar *pos = NULL;
@@ -863,9 +875,11 @@
       GST_DEBUG ("Parsing timezone: %s", pos);
 
       if (ret_tz == 2) {
+        if (neg_pos != NULL && neg_pos + 1 == pos) {
+          gmt_offset_hour *= -1;
+          gmt_offset_min *= -1;
+        }
         gmt_offset = gmt_offset_hour * 60 + gmt_offset_min;
-        if (neg_pos != NULL && neg_pos + 1 == pos)
-          gmt_offset *= -1;
 
         tzoffset = gmt_offset / 60.0;
 
@@ -876,8 +890,31 @@
   }
 
 ymd_hms:
+  if (year == -1 || month == -1 || day == -1) {
+    GDateTime *now_utc, *now_in_given_tz;
+
+    /* No date was supplied: make it today */
+    now_utc = g_date_time_new_now_utc ();
+    if (tzoffset != 0.0) {
+      /* If a timezone offset was supplied, get the date of that timezone */
+      g_assert (gmt_offset_min != -99);
+      g_assert (gmt_offset_hour != -99);
+      now_in_given_tz =
+          g_date_time_add_minutes (now_utc,
+          (60 * gmt_offset_hour) + gmt_offset_min);
+      g_date_time_unref (now_utc);
+    } else {
+      now_in_given_tz = now_utc;
+    }
+    g_date_time_get_ymd (now_in_given_tz, &year, &month, &day);
+    g_date_time_unref (now_in_given_tz);
+  }
   return gst_date_time_new (tzoffset, year, month, day, hour, minute, second);
 ymd:
+  if (year == -1) {
+    /* No date was supplied and time failed to parse */
+    return NULL;
+  }
   return gst_date_time_new_ymd (year, month, day);
 }
 
diff --git a/gst/gstdebugutils.c b/gst/gstdebugutils.c
index 96901c3..2e3469e 100644
--- a/gst/gstdebugutils.c
+++ b/gst/gstdebugutils.c
@@ -56,6 +56,8 @@
 
 extern const gchar *priv_gst_dump_dot_dir;      /* NULL *//* set from gst.c */
 
+#define PARAM_MAX_LENGTH 80
+
 const gchar spaces[] = {
   "                                "    /* 32 */
       "                                "        /* 64 */
@@ -63,7 +65,8 @@
       "                                "        /* 128 */
 };
 
-extern GstClockTime _priv_gst_info_start_time;
+#define MAKE_INDENT(indent) \
+  &spaces[MAX (sizeof (spaces) - (1 + (indent) * 2), 0)]
 
 static gchar *
 debug_dump_make_object_name (GstObject * obj)
@@ -92,13 +95,15 @@
 }
 
 static gchar *
-debug_dump_get_element_params (GstElement * element)
+debug_dump_get_element_params (GstElement * element,
+    GstDebugGraphDetails details)
 {
   gchar *param_name = NULL;
   GParamSpec **properties, *property;
   GValue value = { 0, };
   guint i, number_of_properties;
   gchar *tmp, *value_str;
+  const gchar *ellipses;
 
   /* get paramspecs and show non-default properties */
   properties =
@@ -108,7 +113,7 @@
     for (i = 0; i < number_of_properties; i++) {
       property = properties[i];
 
-      /* ski some properties */
+      /* skip some properties */
       if (!(property->flags & G_PARAM_READABLE))
         continue;
       if (!strcmp (property->name, "name"))
@@ -120,14 +125,31 @@
         tmp = g_strdup_value_contents (&value);
         value_str = g_strescape (tmp, NULL);
         g_free (tmp);
-        if (param_name) {
+
+        /* too long, ellipsize */
+        if (!(details & GST_DEBUG_GRAPH_SHOW_FULL_PARAMS) &&
+            strlen (value_str) > PARAM_MAX_LENGTH)
+          ellipses = "…";
+        else
+          ellipses = "";
+
+        if (param_name)
           tmp = param_name;
-          param_name = g_strdup_printf ("%s\\n%s=%s",
-              tmp, property->name, value_str);
-          g_free (tmp);
+        else
+          tmp = (char *) "";
+
+        if (details & GST_DEBUG_GRAPH_SHOW_FULL_PARAMS) {
+          param_name = g_strdup_printf ("%s\\n%s=%s", tmp, property->name,
+              value_str);
         } else {
-          param_name = g_strdup_printf ("\\n%s=%s", property->name, value_str);
+          param_name = g_strdup_printf ("%s\\n%s=%."
+              G_STRINGIFY (PARAM_MAX_LENGTH) "s%s", tmp, property->name,
+              value_str, ellipses);
         }
+
+        if (tmp[0] != '\0')
+          g_free (tmp);
+
         g_free (value_str);
       }
       g_value_unset (&value);
@@ -139,14 +161,14 @@
 
 static void
 debug_dump_pad (GstPad * pad, const gchar * color_name,
-    const gchar * element_name, GstDebugGraphDetails details, FILE * out,
+    const gchar * element_name, GstDebugGraphDetails details, GString * str,
     const gint indent)
 {
   GstPadTemplate *pad_templ;
   GstPadPresence presence;
   gchar *pad_name;
   const gchar *style_name;
-  const gchar *spc = &spaces[MAX (sizeof (spaces) - (1 + indent * 2), 0)];
+  const gchar *spc = MAKE_INDENT (indent);
 
   pad_name = debug_dump_make_object_name (GST_OBJECT (pad));
 
@@ -193,12 +215,12 @@
         GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_BLOCKING) ? 'B' : 'b';
     pad_flags[3] = '\0';
 
-    fprintf (out,
+    g_string_append_printf (str,
         "%s  %s_%s [color=black, fillcolor=\"%s\", label=\"%s\\n[%c][%s]%s\", height=\"0.2\", style=\"%s\"];\n",
         spc, element_name, pad_name, color_name, GST_OBJECT_NAME (pad),
         activation_mode[pad->mode], pad_flags, task_mode, style_name);
   } else {
-    fprintf (out,
+    g_string_append_printf (str,
         "%s  %s_%s [color=black, fillcolor=\"%s\", label=\"%s\", height=\"0.2\", style=\"%s\"];\n",
         spc, element_name, pad_name, color_name, GST_OBJECT_NAME (pad),
         style_name);
@@ -209,7 +231,7 @@
 
 static void
 debug_dump_element_pad (GstPad * pad, GstElement * element,
-    GstDebugGraphDetails details, FILE * out, const gint indent)
+    GstDebugGraphDetails details, GString * str, const gint indent)
 {
   GstElement *target_element;
   GstPad *target_pad, *tmp_pad;
@@ -228,7 +250,7 @@
     if ((tmp_pad = gst_ghost_pad_get_target (GST_GHOST_PAD (pad)))) {
       if ((target_pad = gst_pad_get_peer (tmp_pad))) {
         gchar *pad_name, *target_pad_name;
-        const gchar *spc = &spaces[MAX (sizeof (spaces) - (1 + indent * 2), 0)];
+        const gchar *spc = MAKE_INDENT (indent);
 
         if ((target_element = gst_pad_get_parent_element (target_pad))) {
           target_element_name =
@@ -237,15 +259,17 @@
           target_element_name = g_strdup ("");
         }
         debug_dump_pad (target_pad, color_name, target_element_name, details,
-            out, indent);
+            str, indent);
         /* src ghostpad relationship */
         pad_name = debug_dump_make_object_name (GST_OBJECT (pad));
         target_pad_name = debug_dump_make_object_name (GST_OBJECT (target_pad));
         if (dir == GST_PAD_SRC) {
-          fprintf (out, "%s%s_%s -> %s_%s [style=dashed, minlen=0]\n", spc,
+          g_string_append_printf (str,
+              "%s%s_%s -> %s_%s [style=dashed, minlen=0]\n", spc,
               target_element_name, target_pad_name, element_name, pad_name);
         } else {
-          fprintf (out, "%s%s_%s -> %s_%s [style=dashed, minlen=0]\n", spc,
+          g_string_append_printf (str,
+              "%s%s_%s -> %s_%s [style=dashed, minlen=0]\n", spc,
               element_name, pad_name, target_element_name, target_pad_name);
         }
         g_free (target_pad_name);
@@ -263,7 +287,7 @@
             GST_PAD_SINK) ? "#aaaaff" : "#cccccc");
   }
   /* pads */
-  debug_dump_pad (pad, color_name, element_name, details, out, indent);
+  debug_dump_pad (pad, color_name, element_name, details, str, indent);
   g_free (element_name);
 }
 
@@ -336,9 +360,18 @@
 
       str = g_string_sized_new (slen);
       for (i = 0; i < gst_caps_get_size (caps); i++) {
+        GstCapsFeatures *features = __gst_caps_get_features_unchecked (caps, i);
         GstStructure *structure = gst_caps_get_structure (caps, i);
 
         g_string_append (str, gst_structure_get_name (structure));
+
+        if (features && (gst_caps_features_is_any (features)
+                || !gst_caps_features_is_equal (features,
+                    GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY))) {
+          g_string_append_c (str, '(');
+          priv_gst_caps_features_append_to_gstring (features, str);
+          g_string_append_c (str, ')');
+        }
         g_string_append (str, "\\l");
 
         gst_structure_foreach (structure, string_append_field, (gpointer) str);
@@ -359,7 +392,7 @@
 
 static void
 debug_dump_element_pad_link (GstPad * pad, GstElement * element,
-    GstDebugGraphDetails details, FILE * out, const gint indent)
+    GstDebugGraphDetails details, GString * str, const gint indent)
 {
   GstElement *peer_element;
   GstPad *peer_pad;
@@ -368,7 +401,7 @@
   gchar *media_src = NULL, *media_sink = NULL;
   gchar *pad_name, *element_name;
   gchar *peer_pad_name, *peer_element_name;
-  const gchar *spc = &spaces[MAX (sizeof (spaces) - (1 + indent * 2), 0)];
+  const gchar *spc = MAKE_INDENT (indent);
 
   if ((peer_pad = gst_pad_get_peer (pad))) {
     if ((details & GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE) ||
@@ -416,13 +449,14 @@
 
     /* pad link */
     if (media) {
-      fprintf (out, "%s%s_%s -> %s_%s [label=\"%s\"]\n", spc,
+      g_string_append_printf (str, "%s%s_%s -> %s_%s [label=\"%s\"]\n", spc,
           element_name, pad_name, peer_element_name, peer_pad_name, media);
       g_free (media);
     } else if (media_src && media_sink) {
       /* dot has some issues with placement of head and taillabels,
        * we need an empty label to make space */
-      fprintf (out, "%s%s_%s -> %s_%s [labeldistance=\"10\", labelangle=\"0\", "
+      g_string_append_printf (str,
+          "%s%s_%s -> %s_%s [labeldistance=\"10\", labelangle=\"0\", "
           "label=\"                                                  \", "
           "taillabel=\"%s\", headlabel=\"%s\"]\n",
           spc, element_name, pad_name, peer_element_name, peer_pad_name,
@@ -430,7 +464,7 @@
       g_free (media_src);
       g_free (media_sink);
     } else {
-      fprintf (out, "%s%s_%s -> %s_%s\n", spc,
+      g_string_append_printf (str, "%s%s_%s -> %s_%s\n", spc,
           element_name, pad_name, peer_element_name, peer_pad_name);
     }
 
@@ -446,24 +480,28 @@
 
 static void
 debug_dump_element_pads (GstIterator * pad_iter, GstPad * pad,
-    GstElement * element, GstDebugGraphDetails details, FILE * out,
-    const gint indent, guint * src_pads, guint * sink_pads)
+    GstElement * element, GstDebugGraphDetails details, GString * str,
+    const gint indent, guint * num_pads, gchar * cluster_name,
+    gchar ** first_pad_name)
 {
   GValue item = { 0, };
   gboolean pads_done;
-  GstPadDirection dir;
+  const gchar *spc = MAKE_INDENT (indent);
 
   pads_done = FALSE;
   while (!pads_done) {
     switch (gst_iterator_next (pad_iter, &item)) {
       case GST_ITERATOR_OK:
         pad = g_value_get_object (&item);
-        debug_dump_element_pad (pad, element, details, out, indent);
-        dir = gst_pad_get_direction (pad);
-        if (dir == GST_PAD_SRC)
-          (*src_pads)++;
-        else if (dir == GST_PAD_SINK)
-          (*sink_pads)++;
+        if (!*num_pads) {
+          g_string_append_printf (str, "%ssubgraph cluster_%s {\n", spc,
+              cluster_name);
+          g_string_append_printf (str, "%s  label=\"\";\n", spc);
+          g_string_append_printf (str, "%s  style=\"invis\";\n", spc);
+          (*first_pad_name) = debug_dump_make_object_name (GST_OBJECT (pad));
+        }
+        debug_dump_element_pad (pad, element, details, str, indent);
+        (*num_pads)++;
         g_value_reset (&item);
         break;
       case GST_ITERATOR_RESYNC:
@@ -475,6 +513,9 @@
         break;
     }
   }
+  if (*num_pads) {
+    g_string_append_printf (str, "%s}\n\n", spc);
+  }
 }
 
 /*
@@ -486,8 +527,8 @@
  * Helper for gst_debug_bin_to_dot_file() to recursively dump a pipeline.
  */
 static void
-debug_dump_element (GstBin * bin, GstDebugGraphDetails details, FILE * out,
-    const gint indent)
+debug_dump_element (GstBin * bin, GstDebugGraphDetails details,
+    GString * str, const gint indent)
 {
   GstIterator *element_iter, *pad_iter;
   gboolean elements_done, pads_done;
@@ -496,10 +537,11 @@
   GstElement *element;
   GstPad *pad = NULL;
   guint src_pads, sink_pads;
+  gchar *src_pad_name = NULL, *sink_pad_name = NULL;
   gchar *element_name;
   gchar *state_name = NULL;
   gchar *param_name = NULL;
-  const gchar *spc = &spaces[MAX (sizeof (spaces) - (1 + indent * 2), 0)];
+  const gchar *spc = MAKE_INDENT (indent);
 
   element_iter = gst_bin_iterate_elements (bin);
   elements_done = FALSE;
@@ -513,15 +555,18 @@
           state_name = debug_dump_get_element_state (GST_ELEMENT (element));
         }
         if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
-          param_name = debug_dump_get_element_params (GST_ELEMENT (element));
+          param_name = debug_dump_get_element_params (GST_ELEMENT (element),
+              details);
         }
         /* elements */
-        fprintf (out, "%ssubgraph cluster_%s {\n", spc, element_name);
-        fprintf (out, "%s  fontname=\"Bitstream Vera Sans\";\n", spc);
-        fprintf (out, "%s  fontsize=\"8\";\n", spc);
-        fprintf (out, "%s  style=filled;\n", spc);
-        fprintf (out, "%s  color=black;\n\n", spc);
-        fprintf (out, "%s  label=\"%s\\n%s%s%s\";\n", spc,
+        g_string_append_printf (str, "%ssubgraph cluster_%s {\n", spc,
+            element_name);
+        g_string_append_printf (str, "%s  fontname=\"Bitstream Vera Sans\";\n",
+            spc);
+        g_string_append_printf (str, "%s  fontsize=\"8\";\n", spc);
+        g_string_append_printf (str, "%s  style=\"filled,rounded\";\n", spc);
+        g_string_append_printf (str, "%s  color=black;\n", spc);
+        g_string_append_printf (str, "%s  label=\"%s\\n%s%s%s\";\n", spc,
             G_OBJECT_TYPE_NAME (element), GST_OBJECT_NAME (element),
             (state_name ? state_name : ""), (param_name ? param_name : "")
             );
@@ -533,34 +578,47 @@
           g_free (param_name);
           param_name = NULL;
         }
-        g_free (element_name);
 
         src_pads = sink_pads = 0;
         if ((pad_iter = gst_element_iterate_sink_pads (element))) {
-          debug_dump_element_pads (pad_iter, pad, element, details, out, indent,
-              &src_pads, &sink_pads);
+          gchar *cluster_name = g_strdup_printf ("%s_sink", element_name);
+          debug_dump_element_pads (pad_iter, pad, element, details, str,
+              indent + 1, &sink_pads, cluster_name, &sink_pad_name);
+          g_free (cluster_name);
           gst_iterator_free (pad_iter);
         }
         if ((pad_iter = gst_element_iterate_src_pads (element))) {
-          debug_dump_element_pads (pad_iter, pad, element, details, out, indent,
-              &src_pads, &sink_pads);
+          gchar *cluster_name = g_strdup_printf ("%s_src", element_name);
+          debug_dump_element_pads (pad_iter, pad, element, details, str,
+              indent + 1, &src_pads, cluster_name, &src_pad_name);
+          g_free (cluster_name);
           gst_iterator_free (pad_iter);
         }
+        if (sink_pads && src_pads) {
+          /* add invisible link from first sink to first src pad */
+          g_string_append_printf (str,
+              "%s  %s_%s -> %s_%s [style=\"invis\"];\n",
+              spc, element_name, sink_pad_name, element_name, src_pad_name);
+        }
+        g_free (sink_pad_name);
+        g_free (src_pad_name);
+        g_free (element_name);
+        sink_pad_name = src_pad_name = NULL;
         if (GST_IS_BIN (element)) {
-          fprintf (out, "%s  fillcolor=\"#ffffff\";\n", spc);
+          g_string_append_printf (str, "%s  fillcolor=\"#ffffff\";\n", spc);
           /* recurse */
-          debug_dump_element (GST_BIN (element), details, out, indent + 1);
+          debug_dump_element (GST_BIN (element), details, str, indent + 1);
         } else {
           if (src_pads && !sink_pads)
-            fprintf (out, "%s  fillcolor=\"#ffaaaa\";\n", spc);
+            g_string_append_printf (str, "%s  fillcolor=\"#ffaaaa\";\n", spc);
           else if (!src_pads && sink_pads)
-            fprintf (out, "%s  fillcolor=\"#aaaaff\";\n", spc);
+            g_string_append_printf (str, "%s  fillcolor=\"#aaaaff\";\n", spc);
           else if (src_pads && sink_pads)
-            fprintf (out, "%s  fillcolor=\"#aaffaa\";\n", spc);
+            g_string_append_printf (str, "%s  fillcolor=\"#aaffaa\";\n", spc);
           else
-            fprintf (out, "%s  fillcolor=\"#ffffff\";\n", spc);
+            g_string_append_printf (str, "%s  fillcolor=\"#ffffff\";\n", spc);
         }
-        fprintf (out, "%s}\n\n", spc);
+        g_string_append_printf (str, "%s}\n\n", spc);
         if ((pad_iter = gst_element_iterate_pads (element))) {
           pads_done = FALSE;
           while (!pads_done) {
@@ -569,7 +627,7 @@
                 pad = g_value_get_object (&item2);
                 if (gst_pad_is_linked (pad)) {
                   if (gst_pad_get_direction (pad) == GST_PAD_SRC) {
-                    debug_dump_element_pad_link (pad, element, details, out,
+                    debug_dump_element_pad_link (pad, element, details, str,
                         indent);
                   } else {
                     GstPad *peer_pad = gst_pad_get_peer (pad);
@@ -578,7 +636,7 @@
                       if (!GST_IS_GHOST_PAD (peer_pad)
                           && GST_IS_PROXY_PAD (peer_pad)) {
                         debug_dump_element_pad_link (peer_pad, NULL, details,
-                            out, indent);
+                            str, indent);
                       }
                       gst_object_unref (peer_pad);
                     }
@@ -614,6 +672,81 @@
   gst_iterator_free (element_iter);
 }
 
+static void
+debug_dump_header (GstBin * bin, GstDebugGraphDetails details, GString * str)
+{
+  gchar *state_name = NULL;
+  gchar *param_name = NULL;
+
+  if (details & GST_DEBUG_GRAPH_SHOW_STATES) {
+    state_name = debug_dump_get_element_state (GST_ELEMENT (bin));
+  }
+  if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
+    param_name = debug_dump_get_element_params (GST_ELEMENT (bin), details);
+  }
+
+  /* write header */
+  g_string_append_printf (str,
+      "digraph pipeline {\n"
+      "  rankdir=LR;\n"
+      "  fontname=\"sans\";\n"
+      "  fontsize=\"10\";\n"
+      "  labelloc=t;\n"
+      "  nodesep=.1;\n"
+      "  ranksep=.2;\n"
+      "  label=\"<%s>\\n%s%s%s\";\n"
+      "  node [style=\"filled,rounded\", shape=box, fontsize=\"9\", fontname=\"sans\", margin=\"0.0,0.0\"];\n"
+      "  edge [labelfontsize=\"6\", fontsize=\"9\", fontname=\"monospace\"];\n"
+      "  \n"
+      "  legend [\n"
+      "    pos=\"0,0!\",\n"
+      "    margin=\"0.05,0.05\",\n"
+      "    style=\"filled\",\n"
+      "    label=\"Legend\\lElement-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing\\lPad-Activation: [-] none, [>] push, [<] pull\\lPad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set\\lPad-Task: [T] has started task, [t] has paused task\\l\",\n"
+      "  ];"
+      "\n", G_OBJECT_TYPE_NAME (bin), GST_OBJECT_NAME (bin),
+      (state_name ? state_name : ""), (param_name ? param_name : "")
+      );
+
+  if (state_name)
+    g_free (state_name);
+  if (param_name)
+    g_free (param_name);
+}
+
+static void
+debug_dump_footer (GString * str)
+{
+  g_string_append_printf (str, "}\n");
+}
+
+/*
+ * gst_debug_bin_to_dot_data:
+ * @bin: the top-level pipeline that should be analyzed
+ *
+ * To aid debugging applications one can use this method to obtain the whole
+ * network of gstreamer elements that form the pipeline into an dot file.
+ * This data can be processed with graphviz to get an image.
+ *
+ * Returns: (transfer full): a string containing the pipeline in graphviz
+ * dot format.
+ */
+gchar *
+gst_debug_bin_to_dot_data (GstBin * bin, GstDebugGraphDetails details)
+{
+  GString *str;
+
+  g_return_val_if_fail (GST_IS_BIN (bin), NULL);
+
+  str = g_string_new (NULL);
+
+  debug_dump_header (bin, details, str);
+  debug_dump_element (bin, details, str, 1);
+  debug_dump_footer (str);
+
+  return g_string_free (str, FALSE);
+}
+
 /*
  * gst_debug_bin_to_dot_file:
  * @bin: the top-level pipeline that should be analyzed
@@ -648,47 +781,14 @@
       priv_gst_dump_dot_dir, file_name);
 
   if ((out = fopen (full_file_name, "wb"))) {
-    gchar *state_name = NULL;
-    gchar *param_name = NULL;
+    gchar *buf;
 
-    if (details & GST_DEBUG_GRAPH_SHOW_STATES) {
-      state_name = debug_dump_get_element_state (GST_ELEMENT (bin));
-    }
-    if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
-      param_name = debug_dump_get_element_params (GST_ELEMENT (bin));
-    }
+    buf = gst_debug_bin_to_dot_data (bin, details);
+    fputs (buf, out);
 
-    /* write header */
-    fprintf (out,
-        "digraph pipeline {\n"
-        "  rankdir=LR;\n"
-        "  fontname=\"sans\";\n"
-        "  fontsize=\"10\";\n"
-        "  labelloc=t;\n"
-        "  nodesep=.1;\n"
-        "  ranksep=.2;\n"
-        "  label=\"<%s>\\n%s%s%s\";\n"
-        "  node [style=filled, shape=box, fontsize=\"9\", fontname=\"sans\", margin=\"0.0,0.0\"];\n"
-        "  edge [labelfontsize=\"6\", fontsize=\"9\", fontname=\"monospace\"];\n"
-        "  \n"
-        "  legend [\n"
-        "    pos=\"0,0!\",\n"
-        "    margin=\"0.05,0.05\",\n"
-        "    label=\"Legend\\lElement-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing\\lPad-Activation: [-] none, [>] push, [<] pull\\lPad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set\\lPad-Task: [T] has started task, [t] has paused task\\l\"\n,"
-        "  ];"
-        "\n", G_OBJECT_TYPE_NAME (bin), GST_OBJECT_NAME (bin),
-        (state_name ? state_name : ""), (param_name ? param_name : "")
-        );
-    if (state_name)
-      g_free (state_name);
-    if (param_name)
-      g_free (param_name);
-
-    debug_dump_element (bin, details, out, 1);
-
-    /* write footer */
-    fprintf (out, "}\n");
+    g_free (buf);
     fclose (out);
+
     GST_INFO ("wrote bin graph to : '%s'", full_file_name);
   } else {
     GST_WARNING ("Failed to open file '%s' for writing: %s", full_file_name,
diff --git a/gst/gstdebugutils.h b/gst/gstdebugutils.h
index ee0d193..06618f9 100644
--- a/gst/gstdebugutils.h
+++ b/gst/gstdebugutils.h
@@ -33,9 +33,14 @@
  * GstDebugGraphDetails:
  * @GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: show caps-name on edges
  * @GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: show caps-details on edges
- * @GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: show modified parameters on elements
+ * @GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: show modified parameters on
+ *                                           elements
  * @GST_DEBUG_GRAPH_SHOW_STATES: show element states
- * @GST_DEBUG_GRAPH_SHOW_ALL: show all details
+ * @GST_DEBUG_GRAPH_SHOW_FULL_PARAMS: show full element parameter values even
+ *                                    if they are very long
+ * @GST_DEBUG_GRAPH_SHOW_ALL: show all the typical details that one might want
+ * @GST_DEBUG_GRAPH_SHOW_VERBOSE: show all details regardless of how large or
+ *                                verbose they make the resulting output
  *
  * Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
  * and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS().
@@ -45,12 +50,15 @@
   GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS       = (1<<1),
   GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS = (1<<2),
   GST_DEBUG_GRAPH_SHOW_STATES             = (1<<3),
-  GST_DEBUG_GRAPH_SHOW_ALL                = ((1<<4)-1)
+  GST_DEBUG_GRAPH_SHOW_FULL_PARAMS        = (1<<4),
+  GST_DEBUG_GRAPH_SHOW_ALL                = ((1<<4)-1),
+  GST_DEBUG_GRAPH_SHOW_VERBOSE            = (-1)
 } GstDebugGraphDetails;
 
 
 /********** pipeline graphs **********/
 
+gchar * gst_debug_bin_to_dot_data (GstBin *bin, GstDebugGraphDetails details);
 void gst_debug_bin_to_dot_file (GstBin *bin, GstDebugGraphDetails details, const gchar *file_name);
 void gst_debug_bin_to_dot_file_with_ts (GstBin *bin, GstDebugGraphDetails details, const gchar *file_name);
 
diff --git a/gst/gstdevice.c b/gst/gstdevice.c
index 6274c93..ee92619 100644
--- a/gst/gstdevice.c
+++ b/gst/gstdevice.c
@@ -46,7 +46,8 @@
 {
   PROP_DISPLAY_NAME = 1,
   PROP_CAPS,
-  PROP_DEVICE_CLASS
+  PROP_DEVICE_CLASS,
+  PROP_PROPERTIES
 };
 
 enum
@@ -60,6 +61,7 @@
   GstCaps *caps;
   gchar *device_class;
   gchar *display_name;
+  GstStructure *properties;
 };
 
 
@@ -97,6 +99,10 @@
       g_param_spec_string ("device-class", "Device Class",
           "The Class of the device", "",
           G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+  g_object_class_install_property (object_class, PROP_PROPERTIES,
+      g_param_spec_boxed ("properties", "Properties",
+          "The extra properties of the device", GST_TYPE_STRUCTURE,
+          G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 
   signals[REMOVED] = g_signal_new ("removed", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
@@ -116,6 +122,8 @@
 
   gst_caps_replace (&device->priv->caps, NULL);
 
+  if (device->priv->properties)
+    gst_structure_free (device->priv->properties);
   g_free (device->priv->display_name);
   g_free (device->priv->device_class);
 
@@ -141,6 +149,10 @@
     case PROP_DEVICE_CLASS:
       g_value_take_string (value, gst_device_get_device_class (gstdevice));
       break;
+    case PROP_PROPERTIES:
+      if (gstdevice->priv->properties)
+        g_value_take_boxed (value, gst_device_get_properties (gstdevice));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -166,6 +178,11 @@
     case PROP_DEVICE_CLASS:
       gstdevice->priv->device_class = g_value_dup_string (value);
       break;
+    case PROP_PROPERTIES:
+      if (gstdevice->priv->properties)
+        gst_structure_free (gstdevice->priv->properties);
+      gstdevice->priv->properties = g_value_dup_boxed (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -263,6 +280,28 @@
 }
 
 /**
+ * gst_device_get_properties:
+ * @device: a #GstDevice
+ *
+ * Gets the extra properties of a device.
+ *
+ * Returns: The extra properties or %NULL when there are none.
+ *          Free with gst_structure_free() after use.
+ *
+ * Since: 1.6
+ */
+GstStructure *
+gst_device_get_properties (GstDevice * device)
+{
+  g_return_val_if_fail (GST_IS_DEVICE (device), NULL);
+
+  if (device->priv->properties != NULL)
+    return gst_structure_copy (device->priv->properties);
+  else
+    return NULL;
+}
+
+/**
  * gst_device_reconfigure_element:
  * @device: a #GstDevice
  * @element: a #GstElement
diff --git a/gst/gstdevice.h b/gst/gstdevice.h
index b055aa0..79eb908 100644
--- a/gst/gstdevice.h
+++ b/gst/gstdevice.h
@@ -77,28 +77,29 @@
 struct _GstDeviceClass {
   GstObjectClass    parent_class;
 
-  GstElement * (*create_element) (GstDevice * device, const gchar * name);
-  gboolean (*reconfigure_element) (GstDevice * device, GstElement * element);
+  GstElement * (*create_element)      (GstDevice * device, const gchar * name);
+  gboolean     (*reconfigure_element) (GstDevice * device, GstElement * element);
 
   /*< private >*/
   gpointer _gst_reserved[GST_PADDING];
 };
 
-GType        gst_device_get_type (void);
+GType          gst_device_get_type (void);
 
-GstElement * gst_device_create_element (GstDevice * device, const gchar * name);
+GstElement *   gst_device_create_element      (GstDevice * device, const gchar * name);
 
-GstCaps *    gst_device_get_caps (GstDevice * device);
-gchar *      gst_device_get_display_name (GstDevice * device);
-gchar *      gst_device_get_device_class (GstDevice * device);
-gboolean     gst_device_reconfigure_element (GstDevice * device,
-                                             GstElement * element);
+GstCaps *      gst_device_get_caps            (GstDevice * device);
+gchar *        gst_device_get_display_name    (GstDevice * device);
+gchar *        gst_device_get_device_class    (GstDevice * device);
+GstStructure * gst_device_get_properties      (GstDevice * device);
+gboolean       gst_device_reconfigure_element (GstDevice * device,
+                                               GstElement * element);
 
-gboolean      gst_device_has_classesv (GstDevice * device,
-                                       gchar ** classes);
+gboolean        gst_device_has_classesv       (GstDevice * device,
+                                               gchar ** classes);
 
-gboolean      gst_device_has_classes (GstDevice * device,
-                                      const gchar * classes);
+gboolean        gst_device_has_classes        (GstDevice * device,
+                                               const gchar * classes);
 
 
 G_END_DECLS
diff --git a/gst/gstdevicemonitor.c b/gst/gstdevicemonitor.c
index a1394a2..a9eda0a 100644
--- a/gst/gstdevicemonitor.c
+++ b/gst/gstdevicemonitor.c
@@ -108,8 +108,16 @@
   GPtrArray *filters;
 
   guint last_id;
+  GList *hidden;
+  gboolean show_all;
 };
 
+#define DEFAULT_SHOW_ALL        FALSE
+
+enum
+{
+  PROP_SHOW_ALL = 1,
+};
 
 G_DEFINE_TYPE (GstDeviceMonitor, gst_device_monitor, GST_TYPE_OBJECT);
 
@@ -133,13 +141,90 @@
 }
 
 static void
+gst_device_monitor_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstDeviceMonitor *monitor = GST_DEVICE_MONITOR (object);
+
+  switch (prop_id) {
+    case PROP_SHOW_ALL:
+      g_value_set_boolean (value,
+          gst_device_monitor_get_show_all_devices (monitor));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_device_monitor_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstDeviceMonitor *monitor = GST_DEVICE_MONITOR (object);
+
+  switch (prop_id) {
+    case PROP_SHOW_ALL:
+      gst_device_monitor_set_show_all_devices (monitor,
+          g_value_get_boolean (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static void
 gst_device_monitor_class_init (GstDeviceMonitorClass * klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   g_type_class_add_private (klass, sizeof (GstDeviceMonitorPrivate));
 
+  object_class->get_property = gst_device_monitor_get_property;
+  object_class->set_property = gst_device_monitor_set_property;
   object_class->dispose = gst_device_monitor_dispose;
+
+  g_object_class_install_property (object_class, PROP_SHOW_ALL,
+      g_param_spec_boolean ("show-all", "Show All",
+          "Show all devices, even those from hidden providers",
+          DEFAULT_SHOW_ALL, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
+}
+
+/* must be called with monitor lock */
+static gboolean
+is_provider_hidden (GstDeviceMonitor * monitor, GList * hidden,
+    GstDeviceProvider * provider)
+{
+  GstDeviceProviderFactory *factory;
+
+  if (monitor->priv->show_all)
+    return FALSE;
+
+  factory = gst_device_provider_get_factory (provider);
+  if (g_list_find_custom (hidden, GST_OBJECT_NAME (factory),
+          (GCompareFunc) g_strcmp0))
+    return TRUE;
+
+  return FALSE;
+}
+
+/* must be called with monitor lock */
+static void
+update_hidden_providers_list (GList ** hidden, GstDeviceProvider * provider)
+{
+  gchar **obs;
+
+  obs = gst_device_provider_get_hidden_providers (provider);
+  if (obs) {
+    gint i;
+
+    for (i = 0; obs[i]; i++)
+      *hidden = g_list_prepend (*hidden, obs[i]);
+
+    g_free (obs);
+  }
 }
 
 static void
@@ -151,6 +236,7 @@
   if (type == GST_MESSAGE_DEVICE_ADDED || type == GST_MESSAGE_DEVICE_REMOVED) {
     gboolean matches;
     GstDevice *device;
+    GstDeviceProvider *provider;
 
     if (type == GST_MESSAGE_DEVICE_ADDED)
       gst_message_parse_device_added (message, &device);
@@ -158,7 +244,11 @@
       gst_message_parse_device_removed (message, &device);
 
     GST_OBJECT_LOCK (monitor);
-    if (monitor->priv->filters->len) {
+    provider =
+        GST_DEVICE_PROVIDER (gst_object_get_parent (GST_OBJECT (device)));
+    if (is_provider_hidden (monitor, monitor->priv->hidden, provider)) {
+      matches = FALSE;
+    } else if (monitor->priv->filters->len) {
       guint i;
 
       for (i = 0; i < monitor->priv->filters->len; i++) {
@@ -178,6 +268,7 @@
     }
     GST_OBJECT_UNLOCK (monitor);
 
+    gst_object_unref (provider);
     gst_object_unref (device);
 
     if (matches)
@@ -192,6 +283,8 @@
   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
       GST_TYPE_DEVICE_MONITOR, GstDeviceMonitorPrivate);
 
+  self->priv->show_all = DEFAULT_SHOW_ALL;
+
   self->priv->bus = gst_bus_new ();
   gst_bus_set_flushing (self->priv->bus, TRUE);
 
@@ -209,7 +302,7 @@
   GstDeviceProvider *provider = g_ptr_array_index (self->priv->providers, i);
   GstBus *bus;
 
-  g_ptr_array_remove_index_fast (self->priv->providers, i);
+  g_ptr_array_remove_index (self->priv->providers, i);
 
   bus = gst_device_provider_get_bus (provider);
   g_signal_handlers_disconnect_by_func (bus, bus_sync_message, self);
@@ -223,7 +316,7 @@
 {
   GstDeviceMonitor *self = GST_DEVICE_MONITOR (object);
 
-  g_return_if_fail (self->priv->started == FALSE);
+  g_return_if_fail (!self->priv->started);
 
   if (self->priv->providers) {
     while (self->priv->providers->len)
@@ -258,7 +351,7 @@
 GList *
 gst_device_monitor_get_devices (GstDeviceMonitor * monitor)
 {
-  GList *devices = NULL;
+  GList *devices = NULL, *hidden = NULL;
   guint i;
   guint cookie;
 
@@ -281,7 +374,9 @@
 again:
 
   g_list_free_full (devices, gst_object_unref);
+  g_list_free_full (hidden, g_free);
   devices = NULL;
+  hidden = NULL;
 
   cookie = monitor->priv->cookie;
 
@@ -291,11 +386,17 @@
         gst_object_ref (g_ptr_array_index (monitor->priv->providers, i));
     GList *item;
 
-    GST_OBJECT_UNLOCK (monitor);
+    if (!is_provider_hidden (monitor, hidden, provider)) {
+      GST_OBJECT_UNLOCK (monitor);
 
-    tmpdev = gst_device_provider_get_devices (provider);
+      tmpdev = gst_device_provider_get_devices (provider);
 
-    GST_OBJECT_LOCK (monitor);
+      GST_OBJECT_LOCK (monitor);
+      update_hidden_providers_list (&hidden, provider);
+    } else {
+      tmpdev = NULL;
+    }
+
 
     for (item = tmpdev; item; item = item->next) {
       GstDevice *dev = GST_DEVICE (item->data);
@@ -305,6 +406,7 @@
       for (j = 0; j < monitor->priv->filters->len; j++) {
         struct DeviceFilter *filter =
             g_ptr_array_index (monitor->priv->filters, j);
+
         if (gst_caps_can_intersect (filter->caps, caps) &&
             gst_device_has_classesv (dev, filter->classesv)) {
           devices = g_list_prepend (devices, gst_object_ref (dev));
@@ -317,14 +419,14 @@
     g_list_free_full (tmpdev, gst_object_unref);
     gst_object_unref (provider);
 
-
     if (monitor->priv->cookie != cookie)
       goto again;
   }
+  g_list_free_full (hidden, g_free);
 
   GST_OBJECT_UNLOCK (monitor);
 
-  return devices;
+  return g_list_reverse (devices);
 }
 
 /**
@@ -343,7 +445,8 @@
 gboolean
 gst_device_monitor_start (GstDeviceMonitor * monitor)
 {
-  guint i;
+  guint cookie, i;
+  GList *pending = NULL, *started = NULL, *removed = NULL;
 
   g_return_val_if_fail (GST_IS_DEVICE_MONITOR (monitor), FALSE);
 
@@ -365,28 +468,73 @@
 
   gst_bus_set_flushing (monitor->priv->bus, FALSE);
 
+again:
+  cookie = monitor->priv->cookie;
+
+  g_list_free_full (pending, gst_object_unref);
+  pending = NULL;
+  removed = started;
+  started = NULL;
+
   for (i = 0; i < monitor->priv->providers->len; i++) {
-    GstDeviceProvider *provider =
-        g_ptr_array_index (monitor->priv->providers, i);
+    GstDeviceProvider *provider;
+    GList *find;
 
-    if (gst_device_provider_can_monitor (provider)) {
-      if (!gst_device_provider_start (provider)) {
-        gst_bus_set_flushing (monitor->priv->bus, TRUE);
+    provider = g_ptr_array_index (monitor->priv->providers, i);
 
-        for (; i != 0; i--)
-          gst_device_provider_stop (g_ptr_array_index (monitor->priv->providers,
-                  i - 1));
-
-        GST_OBJECT_UNLOCK (monitor);
-        return FALSE;
-      }
+    find = g_list_find (removed, provider);
+    if (find) {
+      /* this was already started, move to started list */
+      removed = g_list_remove_link (removed, find);
+      started = g_list_concat (started, find);
+    } else {
+      /* not started, add to pending list */
+      pending = g_list_append (pending, gst_object_ref (provider));
     }
   }
+  g_list_free_full (removed, gst_object_unref);
+  removed = NULL;
 
+  while (pending) {
+    GstDeviceProvider *provider = pending->data;
+
+    if (gst_device_provider_can_monitor (provider)) {
+      GST_OBJECT_UNLOCK (monitor);
+
+      if (!gst_device_provider_start (provider))
+        goto start_failed;
+
+      GST_OBJECT_LOCK (monitor);
+    }
+    started = g_list_prepend (started, provider);
+    pending = g_list_delete_link (pending, pending);
+
+    if (monitor->priv->cookie != cookie)
+      goto again;
+  }
   monitor->priv->started = TRUE;
   GST_OBJECT_UNLOCK (monitor);
 
+  g_list_free_full (started, gst_object_unref);
+
   return TRUE;
+
+start_failed:
+  {
+    GST_OBJECT_LOCK (monitor);
+    gst_bus_set_flushing (monitor->priv->bus, TRUE);
+    GST_OBJECT_UNLOCK (monitor);
+
+    while (started) {
+      GstDeviceProvider *provider = started->data;
+
+      gst_device_provider_stop (provider);
+      gst_object_unref (provider);
+
+      started = g_list_delete_link (started, started);
+    }
+    return FALSE;
+  }
 }
 
 /**
@@ -401,6 +549,7 @@
 gst_device_monitor_stop (GstDeviceMonitor * monitor)
 {
   guint i;
+  GList *started = NULL;
 
   g_return_if_fail (GST_IS_DEVICE_MONITOR (monitor));
 
@@ -411,14 +560,53 @@
     GstDeviceProvider *provider =
         g_ptr_array_index (monitor->priv->providers, i);
 
+    started = g_list_prepend (started, gst_object_ref (provider));
+  }
+  GST_OBJECT_UNLOCK (monitor);
+
+  while (started) {
+    GstDeviceProvider *provider = started->data;
+
     if (gst_device_provider_can_monitor (provider))
       gst_device_provider_stop (provider);
+
+    started = g_list_delete_link (started, started);
+    gst_object_unref (provider);
   }
+
+  GST_OBJECT_LOCK (monitor);
   monitor->priv->started = FALSE;
   GST_OBJECT_UNLOCK (monitor);
 
 }
 
+static void
+provider_hidden (GstDeviceProvider * provider, const gchar * hidden,
+    GstDeviceMonitor * monitor)
+{
+  GST_OBJECT_LOCK (monitor);
+  monitor->priv->hidden =
+      g_list_prepend (monitor->priv->hidden, g_strdup (hidden));
+  GST_OBJECT_UNLOCK (monitor);
+}
+
+static void
+provider_unhidden (GstDeviceProvider * provider, const gchar * hidden,
+    GstDeviceMonitor * monitor)
+{
+  GList *find;
+
+  GST_OBJECT_LOCK (monitor);
+  find =
+      g_list_find_custom (monitor->priv->hidden, hidden,
+      (GCompareFunc) g_strcmp0);
+  if (find) {
+    g_free (find->data);
+    monitor->priv->hidden = g_list_delete_link (monitor->priv->hidden, find);
+  }
+  GST_OBJECT_UNLOCK (monitor);
+}
+
 /**
  * gst_device_monitor_add_filter:
  * @monitor: a device monitor
@@ -430,7 +618,7 @@
  *
  * Filters must be added before the #GstDeviceMonitor is started.
  *
- * Returns: The id of the new filter or %0 if no provider matched the filter's
+ * Returns: The id of the new filter or 0 if no provider matched the filter's
  *  classes.
  *
  * Since: 1.4
@@ -463,7 +651,6 @@
   while (factories) {
     GstDeviceProviderFactory *factory = factories->data;
 
-
     if (gst_device_provider_factory_has_classesv (factory, filter->classesv)) {
       GstDeviceProvider *provider;
 
@@ -485,6 +672,12 @@
       if (provider) {
         GstBus *bus = gst_device_provider_get_bus (provider);
 
+        update_hidden_providers_list (&monitor->priv->hidden, provider);
+        g_signal_connect (provider, "provider-hidden",
+            (GCallback) provider_hidden, monitor);
+        g_signal_connect (provider, "provider-unhidden",
+            (GCallback) provider_unhidden, monitor);
+
         matched = TRUE;
         gst_bus_enable_sync_message_emission (bus);
         g_signal_connect (bus, "sync-message",
@@ -613,3 +806,94 @@
 
   return gst_object_ref (monitor->priv->bus);
 }
+
+/**
+ * gst_device_monitor_get_providers:
+ * @monitor: a #GstDeviceMonitor
+ *
+ * Get a list of the currently selected device provider factories.
+ *
+ * This
+ *
+ * Returns: (transfer full) (array zero-terminated=1) (element-type gchar*):
+ *     A list of device provider factory names that are currently being
+ *     monitored by @monitor or %NULL when nothing is being monitored.
+ *
+ * Since: 1.6
+ */
+gchar **
+gst_device_monitor_get_providers (GstDeviceMonitor * monitor)
+{
+  guint i, len;
+  gchar **res = NULL;
+
+  g_return_val_if_fail (GST_IS_DEVICE_MONITOR (monitor), NULL);
+
+  GST_OBJECT_LOCK (monitor);
+  len = monitor->priv->providers->len;
+  if (len == 0)
+    goto done;
+
+  res = g_new (gchar *, len + 1);
+
+  for (i = 0; i < len; i++) {
+    GstDeviceProvider *provider =
+        g_ptr_array_index (monitor->priv->providers, i);
+    GstDeviceProviderFactory *factory =
+        gst_device_provider_get_factory (provider);
+
+    res[i] = g_strdup (GST_OBJECT_NAME (factory));
+  }
+  res[i] = NULL;
+
+done:
+  GST_OBJECT_UNLOCK (monitor);
+
+  return res;
+}
+
+/**
+ * gst_device_monitor_set_show_all_devices:
+ * @monitor: a #GstDeviceMonitor
+ * @show_all: show all devices
+ *
+ * Set if all devices should be visible, even those devices from hidden
+ * providers. Setting @show_all to true might show some devices multiple times.
+ *
+ * Since: 1.6
+ */
+void
+gst_device_monitor_set_show_all_devices (GstDeviceMonitor * monitor,
+    gboolean show_all)
+{
+  g_return_if_fail (GST_IS_DEVICE_MONITOR (monitor));
+
+  GST_OBJECT_LOCK (monitor);
+  monitor->priv->show_all = show_all;
+  GST_OBJECT_UNLOCK (monitor);
+}
+
+/**
+ * gst_device_monitor_get_show_all_devices:
+ * @monitor: a #GstDeviceMonitor
+ *
+ * Get if @monitor is curretly showing all devices, even those from hidden
+ * providers.
+ *
+ * Returns: %TRUE when all devices will be shown.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_device_monitor_get_show_all_devices (GstDeviceMonitor * monitor)
+{
+  gboolean res;
+
+  g_return_val_if_fail (GST_IS_DEVICE_MONITOR (monitor), FALSE);
+
+  GST_OBJECT_LOCK (monitor);
+  res = monitor->priv->show_all;
+  GST_OBJECT_UNLOCK (monitor);
+
+  return res;
+}
diff --git a/gst/gstdevicemonitor.h b/gst/gstdevicemonitor.h
index 2df07e4..4d9c014 100644
--- a/gst/gstdevicemonitor.h
+++ b/gst/gstdevicemonitor.h
@@ -95,6 +95,11 @@
 gboolean  gst_device_monitor_remove_filter (GstDeviceMonitor * monitor,
                                             guint filter_id);
 
+gchar **  gst_device_monitor_get_providers (GstDeviceMonitor * monitor);
+
+void      gst_device_monitor_set_show_all_devices (GstDeviceMonitor * monitor, gboolean show_all);
+gboolean  gst_device_monitor_get_show_all_devices (GstDeviceMonitor * monitor);
+
 G_END_DECLS
 
 #endif /* __GST_DEVICE_MONITOR_H__ */
diff --git a/gst/gstdeviceprovider.c b/gst/gstdeviceprovider.c
index 8ad737c..363b1b8 100644
--- a/gst/gstdeviceprovider.c
+++ b/gst/gstdeviceprovider.c
@@ -55,8 +55,19 @@
   GMutex start_lock;
 
   gboolean started_count;
+
+  GList *hidden_providers;
 };
 
+enum
+{
+  PROVIDER_HIDDEN,
+  PROVIDER_UNHIDDEN,
+  LAST_SIGNAL
+};
+
+static guint gst_device_provider_signals[LAST_SIGNAL] = { 0 };
+
 /* this is used in gstelementfactory.c:gst_element_register() */
 GQuark __gst_deviceproviderclass_factory = 0;
 
@@ -134,6 +145,16 @@
 
   gobject_class->dispose = gst_device_provider_dispose;
   gobject_class->finalize = gst_device_provider_finalize;
+
+  gst_device_provider_signals[PROVIDER_HIDDEN] =
+      g_signal_new ("provider-hidden", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, 0, NULL,
+      NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_STRING);
+
+  gst_device_provider_signals[PROVIDER_UNHIDDEN] =
+      g_signal_new ("provider-unhidden", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, 0, NULL,
+      NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_STRING);
 }
 
 static void
@@ -543,6 +564,9 @@
 {
   GstMessage *message;
 
+  g_return_if_fail (GST_IS_DEVICE_PROVIDER (provider));
+  g_return_if_fail (GST_IS_DEVICE (device));
+
   if (!gst_object_set_parent (GST_OBJECT (device), GST_OBJECT (provider))) {
     GST_WARNING_OBJECT (provider, "Could not parent device %p to provider,"
         " it already has a parent", device);
@@ -579,6 +603,9 @@
   GstMessage *message;
   GList *item;
 
+  g_return_if_fail (GST_IS_DEVICE_PROVIDER (provider));
+  g_return_if_fail (GST_IS_DEVICE (device));
+
   GST_OBJECT_LOCK (provider);
   item = g_list_find (provider->devices, device);
   if (item) {
@@ -592,3 +619,123 @@
   if (item)
     gst_object_unparent (GST_OBJECT (device));
 }
+
+/**
+ * gst_device_provider_get_hidden_providers:
+ * @provider: a #GstDeviceProvider
+ *
+ * Get the provider factory names of the #GstDeviceProvider instances that
+ * are hidden by @provider.
+ *
+ * Returns: (transfer full) (array zero-terminated=1) (element-type gchar*):
+ *   a list of hidden providers factory names or %NULL when
+ *   nothing is hidden by @provider. Free with g_strfreev.
+ *
+ * Since: 1.6
+ */
+gchar **
+gst_device_provider_get_hidden_providers (GstDeviceProvider * provider)
+{
+  GList *walk;
+  guint i, len;
+  gchar **res = NULL;
+
+  g_return_val_if_fail (GST_IS_DEVICE_PROVIDER (provider), NULL);
+
+  GST_OBJECT_LOCK (provider);
+  len = g_list_length (provider->priv->hidden_providers);
+  if (len == 0)
+    goto done;
+
+  res = g_new (gchar *, len + 1);
+  for (i = 0, walk = provider->priv->hidden_providers; walk;
+      walk = g_list_next (walk), i++)
+    res[i] = g_strdup (walk->data);
+  res[i] = NULL;
+
+done:
+  GST_OBJECT_UNLOCK (provider);
+
+  return res;
+}
+
+/**
+ * gst_device_provider_hide_provider:
+ * @provider: a #GstDeviceProvider
+ * @name: a provider factory name
+ *
+ * Make @provider hide the devices from the factory with @name.
+ *
+ * This function is used when @provider will also provide the devices reported
+ * by provider factory @name. A monitor should stop monitoring the
+ * device provider with @name to avoid duplicate devices.
+ *
+ * Since: 1.6
+ */
+void
+gst_device_provider_hide_provider (GstDeviceProvider * provider,
+    const gchar * name)
+{
+  GList *find;
+  const gchar *hidden_name = NULL;
+
+  g_return_if_fail (GST_IS_DEVICE_PROVIDER (provider));
+  g_return_if_fail (name != NULL);
+
+  GST_OBJECT_LOCK (provider);
+  find =
+      g_list_find_custom (provider->priv->hidden_providers, name,
+      (GCompareFunc) g_strcmp0);
+  if (find == NULL) {
+    hidden_name = name;
+    provider->priv->hidden_providers =
+        g_list_prepend (provider->priv->hidden_providers, g_strdup (name));
+  }
+  GST_OBJECT_UNLOCK (provider);
+
+  if (hidden_name)
+    g_signal_emit (provider, gst_device_provider_signals[PROVIDER_HIDDEN],
+        0, hidden_name);
+}
+
+/**
+ * gst_device_provider_unhide_provider:
+ * @provider: a #GstDeviceProvider
+ * @name: a provider factory name
+ *
+ * Make @provider unhide the devices from factory @name.
+ *
+ * This function is used when @provider will no longer provide the devices
+ * reported by provider factory @name. A monitor should start
+ * monitoring the devices from provider factory @name in order to see
+ * all devices again.
+ *
+ * Since: 1.6
+ */
+void
+gst_device_provider_unhide_provider (GstDeviceProvider * provider,
+    const gchar * name)
+{
+  GList *find;
+  gchar *unhidden_name = NULL;
+
+  g_return_if_fail (GST_IS_DEVICE_PROVIDER (provider));
+  g_return_if_fail (unhidden_name != NULL);
+
+  GST_OBJECT_LOCK (provider);
+  find =
+      g_list_find_custom (provider->priv->hidden_providers, name,
+      (GCompareFunc) g_strcmp0);
+  if (find) {
+    unhidden_name = find->data;
+    provider->priv->hidden_providers =
+        g_list_delete_link (provider->priv->hidden_providers, find);
+  }
+  GST_OBJECT_UNLOCK (provider);
+
+  if (unhidden_name) {
+    g_signal_emit (provider,
+        gst_device_provider_signals[PROVIDER_UNHIDDEN], 0, unhidden_name);
+    g_free (unhidden_name);
+  }
+}
diff --git a/gst/gstdeviceprovider.h b/gst/gstdeviceprovider.h
index 6370afc..239faeb 100644
--- a/gst/gstdeviceprovider.h
+++ b/gst/gstdeviceprovider.h
@@ -19,7 +19,6 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include <gst/gstdeviceproviderfactory.h>
 
 
 #ifndef __GST_DEVICE_PROVIDER_H__
@@ -33,6 +32,8 @@
 typedef struct _GstDeviceProviderClass GstDeviceProviderClass;
 typedef struct _GstDeviceProviderPrivate GstDeviceProviderPrivate;
 
+#include <gst/gstdeviceproviderfactory.h>
+
 #define GST_TYPE_DEVICE_PROVIDER                 (gst_device_provider_get_type())
 #define GST_IS_DEVICE_PROVIDER(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DEVICE_PROVIDER))
 #define GST_IS_DEVICE_PROVIDER_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DEVICE_PROVIDER))
@@ -111,31 +112,37 @@
 GstBus *    gst_device_provider_get_bus        (GstDeviceProvider * provider);
 
 void        gst_device_provider_device_add     (GstDeviceProvider * provider,
-                                               GstDevice * device);
+                                                GstDevice * device);
 void        gst_device_provider_device_remove  (GstDeviceProvider * provider,
-                                               GstDevice * device);
+                                                GstDevice * device);
+
+gchar **    gst_device_provider_get_hidden_providers (GstDeviceProvider * provider);
+void        gst_device_provider_hide_provider        (GstDeviceProvider * provider,
+                                                      const gchar       * name);
+void        gst_device_provider_unhide_provider      (GstDeviceProvider * provider,
+                                                      const gchar       * name);
 
 
 /* device provider class meta data */
-void        gst_device_provider_class_set_metadata          (GstDeviceProviderClass *klass,
+void        gst_device_provider_class_set_metadata         (GstDeviceProviderClass *klass,
                                                             const gchar     *longname,
                                                             const gchar     *classification,
                                                             const gchar     *description,
                                                             const gchar     *author);
-void        gst_device_provider_class_set_static_metadata   (GstDeviceProviderClass *klass,
+void        gst_device_provider_class_set_static_metadata  (GstDeviceProviderClass *klass,
                                                             const gchar     *longname,
                                                             const gchar     *classification,
                                                             const gchar     *description,
                                                             const gchar     *author);
-void        gst_device_provider_class_add_metadata          (GstDeviceProviderClass * klass,
+void        gst_device_provider_class_add_metadata         (GstDeviceProviderClass * klass,
                                                             const gchar * key, const gchar * value);
-void        gst_device_provider_class_add_static_metadata   (GstDeviceProviderClass * klass,
+void        gst_device_provider_class_add_static_metadata  (GstDeviceProviderClass * klass,
                                                             const gchar * key, const gchar * value);
-const gchar * gst_device_provider_class_get_metadata        (GstDeviceProviderClass * klass,
-                                                              const gchar * key);
+const gchar * gst_device_provider_class_get_metadata       (GstDeviceProviderClass * klass,
+                                                            const gchar * key);
 
 /* factory management */
-GstDeviceProviderFactory * gst_device_provider_get_factory   (GstDeviceProvider * provider);
+GstDeviceProviderFactory * gst_device_provider_get_factory (GstDeviceProvider * provider);
 
 G_END_DECLS
 
diff --git a/gst/gstelement.c b/gst/gstelement.c
index 8e68a2a..c681194 100644
--- a/gst/gstelement.c
+++ b/gst/gstelement.c
@@ -417,6 +417,9 @@
  * Gets the currently configured clock of the element. This is the clock as was
  * last set with gst_element_set_clock().
  *
+ * Elements in a pipeline will only have their clock set when the
+ * pipeline is in the PLAYING state.
+ *
  * Returns: (transfer full): the #GstClock of the element. unref after usage.
  *
  * MT safe.
@@ -795,7 +798,6 @@
       break;
   }
   element->pads = g_list_remove (element->pads, pad);
-  GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_NEED_PARENT);
   element->numpads--;
   element->pads_cookie++;
   GST_OBJECT_UNLOCK (element);
@@ -949,7 +951,7 @@
     pad = gst_element_get_static_pad (element, name);
     if (pad) {
       gst_object_unref (pad);
-      /* FIXME 0.11: Change this to g_return_val_if_fail() */
+      /* FIXME 2.0: Change this to g_return_val_if_fail() */
       g_critical ("Element %s already has a pad named %s, the behaviour of "
           " gst_element_get_request_pad() for existing pads is undefined!",
           GST_ELEMENT_NAME (element), name);
@@ -977,7 +979,7 @@
  *
  * This method is slower than manually getting the pad template and calling
  * gst_element_request_pad() if the pads should have a specific name (e.g.
- * @name is "src_1" instead of "src_%u").
+ * @name is "src_1" instead of "src_\%u").
  *
  * Returns: (transfer full) (nullable): requested #GstPad if found,
  *     otherwise %NULL.  Release after usage.
@@ -1070,7 +1072,7 @@
 }
 
 /**
- * gst_element_request_pad:
+ * gst_element_request_pad: (virtual request_new_pad)
  * @element: a #GstElement to find a request pad of.
  * @templ: a #GstPadTemplate of which we want a pad of.
  * @name: (transfer none) (allow-none): the name of the request #GstPad
diff --git a/gst/gstelement.h b/gst/gstelement.h
index bdd7215..5f45988 100644
--- a/gst/gstelement.h
+++ b/gst/gstelement.h
@@ -624,8 +624,10 @@
   /* virtual methods for subclasses */
 
   /* request/release pads */
+  /* FIXME 2.0 harmonize naming with gst_element_request_pad */
   GstPad*               (*request_new_pad)      (GstElement *element, GstPadTemplate *templ,
                                                  const gchar* name, const GstCaps *caps);
+
   void                  (*release_pad)          (GstElement *element, GstPad *pad);
 
   /* state changes */
diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c
index b1f737b..486b9fe 100644
--- a/gst/gstelementfactory.c
+++ b/gst/gstelementfactory.c
@@ -729,6 +729,12 @@
   if (!res && (type & GST_ELEMENT_FACTORY_TYPE_FORMATTER))
     res = (strstr (klass, "Formatter") != NULL);
 
+  if (!res && (type & GST_ELEMENT_FACTORY_TYPE_DECRYPTOR))
+    res = (strstr (klass, "Decryptor") != NULL);
+
+  if (!res && (type & GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR))
+    res = (strstr (klass, "Encryptor") != NULL);
+
   /* Filter by media type now, we only test if it
    * matched any of the types above or only checking the media
    * type was requested. */
diff --git a/gst/gstelementfactory.h b/gst/gstelementfactory.h
index 4641457..17e55ce 100644
--- a/gst/gstelementfactory.h
+++ b/gst/gstelementfactory.h
@@ -88,6 +88,8 @@
  * @GST_ELEMENT_FACTORY_TYPE_PARSER: Parser elements
  * @GST_ELEMENT_FACTORY_TYPE_PAYLOADER: Payloader elements
  * @GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER: Depayloader elements
+ * @GST_ELEMENT_FACTORY_TYPE_DECRYPTOR: Elements handling decryption (Since 1.6)
+ * @GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR: Elements handling encryption (Since 1.6)
  * @GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS: Private, do not use
  * @GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO: Elements handling video media types
  * @GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO: Elements handling audio media types
@@ -115,6 +117,8 @@
 #define  GST_ELEMENT_FACTORY_TYPE_PAYLOADER      (G_GUINT64_CONSTANT (1) << 7)
 #define  GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER    (G_GUINT64_CONSTANT (1) << 8)
 #define  GST_ELEMENT_FACTORY_TYPE_FORMATTER      (G_GUINT64_CONSTANT (1) << 9)
+#define  GST_ELEMENT_FACTORY_TYPE_DECRYPTOR      (G_GUINT64_CONSTANT (1) << 10)
+#define  GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR      (G_GUINT64_CONSTANT (1) << 11)
 
 #define  GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS   (G_GUINT64_CONSTANT (1) << 48)
 
@@ -125,69 +129,51 @@
 #define  GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA (G_GUINT64_CONSTANT (1) << 53)
 
 /**
- * GST_ELEMENT_FACTORY_TYPE_ANY:
+ * GST_ELEMENT_FACTORY_TYPE_ANY: (value 562949953421311) (type GstElementFactoryListType)
  *
  * Elements of any of the defined GST_ELEMENT_FACTORY_LIST types
- *
- * Value: 562949953421311
- * Type: GstElementFactoryListType
  */
 #define  GST_ELEMENT_FACTORY_TYPE_ANY ((G_GUINT64_CONSTANT (1) << 49) - 1)
 
 /**
- * GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY:
+ * GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY: (value 18446462598732840960) (type GstElementFactoryListType)
  *
  * Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA types
  *
  * Note: Do not use this if you wish to not filter against any of the defined
  * media types. If you wish to do this, simply don't specify any
  * GST_ELEMENT_FACTORY_TYPE_MEDIA flag.
- *
- * Value: 18446462598732840960
- * Type: GstElementFactoryListType
  */
 #define GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY (~G_GUINT64_CONSTANT (0) << 48)
 
 /**
- * GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER:
+ * GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER: (value 2814749767106562) (type GstElementFactoryListType)
  *
  * All encoders handling video or image media types
- *
- * Value: 2814749767106562
- * Type: GstElementFactoryListType
  */
 #define GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER (GST_ELEMENT_FACTORY_TYPE_ENCODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE)
 
 /**
- * GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER:
+ * GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER: (value 1125899906842626) (type GstElementFactoryListType)
  *
  * All encoders handling audio media types
- *
- * Value: 1125899906842626
- * Type: GstElementFactoryListType
  */
 #define GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER (GST_ELEMENT_FACTORY_TYPE_ENCODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO)
 
 /**
- * GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS:
+ * GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS: (value 3940649673949188) (type GstElementFactoryListType)
  *
  * All sinks handling audio, video or image media types
- *
- * Value: 3940649673949188
- * Type: GstElementFactoryListType
  */
 #define GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS (GST_ELEMENT_FACTORY_TYPE_SINK | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE)
 
 /**
- * GST_ELEMENT_FACTORY_TYPE_DECODABLE:
+ * GST_ELEMENT_FACTORY_TYPE_DECODABLE: (value 353) (type GstElementFactoryListType)
  *
  * All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders)
- *
- * Value: 353
- * Type: GstElementFactoryListType
  */
 #define GST_ELEMENT_FACTORY_TYPE_DECODABLE \
-  (GST_ELEMENT_FACTORY_TYPE_DECODER | GST_ELEMENT_FACTORY_TYPE_DEMUXER | GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER | GST_ELEMENT_FACTORY_TYPE_PARSER)
+  (GST_ELEMENT_FACTORY_TYPE_DECODER | GST_ELEMENT_FACTORY_TYPE_DEMUXER | GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER | GST_ELEMENT_FACTORY_TYPE_PARSER | GST_ELEMENT_FACTORY_TYPE_DECRYPTOR)
 
 /* Element klass defines */
 #define GST_ELEMENT_FACTORY_KLASS_DECODER               "Decoder"
@@ -200,6 +186,8 @@
 #define GST_ELEMENT_FACTORY_KLASS_PAYLOADER             "Payloader"
 #define GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER           "Depayloader"
 #define GST_ELEMENT_FACTORY_KLASS_FORMATTER             "Formatter"
+#define GST_ELEMENT_FACTORY_KLASS_DECRYPTOR             "Decryptor"
+#define GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR             "Encryptor"
 
 #define GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO           "Video"
 #define GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO           "Audio"
diff --git a/gst/gstelementmetadata.h b/gst/gstelementmetadata.h
index bdb53c7..76a0c04 100644
--- a/gst/gstelementmetadata.h
+++ b/gst/gstelementmetadata.h
@@ -23,6 +23,8 @@
 #ifndef __GST_ELEMENT_METADATA_H__
 #define __GST_ELEMENT_METADATA_H__
 
+#include <glib.h>
+
 G_BEGIN_DECLS
 
 /**
diff --git a/gst/gsterror.c b/gst/gsterror.c
index 0cf5285..6c0ef77 100644
--- a/gst/gsterror.c
+++ b/gst/gsterror.c
@@ -96,13 +96,13 @@
  * </itemizedlist>
  */
 
-/* FIXME 0.11: the entire error system needs an overhaul - it's not very
+/* FIXME 2.0: the entire error system needs an overhaul - it's not very
  * useful the way it is. Also, we need to be able to specify additional
  * 'details' for errors (e.g. disk/file/resource error -> out-of-space; or
  * put the url/filename/device name that caused the error somewhere)
  * without having to add enums for every little thing.
  *
- * FIXME 0.11: get rid of GST_{CORE,LIBRARY,RESOURCE,STREAM}_ERROR_NUM_ERRORS.
+ * FIXME 2.0: get rid of GST_{CORE,LIBRARY,RESOURCE,STREAM}_ERROR_NUM_ERRORS.
  * Maybe also replace _quark() functions with g_quark_from_static_string()?
  */
 #ifdef HAVE_CONFIG_H
diff --git a/gst/gsterror.h b/gst/gsterror.h
index 1ed9eb5..8918149 100644
--- a/gst/gsterror.h
+++ b/gst/gsterror.h
@@ -126,7 +126,7 @@
  * @GST_RESOURCE_ERROR_NO_SPACE_LEFT: used when the resource has no space left.
  * @GST_RESOURCE_ERROR_NOT_AUTHORIZED: used when the resource can't be opened
  *                                     due to missing authorization.
- *                                     Since: 1.2.4
+ *                                     (Since 1.2.4)
  * @GST_RESOURCE_ERROR_NUM_ERRORS: the number of resource error types.
  *
  * Resource errors are for any resource used by an element:
diff --git a/gst/gstevent.c b/gst/gstevent.c
index a1cb381..421682c 100644
--- a/gst/gstevent.c
+++ b/gst/gstevent.c
@@ -109,6 +109,7 @@
   {GST_EVENT_SEGMENT, "segment", 0},
   {GST_EVENT_TAG, "tag", 0},
   {GST_EVENT_TOC, "toc", 0},
+  {GST_EVENT_PROTECTION, "protection", 0},
   {GST_EVENT_BUFFERSIZE, "buffersize", 0},
   {GST_EVENT_SINK_MESSAGE, "sink-message", 0},
   {GST_EVENT_EOS, "eos", 0},
@@ -715,7 +716,7 @@
  * downstream synchronized with the buffer flow and contains timing information
  * and playback properties for the buffers that will follow.
  *
- * The newsegment event marks the range of buffers to be processed. All
+ * The segment event marks the range of buffers to be processed. All
  * data not within the segment range is not to be processed. This can be
  * used intelligently by plugins to apply more efficient methods of skipping
  * unneeded data. The valid range is expressed with the @start and @stop
@@ -736,10 +737,10 @@
  * stream. (@rate * @applied_rate) should always equal the rate that has been
  * requested for playback. For example, if an element has an input segment
  * with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust
- * incoming timestamps and buffer content by half and output a newsegment event
+ * incoming timestamps and buffer content by half and output a segment event
  * with @rate of 1.0 and @applied_rate of 2.0
  *
- * After a newsegment event, the buffer stream time is calculated with:
+ * After a segment event, the buffer stream time is calculated with:
  *
  *   time + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)
  *
@@ -1390,7 +1391,7 @@
  *
  * Returns: (transfer full): a new #GstEvent
  */
-/* FIXME 0.11: take ownership of msg for consistency? */
+/* FIXME 2.0: take ownership of msg for consistency? */
 GstEvent *
 gst_event_new_sink_message (const gchar * name, GstMessage * msg)
 {
@@ -1440,7 +1441,7 @@
  *
  * Source elements, demuxers and other elements that create new streams
  * are supposed to send this event as the first event of a new stream. It
- * should not be send after a flushing seek or in similar situations
+ * should not be sent after a flushing seek or in similar situations
  * and is used to mark the beginning of a new logical stream. Elements
  * combining multiple streams must ensure that this event is only forwarded
  * downstream once and not for every single input stream.
@@ -1691,6 +1692,119 @@
 }
 
 /**
+ * gst_event_new_protection:
+ * @system_id: (transfer none): a string holding a UUID that uniquely
+ * identifies a protection system.
+ * @data: (transfer none): a #GstBuffer holding protection system specific
+ * information. The reference count of the buffer will be incremented by one.
+ * @origin: a string indicating where the protection
+ * information carried in the event was extracted from. The allowed values
+ * of this string will depend upon the protection scheme.
+ *
+ * Creates a new event containing information specific to a particular
+ * protection system (uniquely identified by @system_id), by which that
+ * protection system can acquire key(s) to decrypt a protected stream.
+ *
+ * In order for a decryption element to decrypt media
+ * protected using a specific system, it first needs all the
+ * protection system specific information necessary to acquire the decryption
+ * key(s) for that stream. The functions defined here enable this information
+ * to be passed in events from elements that extract it
+ * (e.g., ISOBMFF demuxers, MPEG DASH demuxers) to protection decrypter
+ * elements that use it.
+ *
+ * Events containing protection system specific information are created using
+ * #gst_event_new_protection, and they can be parsed by downstream elements
+ * using #gst_event_parse_protection.
+ *
+ * In Common Encryption, protection system specific information may be located
+ * within ISOBMFF files, both in movie (moov) boxes and movie fragment (moof)
+ * boxes; it may also be contained in ContentProtection elements within MPEG
+ * DASH MPDs. The events created by #gst_event_new_protection contain data
+ * identifying from which of these locations the encapsulated protection system
+ * specific information originated. This origin information is required as
+ * some protection systems use different encodings depending upon where the
+ * information originates.
+ *
+ * The events returned by gst_event_new_protection() are implemented
+ * in such a way as to ensure that the most recently-pushed protection info
+ * event of a particular @origin and @system_id will
+ * be stuck to the output pad of the sending element.
+ *
+ * Returns: a #GST_EVENT_PROTECTION event, if successful; %NULL
+ * if unsuccessful.
+ *
+ * Since: 1.6
+ */
+GstEvent *
+gst_event_new_protection (const gchar * system_id,
+    GstBuffer * data, const gchar * origin)
+{
+  gchar *event_name;
+  GstEvent *event;
+  GstStructure *s;
+
+  g_return_val_if_fail (system_id != NULL, NULL);
+  g_return_val_if_fail (data != NULL, NULL);
+
+  event_name =
+      g_strconcat ("GstProtectionEvent", origin ? "-" : "",
+      origin ? origin : "", "-", system_id, NULL);
+
+  GST_CAT_INFO (GST_CAT_EVENT, "creating protection event %s", event_name);
+
+  s = gst_structure_new (event_name, "data", GST_TYPE_BUFFER, data,
+      "system_id", G_TYPE_STRING, system_id, NULL);
+  if (origin)
+    gst_structure_set (s, "origin", G_TYPE_STRING, origin, NULL);
+  event = gst_event_new_custom (GST_EVENT_PROTECTION, s);
+
+  g_free (event_name);
+  return event;
+}
+
+/**
+ * gst_event_parse_protection:
+ * @event: a #GST_EVENT_PROTECTION event.
+ * @system_id: (out) (allow-none) (transfer none): pointer to store the UUID
+ * string uniquely identifying a content protection system.
+ * @data: (out) (allow-none) (transfer none): pointer to store a #GstBuffer
+ * holding protection system specific information.
+ * @origin: (allow-none) (transfer none): pointer to store a value that
+ * indicates where the protection information carried by @event was extracted
+ * from.
+ *
+ * Parses an event containing protection system specific information and stores
+ * the results in @system_id, @data and @origin. The data stored in @system_id,
+ * @origin and @data are valid until @event is released.
+ *
+ * Since: 1.6
+ */
+void
+gst_event_parse_protection (GstEvent * event, const gchar ** system_id,
+    GstBuffer ** data, const gchar ** origin)
+{
+  const GstStructure *s;
+
+  g_return_if_fail (event != NULL);
+  g_return_if_fail (GST_IS_EVENT (event));
+  g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_PROTECTION);
+
+  s = gst_event_get_structure (event);
+
+  if (origin)
+    *origin = gst_structure_get_string (s, "origin");
+
+  if (system_id)
+    *system_id = gst_structure_get_string (s, "system_id");
+
+  if (data) {
+    const GValue *value = gst_structure_get_value (s, "data");
+    *data = gst_value_get_buffer (value);
+  }
+}
+
+/**
  * gst_event_new_segment_done:
  * @format: The format of the position being done
  * @position: The position of the segment being done
diff --git a/gst/gstevent.h b/gst/gstevent.h
index db3cb51..9fe9bcf 100644
--- a/gst/gstevent.h
+++ b/gst/gstevent.h
@@ -99,6 +99,8 @@
  * @GST_EVENT_GAP: Marks a gap in the datastream.
  * @GST_EVENT_TOC: An event which indicates that a new table of contents (TOC)
  *                 was found or updated.
+ * @GST_EVENT_PROTECTION: An event which indicates that new or updated
+ *                 encryption information has been found in the stream.
  * @GST_EVENT_QOS: A quality message. Used to indicate to upstream elements
  *                 that the downstream elements should adjust their processing
  *                 rate.
@@ -147,6 +149,7 @@
   GST_EVENT_SINK_MESSAGE          = GST_EVENT_MAKE_TYPE (100, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
   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)),
 
   /* non-sticky downstream serialized */
   GST_EVENT_SEGMENT_DONE          = GST_EVENT_MAKE_TYPE (150, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
@@ -178,7 +181,6 @@
 #include <gst/gststructure.h>
 #include <gst/gsttaglist.h>
 #include <gst/gstsegment.h>
-#include <gst/gstsegment.h>
 #include <gst/gstmessage.h>
 #include <gst/gstcontext.h>
 
@@ -346,15 +348,15 @@
 
 /**
  * GstQOSType:
- * @GST_QOS_TYPE_OVERFLOW: The QoS event type that is produced when downstream
+ * @GST_QOS_TYPE_OVERFLOW: The QoS event type that is produced when upstream
  *    elements are producing data too quickly and the element can't keep up
- *    processing the data. Upstream should reduce their processing rate. This
+ *    processing the data. Upstream should reduce their production rate. This
  *    type is also used when buffers arrive early or in time.
- * @GST_QOS_TYPE_UNDERFLOW: The QoS event type that is produced when downstream
- *    elements are producing data too slowly and need to speed up their processing
- *    rate.
+ * @GST_QOS_TYPE_UNDERFLOW: The QoS event type that is produced when upstream
+ *    elements are producing data too slowly and need to speed up their
+ *    production rate.
  * @GST_QOS_TYPE_THROTTLE: The QoS event type that is produced when the
- *    application enabled throttling to limit the datarate.
+ *    application enabled throttling to limit the data rate.
  *
  * The different types of QoS events that can be given to the
  * gst_event_new_qos() method.
@@ -530,6 +532,11 @@
 GstEvent*      gst_event_new_toc                (GstToc *toc, gboolean updated);
 void           gst_event_parse_toc              (GstEvent *event, GstToc **toc, gboolean *updated);
 
+/* Protection event */
+GstEvent *     gst_event_new_protection         (const gchar * system_id, GstBuffer * data, const gchar * origin);
+
+void           gst_event_parse_protection       (GstEvent * event, const gchar ** system_id,
+                                                 GstBuffer ** data, const gchar ** origin);
 
 /* buffer */
 GstEvent *      gst_event_new_buffer_size       (GstFormat format, gint64 minsize, gint64 maxsize,
diff --git a/gst/gstghostpad.c b/gst/gstghostpad.c
index 082aa15..22644fc 100644
--- a/gst/gstghostpad.c
+++ b/gst/gstghostpad.c
@@ -533,8 +533,7 @@
   GstPad *pad, *internal;
 
   g_return_val_if_fail (GST_IS_GHOST_PAD (gpad), FALSE);
-  g_return_val_if_fail (GST_GHOST_PAD_PRIVATE (gpad)->constructed == FALSE,
-      FALSE);
+  g_return_val_if_fail (!GST_GHOST_PAD_PRIVATE (gpad)->constructed, FALSE);
 
   g_object_get (gpad, "direction", &dir, "template", &templ, NULL);
 
diff --git a/gst/gstinfo.c b/gst/gstinfo.c
index 3f56686..643ce88 100644
--- a/gst/gstinfo.c
+++ b/gst/gstinfo.c
@@ -25,7 +25,7 @@
 /**
  * SECTION:gstinfo
  * @short_description: Debugging and logging facilities
- * @see_also: #gstreamer-gstconfig, #gstreamer-Gst for command line parameters
+ * @see_also: #gst-running for command line parameters
  * and environment variables that affect the debugging output.
  *
  * GStreamer's debugging subsystem is an easy way to get information about what
@@ -176,6 +176,7 @@
 GstDebugCategory *GST_CAT_META = NULL;
 GstDebugCategory *GST_CAT_LOCKING = NULL;
 GstDebugCategory *GST_CAT_CONTEXT = NULL;
+GstDebugCategory *_priv_GST_CAT_PROTECTION = NULL;
 
 
 #endif /* !defined(GST_DISABLE_GST_DEBUG) || !defined(GST_REMOVE_DISABLED) */
@@ -264,8 +265,6 @@
 static volatile gint G_GNUC_MAY_ALIAS __default_level = GST_LEVEL_DEFAULT;
 static volatile gint G_GNUC_MAY_ALIAS __use_color = GST_DEBUG_COLOR_MODE_ON;
 
-static FILE *log_file;
-
 /* FIXME: export this? */
 gboolean
 _priv_gst_in_valgrind (void)
@@ -282,9 +281,6 @@
 #ifdef HAVE_VALGRIND_VALGRIND_H
     if (RUNNING_ON_VALGRIND) {
       GST_CAT_INFO (GST_CAT_GST_INIT, "we're running inside valgrind");
-      printf ("GStreamer has detected that it is running inside valgrind.\n");
-      printf ("It might now take different code paths to ease debugging.\n");
-      printf ("Of course, this may also lead to different bugs.\n");
       in_valgrind = GST_VG_INSIDE;
     } else {
       GST_CAT_LOG (GST_CAT_GST_INIT, "not doing extra valgrind stuff");
@@ -304,6 +300,7 @@
 _priv_gst_debug_init (void)
 {
   const gchar *env;
+  FILE *log_file;
 
   env = g_getenv ("GST_DEBUG_FILE");
   if (env != NULL && *env != '\0') {
@@ -333,7 +330,7 @@
   _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, NULL, NULL);
+  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",
@@ -394,6 +391,8 @@
   GST_CAT_META = _gst_debug_category_new ("GST_META", 0, "meta");
   GST_CAT_LOCKING = _gst_debug_category_new ("GST_LOCKING", 0, "locking");
   GST_CAT_CONTEXT = _gst_debug_category_new ("GST_CONTEXT", 0, NULL);
+  _priv_GST_CAT_PROTECTION =
+      _gst_debug_category_new ("GST_PROTECTION", 0, "protection");
 
   /* print out the valgrind message if we're in valgrind */
   _priv_gst_in_valgrind ();
@@ -448,7 +447,6 @@
   va_end (var_args);
 }
 
-#ifdef G_OS_WIN32
 /* based on g_basename(), which we can't use because it was deprecated */
 static inline const gchar *
 gst_path_basename (const gchar * file_name)
@@ -471,7 +469,6 @@
 
   return file_name;
 }
-#endif
 
 /**
  * gst_debug_log_valist:
@@ -497,17 +494,14 @@
   GSList *handler;
 
   g_return_if_fail (category != NULL);
+
+  if (level > gst_debug_category_get_threshold (category))
+    return;
+
   g_return_if_fail (file != NULL);
   g_return_if_fail (function != NULL);
   g_return_if_fail (format != NULL);
 
-  /* The predefined macro __FILE__ is always the exact path given to the
-   * compiler with MSVC, which may or may not be the basename.  We work
-   * around it at runtime to improve the readability. */
-#ifdef G_OS_WIN32
-  file = gst_path_basename (file);
-#endif
-
   message.message = NULL;
   message.format = format;
   G_VA_COPY (message.arguments, args);
@@ -585,7 +579,7 @@
 gst_info_structure_to_string (const GstStructure * s)
 {
   if (G_LIKELY (s)) {
-    gchar *str = gst_structure_to_string (s);;
+    gchar *str = gst_structure_to_string (s);
     if (G_UNLIKELY (pretty_tags && s->name == GST_QUARK (TAGLIST)))
       return prettify_structure_string (str);
     else
@@ -597,14 +591,29 @@
 static inline gchar *
 gst_info_describe_buffer (GstBuffer * buffer)
 {
+  const gchar *offset_str = "none";
+  const gchar *offset_end_str = "none";
+  gchar offset_buf[32], offset_end_buf[32];
+
+  if (GST_BUFFER_OFFSET_IS_VALID (buffer)) {
+    g_snprintf (offset_buf, sizeof (offset_buf), "%" G_GUINT64_FORMAT,
+        GST_BUFFER_OFFSET (buffer));
+    offset_str = offset_buf;
+  }
+  if (GST_BUFFER_OFFSET_END_IS_VALID (buffer)) {
+    g_snprintf (offset_end_buf, sizeof (offset_end_buf), "%" G_GUINT64_FORMAT,
+        GST_BUFFER_OFFSET_END (buffer));
+    offset_end_str = offset_end_buf;
+  }
+
   return g_strdup_printf ("buffer: %p, pts %" GST_TIME_FORMAT ", dts %"
       GST_TIME_FORMAT ", dur %" GST_TIME_FORMAT ", size %" G_GSIZE_FORMAT
-      ", offset %" G_GUINT64_FORMAT ", offset_end %" G_GUINT64_FORMAT
-      ", flags 0x%x", buffer, GST_TIME_ARGS (GST_BUFFER_PTS (buffer)),
+      ", offset %s, offset_end %s, flags 0x%x", buffer,
+      GST_TIME_ARGS (GST_BUFFER_PTS (buffer)),
       GST_TIME_ARGS (GST_BUFFER_DTS (buffer)),
       GST_TIME_ARGS (GST_BUFFER_DURATION (buffer)),
-      gst_buffer_get_size (buffer), GST_BUFFER_OFFSET (buffer),
-      GST_BUFFER_OFFSET_END (buffer), GST_BUFFER_FLAGS (buffer));
+      gst_buffer_get_size (buffer), offset_str, offset_end_str,
+      GST_BUFFER_FLAGS (buffer));
 }
 
 static inline gchar *
@@ -962,12 +971,13 @@
  * @message: the actual message
  * @object: (transfer none) (allow-none): the object this message relates to,
  *     or %NULL if none
- * @unused: an unused variable, reserved for some user_data.
+ * @user_data: the FILE* to log to
  *
  * The default logging handler used by GStreamer. Logging functions get called
- * whenever a macro like GST_DEBUG or similar is used. This function outputs the
- * message and additional info to stderr (or the log file specified via the
- * GST_DEBUG_FILE environment variable).
+ * whenever a macro like GST_DEBUG or similar is used. By default this function
+ * is setup to output the message and additional info to stderr (or the log file
+ * specified via the GST_DEBUG_FILE environment variable) as received via
+ * @user_data.
  *
  * You can add other handlers by using gst_debug_add_log_function().
  * And you can remove this handler by calling
@@ -976,15 +986,23 @@
 void
 gst_debug_log_default (GstDebugCategory * category, GstDebugLevel level,
     const gchar * file, const gchar * function, gint line,
-    GObject * object, GstDebugMessage * message, gpointer unused)
+    GObject * object, GstDebugMessage * message, gpointer user_data)
 {
   gint pid;
   GstClockTime elapsed;
   gchar *obj = NULL;
   GstDebugColorMode color_mode;
+  FILE *log_file = user_data ? user_data : stderr;
+  gchar c;
 
-  if (level > gst_debug_category_get_threshold (category))
-    return;
+  /* __FILE__ might be a file name or an absolute path or a
+   * relative path, irrespective of the exact compiler used,
+   * in which case we want to shorten it to the filename for
+   * readability. */
+  c = file[0];
+  if (c == '.' || c == '/' || c == '\\' || (c != '\0' && file[1] == ':')) {
+    file = gst_path_basename (file);
+  }
 
   pid = getpid ();
   color_mode = gst_debug_get_color_mode ();
@@ -992,7 +1010,7 @@
   if (object) {
     obj = gst_debug_print_object (object);
   } else {
-    obj = g_strdup ("");
+    obj = (gchar *) "";
   }
 
   elapsed = GST_CLOCK_DIFF (_priv_gst_info_start_time,
@@ -1075,7 +1093,8 @@
 #undef PRINT_FMT
   }
 
-  g_free (obj);
+  if (object != NULL)
+    g_free (obj);
 }
 
 /**
@@ -1507,6 +1526,8 @@
       g_slice_free (LevelNameEntry, entry);
       g_slist_free_1 (walk);
       walk = __level_name;
+    } else {
+      walk = g_slist_next (walk);
     }
   }
   g_mutex_unlock (&__level_name_mutex);
@@ -1801,7 +1822,7 @@
 
   g_assert (list);
 
-  if (reset == TRUE)
+  if (reset)
     gst_debug_set_default_threshold (0);
 
   split = g_strsplit (list, ",", 0);
diff --git a/gst/gstinfo.h b/gst/gstinfo.h
index 5c802bd..d4678ac 100644
--- a/gst/gstinfo.h
+++ b/gst/gstinfo.h
@@ -59,10 +59,10 @@
  *  An example would be notifications about state changes or receiving/sending
  *  of events.
  * @GST_LEVEL_LOG: Log messages are messages that are very common but might be
- *  useful to know. As a rule of thumb a pipeline that is iterating as expected
- *  should never output anything else but LOG messages. Use this log level to
- *  log recurring information in chain functions and loop functions, for
- *  example.
+ *  useful to know. As a rule of thumb a pipeline that is running as expected
+ *  should never output anything else but LOG messages whilst processing data.
+ *  Use this log level to log recurring information in chain functions and
+ *  loop functions, for example.
  * @GST_LEVEL_TRACE: Tracing-related messages.
  *  Examples for this are referencing/dereferencing of objects.
  * @GST_LEVEL_MEMDUMP: memory dump messages are used to log (small) chunks of
@@ -102,6 +102,22 @@
 #define GST_LEVEL_DEFAULT GST_LEVEL_NONE
 #endif
 
+/**
+ * GST_LEVEL_MAX:
+ *
+ * Defines the maximum debugging level to be enabled at compilation time. By default
+ * it is set such that all debugging statements will be enabled.
+ *
+ * If you wish to compile GStreamer and plugins with only some debugging statements
+ * (Such as just warnings and errors), you can define it at compile time to the
+ * maximum debug level. Any debug statements above that level will be compiled out.
+ *
+ * Since: 1.6
+ */
+#ifndef GST_LEVEL_MAX
+#define GST_LEVEL_MAX GST_LEVEL_COUNT
+#endif
+
 /* defines for format (colors etc)
  * don't change them around, it uses terminal layout
  * Terminal color strings:
@@ -338,7 +354,7 @@
                                           gint               line,
                                           GObject          * object,
                                           GstDebugMessage  * message,
-                                          gpointer           unused) G_GNUC_NO_INSTRUMENT;
+                                          gpointer           user_data) G_GNUC_NO_INSTRUMENT;
 
 const gchar *   gst_debug_level_get_name (GstDebugLevel level);
 
@@ -520,7 +536,7 @@
  */
 #ifdef G_HAVE_ISO_VARARGS
 #define GST_CAT_LEVEL_LOG(cat,level,object,...) G_STMT_START{		\
-  if (G_UNLIKELY (level <= _gst_debug_min)) {						\
+  if (G_UNLIKELY (level <= GST_LEVEL_MAX && level <= _gst_debug_min)) {						\
     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__,	\
         (GObject *) (object), __VA_ARGS__);				\
   }									\
@@ -528,7 +544,7 @@
 #else /* G_HAVE_GNUC_VARARGS */
 #ifdef G_HAVE_GNUC_VARARGS
 #define GST_CAT_LEVEL_LOG(cat,level,object,args...) G_STMT_START{	\
-  if (G_UNLIKELY (level <= _gst_debug_min)) {						\
+  if (G_UNLIKELY (level <= GST_LEVEL_MAX && level <= _gst_debug_min)) {						\
     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__,	\
         (GObject *) (object), ##args );					\
   }									\
@@ -538,7 +554,7 @@
 GST_CAT_LEVEL_LOG_valist (GstDebugCategory * cat,
     GstDebugLevel level, gpointer object, const char *format, va_list varargs)
 {
-  if (G_UNLIKELY (level <= _gst_debug_min)) {
+  if (G_UNLIKELY (level <= GST_LEVEL_MAX && level <= _gst_debug_min)) {
     gst_debug_log_valist (cat, level, "", "", 0, (GObject *) object, format,
         varargs);
   }
@@ -561,7 +577,8 @@
  * other macros and hence in a separate block right here. Docs chunks are
  * with the other doc chunks below though. */
 #define __GST_CAT_MEMDUMP_LOG(cat,object,msg,data,length) G_STMT_START{       \
-  if (G_UNLIKELY (GST_LEVEL_MEMDUMP <= _gst_debug_min)) {                    \
+    if (G_UNLIKELY (GST_LEVEL_MEMDUMP <= GST_LEVEL_MAX &&		      \
+		    GST_LEVEL_MEMDUMP <= _gst_debug_min)) {		      \
     _gst_debug_dump_mem ((cat), __FILE__, GST_FUNCTION, __LINE__,             \
         (GObject *) (object), (msg), (data), (length));                       \
   }                                                                           \
diff --git a/gst/gstiterator.c b/gst/gstiterator.c
index 4e5b1f5..4aed7c7 100644
--- a/gst/gstiterator.c
+++ b/gst/gstiterator.c
@@ -32,18 +32,20 @@
  * Various GStreamer objects provide access to their internal structures using
  * an iterator.
  *
- * In general, whenever calling a GstIterator function results in your code
- * receiving a refcounted object, the refcount for that object will have been
- * increased.  Your code is responsible for unreffing that object after use.
+ * Note that if calling a GstIterator function results in your code receiving
+ * a refcounted object (with, say, g_value_get_object()), the refcount for that
+ * object will not be increased. Your code is responsible for taking a reference
+ * if it wants to continue using it later.
  *
  * The basic use pattern of an iterator is as follows:
  * |[
  *   GstIterator *it = _get_iterator(object);
+ *   GValue item = G_VALUE_INIT;
  *   done = FALSE;
  *   while (!done) {
  *     switch (gst_iterator_next (it, &amp;item)) {
  *       case GST_ITERATOR_OK:
- *         ... use/change item here...
+ *         ...get/use/change item here...
  *         g_value_reset (&amp;item);
  *         break;
  *       case GST_ITERATOR_RESYNC:
diff --git a/gst/gstmacros.h b/gst/gstmacros.h
index 47f9917..53cf6cf 100644
--- a/gst/gstmacros.h
+++ b/gst/gstmacros.h
@@ -19,6 +19,8 @@
 #ifndef __GST_MACROS_H__
 #define __GST_MACROS_H__
 
+#include <glib.h>
+
 G_BEGIN_DECLS
 
 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
diff --git a/gst/gstmemory.c b/gst/gstmemory.c
index 9e97d1e..09c429f 100644
--- a/gst/gstmemory.c
+++ b/gst/gstmemory.c
@@ -123,6 +123,7 @@
 
   mem->allocator = gst_object_ref (allocator);
   if (parent) {
+    /* FIXME 2.0: this can fail if the memory is already write locked */
     gst_memory_lock (parent, GST_LOCK_FLAG_EXCLUSIVE);
     gst_memory_ref (parent);
   }
@@ -197,6 +198,7 @@
 gst_memory_resize (GstMemory * mem, gssize offset, gsize size)
 {
   g_return_if_fail (mem != NULL);
+  g_return_if_fail (gst_memory_is_writable (mem));
   g_return_if_fail (offset >= 0 || mem->offset >= -offset);
   g_return_if_fail (size + mem->offset + offset <= mem->maxsize);
 
@@ -292,15 +294,19 @@
   if (!gst_memory_lock (mem, (GstLockFlags) flags))
     goto lock_failed;
 
-  info->data = mem->allocator->mem_map (mem, mem->maxsize, flags);
+  info->flags = flags;
+  info->memory = mem;
+  info->size = mem->size;
+  info->maxsize = mem->maxsize - mem->offset;
+
+  if (mem->allocator->mem_map_full)
+    info->data = mem->allocator->mem_map_full (mem, info, mem->maxsize);
+  else
+    info->data = mem->allocator->mem_map (mem, mem->maxsize, flags);
 
   if (G_UNLIKELY (info->data == NULL))
     goto error;
 
-  info->memory = mem;
-  info->flags = flags;
-  info->size = mem->size;
-  info->maxsize = mem->maxsize - mem->offset;
   info->data = info->data + mem->offset;
 
   return TRUE;
@@ -336,19 +342,22 @@
   g_return_if_fail (info != NULL);
   g_return_if_fail (info->memory == mem);
 
-  mem->allocator->mem_unmap (mem);
+  if (mem->allocator->mem_unmap_full)
+    mem->allocator->mem_unmap_full (mem, info);
+  else
+    mem->allocator->mem_unmap (mem);
   gst_memory_unlock (mem, (GstLockFlags) info->flags);
 }
 
 /**
  * gst_memory_copy:
  * @mem: a #GstMemory
- * @offset: an offset to copy
- * @size: size to copy or -1 to copy all bytes from offset
+ * @offset: offset to copy from
+ * @size: size to copy, or -1 to copy to the end of the memory region
  *
  * Return a copy of @size bytes from @mem starting from @offset. This copy is
- * guaranteed to be writable. @size can be set to -1 to return a copy all bytes
- * from @offset.
+ * guaranteed to be writable. @size can be set to -1 to return a copy
+ * from @offset to the end of the memory region.
  *
  * Returns: a new #GstMemory.
  */
@@ -367,13 +376,13 @@
 /**
  * gst_memory_share:
  * @mem: a #GstMemory
- * @offset: an offset to share
- * @size: size to share or -1 to share bytes from offset
+ * @offset: offset to share from
+ * @size: size to share, or -1 to share to the end of the memory region
  *
  * Return a shared copy of @size bytes from @mem starting from @offset. No
  * memory copy is performed and the memory region is simply shared. The result
- * is guaranteed to be not-writable. @size can be set to -1 to return a share
- * all bytes from @offset.
+ * is guaranteed to be non-writable. @size can be set to -1 to return a shared
+ * copy from @offset to the end of the memory region.
  *
  * Returns: a new #GstMemory.
  */
@@ -386,8 +395,28 @@
   g_return_val_if_fail (!GST_MEMORY_FLAG_IS_SET (mem, GST_MEMORY_FLAG_NO_SHARE),
       NULL);
 
+  /* whether we can lock the memory exclusively */
+  /* in order to maintain backwards compatibility by not requiring subclasses
+   * to lock the memory themselves and propagate the possible failure in their
+   * mem_share implementation */
+  /* FIXME 2.0: remove and fix gst_memory_init() and/or all memory subclasses
+   * to propagate this failure case */
+  if (!gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE))
+    return NULL;
+
+  /* double lock to ensure we are not mapped writable without an
+   * exclusive lock. */
+  if (!gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE)) {
+    gst_memory_unlock (mem, GST_LOCK_FLAG_EXCLUSIVE);
+    return NULL;
+  }
+
   shared = mem->allocator->mem_share (mem, offset, size);
 
+  /* unlocking before calling the subclass would be racy */
+  gst_memory_unlock (mem, GST_LOCK_FLAG_EXCLUSIVE);
+  gst_memory_unlock (mem, GST_LOCK_FLAG_EXCLUSIVE);
+
   return shared;
 }
 
diff --git a/gst/gstmemory.h b/gst/gstmemory.h
index 4819e2a..c8b8fd4 100644
--- a/gst/gstmemory.h
+++ b/gst/gstmemory.h
@@ -26,6 +26,7 @@
 #include <gst/gstconfig.h>
 
 #include <glib-object.h>
+#include <gst/gstminiobject.h>
 
 G_BEGIN_DECLS
 
@@ -46,8 +47,8 @@
  * made when this memory needs to be shared between buffers.
  * @GST_MEMORY_FLAG_ZERO_PREFIXED: the memory prefix is filled with 0 bytes
  * @GST_MEMORY_FLAG_ZERO_PADDED: the memory padding is filled with 0 bytes
- * @GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS: the memory is physically contiguous. Since 1.2
- * @GST_MEMORY_FLAG_NOT_MAPPABLE: the memory can't be mapped via gst_memory_map() without any preconditions. Since 1.2
+ * @GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS: the memory is physically contiguous. (Since 2.2)
+ * @GST_MEMORY_FLAG_NOT_MAPPABLE: the memory can't be mapped via gst_memory_map() without any preconditions. (Since 1.2)
  * @GST_MEMORY_FLAG_LAST: first flag that can be used for custom purposes
  *
  * Flags for wrapped memory.
@@ -215,7 +216,7 @@
  *
  * Initializer for #GstMapInfo
  */
-#define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, }
+#define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, {0, }, {0, }}
 
 /**
  * GstMemoryMapFunction:
@@ -233,16 +234,38 @@
 typedef gpointer    (*GstMemoryMapFunction)       (GstMemory *mem, gsize maxsize, GstMapFlags flags);
 
 /**
+ * GstMemoryMapFullFunction:
+ * @mem: a #GstMemory
+ * @info: the #GstMapInfo to map with
+ * @maxsize: size to map
+ *
+ * Get the memory of @mem that can be accessed according to the mode specified
+ * in @info's flags. The function should return a pointer that contains at least
+ * @maxsize bytes.
+ *
+ * Returns: a pointer to memory of which at least @maxsize bytes can be
+ * accessed according to the access pattern in @info's flags.
+ */
+typedef gpointer    (*GstMemoryMapFullFunction)       (GstMemory *mem, GstMapInfo * info, gsize maxsize);
+
+/**
  * GstMemoryUnmapFunction:
  * @mem: a #GstMemory
  *
  * Return the pointer previously retrieved with gst_memory_map().
- *
- * Returns: %TRUE on success.
  */
 typedef void        (*GstMemoryUnmapFunction)     (GstMemory *mem);
 
 /**
+ * GstMemoryUnmapFullFunction:
+ * @mem: a #GstMemory
+ * @info: a #GstMapInfo
+ *
+ * Return the pointer previously retrieved with gst_memory_map() with @info.
+ */
+typedef void        (*GstMemoryUnmapFullFunction)     (GstMemory *mem, GstMapInfo * info);
+
+/**
  * GstMemoryCopyFunction:
  * @mem: a #GstMemory
  * @offset: an offset
diff --git a/gst/gstmessage.c b/gst/gstmessage.c
index 63950eb..5e530b7 100644
--- a/gst/gstmessage.c
+++ b/gst/gstmessage.c
@@ -118,11 +118,6 @@
 
   GST_CAT_INFO (GST_CAT_GST_INIT, "init messages");
 
-  /* the GstMiniObject types need to be class_ref'd once before it can be
-   * done from multiple threads;
-   * see http://bugzilla.gnome.org/show_bug.cgi?id=304551 */
-  gst_message_get_type ();
-
   for (i = 0; message_quarks[i].name; i++) {
     message_quarks[i].quark =
         g_quark_from_static_string (message_quarks[i].name);
@@ -171,6 +166,28 @@
   return 0;
 }
 
+static gboolean
+_gst_message_dispose (GstMessage * message)
+{
+  gboolean do_free = TRUE;
+
+  if (GST_MINI_OBJECT_FLAG_IS_SET (message, GST_MESSAGE_FLAG_ASYNC_DELIVERY)) {
+    /* revive message, so bus can finish with it and clean it up */
+    gst_message_ref (message);
+
+    GST_INFO ("[msg %p] signalling async free", message);
+
+    GST_MESSAGE_LOCK (message);
+    GST_MESSAGE_SIGNAL (message);
+    GST_MESSAGE_UNLOCK (message);
+
+    /* don't free it yet, let bus finish with it first */
+    do_free = FALSE;
+  }
+
+  return do_free;
+}
+
 static void
 _gst_message_free (GstMessage * message)
 {
@@ -186,12 +203,6 @@
     GST_MESSAGE_SRC (message) = NULL;
   }
 
-  if (message->lock.p) {
-    GST_MESSAGE_LOCK (message);
-    GST_MESSAGE_SIGNAL (message);
-    GST_MESSAGE_UNLOCK (message);
-  }
-
   structure = GST_MESSAGE_STRUCTURE (message);
   if (structure) {
     gst_structure_set_parent_refcount (structure, NULL);
@@ -240,7 +251,8 @@
     GstObject * src)
 {
   gst_mini_object_init (GST_MINI_OBJECT_CAST (message), 0, _gst_message_type,
-      (GstMiniObjectCopyFunction) _gst_message_copy, NULL,
+      (GstMiniObjectCopyFunction) _gst_message_copy,
+      (GstMiniObjectDisposeFunction) _gst_message_dispose,
       (GstMiniObjectFreeFunction) _gst_message_free);
 
   GST_MESSAGE_TYPE (message) = type;
@@ -255,7 +267,7 @@
 /**
  * gst_message_new_custom:
  * @type: The #GstMessageType to distinguish messages
- * @src: The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @structure: (transfer full) (allow-none): the structure for the
  *     message. The message will take ownership of the structure.
  *
@@ -352,7 +364,7 @@
 
 /**
  * gst_message_new_eos:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  *
  * Create a new eos message. This message is generated and posted in
  * the sink elements of a GstBin. The bin will only forward the EOS
@@ -374,7 +386,7 @@
 
 /**
  * gst_message_new_error:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @error: (transfer none): The GError for this message.
  * @debug: A debugging string.
  *
@@ -403,7 +415,7 @@
 
 /**
  * gst_message_new_warning:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @error: (transfer none): The GError for this message.
  * @debug: A debugging string.
  *
@@ -430,7 +442,7 @@
 
 /**
  * gst_message_new_info:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @error: (transfer none): The GError for this message.
  * @debug: A debugging string.
  *
@@ -457,7 +469,7 @@
 
 /**
  * gst_message_new_tag:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @tag_list: (transfer full): the tag list for the message.
  *
  * Create a new tag message. The message will take ownership of the tag list.
@@ -486,7 +498,7 @@
 
 /**
  * gst_message_new_buffering:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @percent: The buffering percent
  *
  * Create a new buffering message. This message can be posted by an element that
@@ -528,7 +540,7 @@
 
 /**
  * gst_message_new_state_changed:
- * @src: (transfer none): the object originating the message
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @oldstate: the previous state
  * @newstate: the new (current) state
  * @pending: the pending (target) state
@@ -558,7 +570,7 @@
 
 /**
  * gst_message_new_state_dirty:
- * @src: (transfer none): the object originating the message
+ * @src: (transfer none) (allow-none): The object originating the message
  *
  * Create a state dirty message. This message is posted whenever an element
  * changed its state asynchronously and is used internally to update the
@@ -580,7 +592,7 @@
 
 /**
  * gst_message_new_clock_provide:
- * @src: (transfer none): the object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @clock: (transfer none): the clock it provides
  * @ready: %TRUE if the sender can provide a clock
  *
@@ -612,7 +624,7 @@
 
 /**
  * gst_message_new_clock_lost:
- * @src: (transfer none): the object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @clock: (transfer none): the clock that was lost
  *
  * Create a clock lost message. This message is posted whenever the
@@ -641,7 +653,7 @@
 
 /**
  * gst_message_new_new_clock:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @clock: (transfer none): the new selected clock
  *
  * Create a new clock message. This message is posted whenever the
@@ -666,7 +678,7 @@
 
 /**
  * gst_message_new_structure_change:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @type: The change type.
  * @owner: (transfer none): The owner element of @src.
  * @busy: Whether the structure change is busy.
@@ -705,7 +717,7 @@
 
 /**
  * gst_message_new_segment_start:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @format: The format of the position being played
  * @position: The position of the segment being played
  *
@@ -735,7 +747,7 @@
 
 /**
  * gst_message_new_segment_done:
- * @src: (transfer none): the object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @format: The format of the position being done
  * @position: The position of the segment being done
  *
@@ -765,7 +777,7 @@
 
 /**
  * gst_message_new_application:
- * @src: (transfer none): the object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @structure: (transfer full): the structure for the message. The message
  *     will take ownership of the structure.
  *
@@ -786,7 +798,7 @@
 
 /**
  * gst_message_new_element:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @structure: (transfer full): The structure for the
  *     message. The message will take ownership of the structure.
  *
@@ -809,7 +821,7 @@
 
 /**
  * gst_message_new_duration_changed:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  *
  * 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
@@ -836,7 +848,7 @@
 
 /**
  * gst_message_new_async_start:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  *
  * This message is posted by elements when they start an ASYNC state change.
  *
@@ -856,7 +868,7 @@
 
 /**
  * gst_message_new_async_done:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @running_time: the desired running_time
  *
  * The message is posted when elements completed an ASYNC state change.
@@ -884,7 +896,7 @@
 
 /**
  * gst_message_new_latency:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  *
  * This message can be posted by elements when their latency requirements have
  * changed.
@@ -905,7 +917,7 @@
 
 /**
  * gst_message_new_request_state:
- * @src: (transfer none): the object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @state: The new requested state
  *
  * This message can be posted by elements when they want to have their state
@@ -2084,7 +2096,7 @@
 
 /**
  * gst_message_new_reset_time:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @running_time: the requested running-time
  *
  * This message is posted when the pipeline running-time should be reset to
@@ -2134,7 +2146,7 @@
 
 /**
  * gst_message_new_stream_start:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  *
  * Create a new stream_start message. This message is generated and posted in
  * the sink elements of a GstBin. The bin will only forward the STREAM_START
@@ -2227,7 +2239,7 @@
 
 /**
  * gst_message_new_need_context:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @context_type: The context type that is needed
  *
  * This message is posted when an element needs a specific #GstContext.
@@ -2286,7 +2298,7 @@
 
 /**
  * gst_message_new_have_context:
- * @src: (transfer none): The object originating the message.
+ * @src: (transfer none) (allow-none): The object originating the message.
  * @context: (transfer full): the context
  *
  * This message is posted when an element has a new local #GstContext.
diff --git a/gst/gstmessage.h b/gst/gstmessage.h
index fc5a7d8..133d859 100644
--- a/gst/gstmessage.h
+++ b/gst/gstmessage.h
@@ -197,7 +197,7 @@
  * @message: a #GstMessage
  *
  * Check if the message is in the extended message group
- * (Since 1.4)
+ * Since: 1.4
  */
 #define GST_MESSAGE_TYPE_IS_EXTENDED(message)       (!!(GST_MESSAGE_CAST(message)->type & GST_MESSAGE_EXTENDED))
 
diff --git a/gst/gstmeta.h b/gst/gstmeta.h
index 4283f8e..b5db1d5 100644
--- a/gst/gstmeta.h
+++ b/gst/gstmeta.h
@@ -23,6 +23,9 @@
 #ifndef __GST_META_H__
 #define __GST_META_H__
 
+#include <glib.h>
+#include <gst/gstbuffer.h>
+
 G_BEGIN_DECLS
 
 typedef struct _GstMeta GstMeta;
diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c
index d65bd02..4812f31 100644
--- a/gst/gstminiobject.c
+++ b/gst/gstminiobject.c
@@ -135,7 +135,7 @@
 }
 
 /**
- * gst_mini_object_copy:
+ * gst_mini_object_copy: (skip)
  * @mini_object: the mini-object to copy
  *
  * Creates a copy of the mini-object.
@@ -193,11 +193,13 @@
       access_mode &= ~GST_LOCK_FLAG_EXCLUSIVE;
     }
 
-    if (access_mode) {
-      /* shared counter > 1 and write access is not allowed */
-      if (access_mode & GST_LOCK_FLAG_WRITE && IS_SHARED (state))
-        goto lock_failed;
+    /* shared counter > 1 and write access is not allowed */
+    if (((state & GST_LOCK_FLAG_WRITE) != 0
+            || (access_mode & GST_LOCK_FLAG_WRITE) != 0)
+        && IS_SHARED (newstate))
+      goto lock_failed;
 
+    if (access_mode) {
       if ((state & LOCK_FLAG_MASK) == 0) {
         /* nothing mapped, set access_mode */
         newstate |= access_mode;
@@ -297,7 +299,7 @@
 }
 
 /**
- * gst_mini_object_make_writable:
+ * gst_mini_object_make_writable: (skip)
  * @mini_object: (transfer full): the mini-object to make writable
  *
  * Checks if a mini-object is writable.  If not, a writable copy is made and
@@ -329,7 +331,7 @@
 }
 
 /**
- * gst_mini_object_ref:
+ * gst_mini_object_ref: (skip)
  * @mini_object: the mini-object
  *
  * Increase the reference count of the mini-object.
@@ -421,7 +423,7 @@
 }
 
 /**
- * gst_mini_object_unref:
+ * gst_mini_object_unref: (skip)
  * @mini_object: the mini-object
  *
  * Decreases the reference count of the mini-object, possibly freeing
@@ -514,7 +516,7 @@
 }
 
 /**
- * gst_mini_object_steal:
+ * gst_mini_object_steal: (skip)
  * @olddata: (inout) (transfer full): pointer to a pointer to a mini-object to
  *     be stolen
  *
diff --git a/gst/gstminiobject.h b/gst/gstminiobject.h
index bd56553..15556fb 100644
--- a/gst/gstminiobject.h
+++ b/gst/gstminiobject.h
@@ -185,7 +185,7 @@
 #define GST_MINI_OBJECT_REFCOUNT_VALUE(obj)     (g_atomic_int_get (&(GST_MINI_OBJECT_CAST(obj))->refcount))
 
 /**
- * GstMiniObject:
+ * GstMiniObject: (ref-func gst_mini_object_ref) (unref-func gst_mini_object_unref) (set-value-func g_value_set_boxed) (get-value-func g_value_get_boxed)
  * @type: the GType of the object
  * @refcount: atomic refcount
  * @lockstate: atomic state of the locks
@@ -195,10 +195,6 @@
  * @free: the free function
  *
  * Base class for refcounted lightweight objects.
- * Ref Func: gst_mini_object_ref
- * Unref Func: gst_mini_object_unref
- * Set Value Func: g_value_set_boxed
- * Get Value Func: g_value_get_boxed
  */
 struct _GstMiniObject {
   GType   type;
diff --git a/gst/gstobject.c b/gst/gstobject.c
index 5691bec..1f58c8d 100644
--- a/gst/gstobject.c
+++ b/gst/gstobject.c
@@ -779,7 +779,35 @@
 }
 
 /**
- * gst_object_has_ancestor:
+ * gst_object_has_as_parent:
+ * @object: a #GstObject to check
+ * @parent: a #GstObject to check as parent
+ *
+ * Check if @parent is the parent of @object.
+ * E.g. a #GstElement can check if it owns a given #GstPad.
+ *
+ * Returns: %FALSE if either @object or @parent is %NULL. %TRUE if @parent is
+ *          the parent of @object. Otherwise %FALSE.
+ *
+ * MT safe. Grabs and releases @object's locks.
+ * Since: 1.6
+ */
+gboolean
+gst_object_has_as_parent (GstObject * object, GstObject * parent)
+{
+  gboolean result = FALSE;
+
+  if (G_LIKELY (GST_IS_OBJECT (object) && GST_IS_OBJECT (parent))) {
+    GST_OBJECT_LOCK (object);
+    result = GST_OBJECT_PARENT (object) == parent;
+    GST_OBJECT_UNLOCK (object);
+  }
+
+  return result;
+}
+
+/**
+ * gst_object_has_as_ancestor:
  * @object: a #GstObject to check
  * @ancestor: a #GstObject to check as ancestor
  *
@@ -791,7 +819,7 @@
  * MT safe. Grabs and releases @object's locks.
  */
 gboolean
-gst_object_has_ancestor (GstObject * object, GstObject * ancestor)
+gst_object_has_as_ancestor (GstObject * object, GstObject * ancestor)
 {
   GstObject *parent, *tmp;
 
@@ -814,6 +842,32 @@
 }
 
 /**
+ * gst_object_has_ancestor:
+ * @object: a #GstObject to check
+ * @ancestor: a #GstObject to check as ancestor
+ *
+ * Check if @object has an ancestor @ancestor somewhere up in
+ * the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline.
+ *
+ * Returns: %TRUE if @ancestor is an ancestor of @object.
+ *
+ * Deprecated: Use gst_object_has_as_ancestor() instead.
+ *
+ * MT safe. Grabs and releases @object's locks.
+ */
+/* FIXME 2.0: remove */
+#ifndef GST_REMOVE_DEPRECATED
+#ifdef GST_DISABLE_DEPRECATED
+gboolean gst_object_has_ancestor (GstObject * object, GstObject * ancestor);
+#endif
+gboolean
+gst_object_has_ancestor (GstObject * object, GstObject * ancestor)
+{
+  return gst_object_has_as_ancestor (object, ancestor);
+}
+#endif
+
+/**
  * gst_object_check_uniqueness:
  * @list: (transfer none) (element-type Gst.Object): a list of #GstObject to
  *      check through
diff --git a/gst/gstobject.h b/gst/gstobject.h
index 86c5715..b478f3b 100644
--- a/gst/gstobject.h
+++ b/gst/gstobject.h
@@ -212,7 +212,11 @@
 gboolean	gst_object_set_parent		(GstObject *object, GstObject *parent);
 GstObject*	gst_object_get_parent		(GstObject *object);
 void		gst_object_unparent		(GstObject *object);
+gboolean	gst_object_has_as_parent		(GstObject *object, GstObject *parent);
+gboolean	gst_object_has_as_ancestor	(GstObject *object, GstObject *ancestor);
+#ifndef GST_DISABLE_DEPRECATED
 gboolean	gst_object_has_ancestor		(GstObject *object, GstObject *ancestor);
+#endif
 
 void            gst_object_default_deep_notify  (GObject *object, GstObject *orig,
                                                  GParamSpec *pspec, gchar **excluded_props);
diff --git a/gst/gstpad.c b/gst/gstpad.c
index a2c7e12..183fc91 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -115,7 +115,8 @@
   PAD_PROP_CAPS,
   PAD_PROP_DIRECTION,
   PAD_PROP_TEMPLATE,
-  /* FILL ME */
+  PAD_PROP_OFFSET
+      /* FILL ME */
 };
 
 #define GST_PAD_GET_PRIVATE(obj)  \
@@ -139,6 +140,11 @@
   gint using;
   guint probe_list_cookie;
   guint probe_cookie;
+
+  /* counter of how many idle probes are running directly from the add_probe
+   * call. Used to block any data flowing in the pad while the idle callback
+   * Doesn't finish its work */
+  gint idle_running;
 };
 
 typedef struct
@@ -148,6 +154,8 @@
 } GstProbe;
 
 #define PROBE_COOKIE(h) (((GstProbe *)(h))->cookie)
+#define GST_PAD_IS_RUNNING_IDLE_PROBE(p) \
+    (((GstPad *)(p))->priv->idle_running > 0)
 
 typedef struct
 {
@@ -155,6 +163,7 @@
   GstPadProbeInfo *info;
   gboolean dropped;
   gboolean pass;
+  gboolean handled;
   gboolean marshalled;
   guint cookie;
 } ProbeMarshall;
@@ -355,6 +364,18 @@
           "The GstPadTemplate of this pad", GST_TYPE_PAD_TEMPLATE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  /**
+   * GstPad:offset:
+   *
+   * The offset that will be applied to the running time of the pad.
+   *
+   * Since: 1.6
+   */
+  g_object_class_install_property (gobject_class, PAD_PROP_OFFSET,
+      g_param_spec_int64 ("offset", "Offset",
+          "The running time offset of the pad", 0, G_MAXINT64, 0,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   gstobject_class->path_string_separator = ".";
 
   /* Register common function pointer descriptions */
@@ -450,6 +471,8 @@
       if (idx == 0)
         goto found;
       idx--;
+    } else if (GST_EVENT_TYPE (ev->event) > type) {
+      break;
     }
   }
   ev = NULL;
@@ -472,6 +495,8 @@
     ev = &g_array_index (events, PadEvent, i);
     if (event == ev->event)
       goto found;
+    else if (GST_EVENT_TYPE (ev->event) > GST_EVENT_TYPE (event))
+      break;
   }
   ev = NULL;
 found:
@@ -495,7 +520,9 @@
     if (ev->event == NULL)
       goto next;
 
-    if (GST_EVENT_TYPE (ev->event) != type)
+    if (GST_EVENT_TYPE (ev->event) > type)
+      break;
+    else if (GST_EVENT_TYPE (ev->event) != type)
       goto next;
 
     gst_event_unref (ev->event);
@@ -606,39 +633,46 @@
 
 /* should be called with LOCK */
 static GstEvent *
-apply_pad_offset (GstPad * pad, GstEvent * event, gboolean upstream)
+_apply_pad_offset (GstPad * pad, GstEvent * event, gboolean upstream)
 {
-  /* check if we need to adjust the segment */
-  if (pad->offset != 0) {
-    gint64 offset;
+  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_TIME_FORMAT,
+      GST_TIME_ARGS (pad->offset));
 
-    if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
-      GstSegment segment;
+  if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
+    GstSegment segment;
 
-      g_assert (!upstream);
+    g_assert (!upstream);
 
-      /* copy segment values */
-      gst_event_copy_segment (event, &segment);
-      gst_event_unref (event);
+    /* copy segment values */
+    gst_event_copy_segment (event, &segment);
+    gst_event_unref (event);
 
-      gst_segment_offset_running_time (&segment, segment.format, pad->offset);
-      event = gst_event_new_segment (&segment);
-    }
-
-    event = gst_event_make_writable (event);
-    offset = gst_event_get_running_time_offset (event);
-    if (upstream)
-      offset -= pad->offset;
-    else
-      offset += pad->offset;
-    gst_event_set_running_time_offset (event, offset);
+    gst_segment_offset_running_time (&segment, segment.format, pad->offset);
+    event = gst_event_new_segment (&segment);
   }
+
+  event = gst_event_make_writable (event);
+  offset = gst_event_get_running_time_offset (event);
+  if (upstream)
+    offset -= pad->offset;
+  else
+    offset += pad->offset;
+  gst_event_set_running_time_offset (event, offset);
+
   return event;
 }
 
+static inline GstEvent *
+apply_pad_offset (GstPad * pad, GstEvent * event, gboolean upstream)
+{
+  if (G_UNLIKELY (pad->offset != 0))
+    return _apply_pad_offset (pad, event, upstream);
+  return event;
+}
+
+
 /* should be called with the OBJECT_LOCK */
 static GstCaps *
 get_pad_caps (GstPad * pad)
@@ -740,6 +774,9 @@
       gst_pad_set_pad_template (GST_PAD_CAST (object),
           (GstPadTemplate *) g_value_get_object (value));
       break;
+    case PAD_PROP_OFFSET:
+      gst_pad_set_offset (GST_PAD_CAST (object), g_value_get_int64 (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -764,6 +801,9 @@
     case PAD_PROP_TEMPLATE:
       g_value_set_object (value, GST_PAD_PAD_TEMPLATE (object));
       break;
+    case PAD_PROP_OFFSET:
+      g_value_set_int64 (value, gst_pad_get_offset (GST_PAD_CAST (object)));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -795,7 +835,7 @@
 /**
  * gst_pad_new_from_template:
  * @templ: the pad template to use
- * @name: (allow-none): the name of the element
+ * @name: (allow-none): the name of the pad
  *
  * Creates a new pad with the given name from the given template.
  * If name is %NULL, a guaranteed unique name (across all pads)
@@ -817,7 +857,7 @@
 /**
  * gst_pad_new_from_static_template:
  * @templ: the #GstStaticPadTemplate to use
- * @name: the name of the element
+ * @name: the name of the pad
  *
  * Creates a new pad with the given name from the given static template.
  * If name is %NULL, a guaranteed unique name (across all pads)
@@ -1285,7 +1325,7 @@
  *
  * Returns: an id or 0 if no probe is pending. The id can be used to remove the
  * probe with gst_pad_remove_probe(). When using GST_PAD_PROBE_TYPE_IDLE it can
- * happend that the probe can be run immediately and if the probe returns
+ * happen that the probe can be run immediately and if the probe returns
  * GST_PAD_PROBE_REMOVE this functions returns 0.
  *
  * MT safe.
@@ -1361,6 +1401,7 @@
 
       /* Keep another ref, the callback could destroy the pad */
       gst_object_ref (pad);
+      pad->priv->idle_running++;
 
       /* the pad is idle now, we can signal the idle callback now */
       GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
@@ -1386,10 +1427,17 @@
         case GST_PAD_PROBE_OK:
           GST_DEBUG_OBJECT (pad, "probe returned OK");
           break;
+        case GST_PAD_PROBE_HANDLED:
+          GST_DEBUG_OBJECT (pad, "probe handled the data");
+          break;
         default:
           GST_DEBUG_OBJECT (pad, "probe returned %d", ret);
           break;
       }
+      pad->priv->idle_running--;
+      if (pad->priv->idle_running == 0) {
+        GST_PAD_BLOCK_BROADCAST (pad);
+      }
       GST_OBJECT_UNLOCK (pad);
 
       gst_object_unref (pad);
@@ -2329,8 +2377,12 @@
   /* prepare will also lock the two pads */
   result = gst_pad_link_prepare (srcpad, sinkpad, flags);
 
-  if (G_UNLIKELY (result != GST_PAD_LINK_OK))
+  if (G_UNLIKELY (result != GST_PAD_LINK_OK)) {
+    GST_CAT_INFO (GST_CAT_PADS, "link between %s:%s and %s:%s failed: %s",
+        GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad),
+        gst_pad_link_get_name (result));
     goto done;
+  }
 
   /* must set peers before calling the link function */
   GST_PAD_PEER (srcpad) = sinkpad;
@@ -2603,24 +2655,26 @@
 gst_pad_get_allowed_caps (GstPad * pad)
 {
   GstCaps *mycaps;
-  GstCaps *caps;
-  GstPad *peer;
+  GstCaps *caps = NULL;
+  GstQuery *query;
 
   g_return_val_if_fail (GST_IS_PAD (pad), NULL);
 
   GST_OBJECT_LOCK (pad);
-  peer = GST_PAD_PEER (pad);
-  if (G_UNLIKELY (peer == NULL))
+  if (G_UNLIKELY (GST_PAD_PEER (pad) == NULL))
     goto no_peer;
+  GST_OBJECT_UNLOCK (pad);
 
   GST_CAT_DEBUG_OBJECT (GST_CAT_PROPERTIES, pad, "getting allowed caps");
 
-  gst_object_ref (peer);
-  GST_OBJECT_UNLOCK (pad);
   mycaps = gst_pad_query_caps (pad, NULL);
 
-  caps = gst_pad_query_caps (peer, mycaps);
-  gst_object_unref (peer);
+  /* Query peer caps */
+  query = gst_query_new_caps (mycaps);
+  gst_pad_peer_query (pad, query);
+  gst_query_parse_caps_result (query, &caps);
+  gst_caps_ref (caps);
+  gst_query_unref (query);
 
   gst_caps_unref (mycaps);
 
@@ -2744,7 +2798,7 @@
   {
     GST_DEBUG_OBJECT (pad, "no parent");
     GST_OBJECT_UNLOCK (pad);
-    return FALSE;
+    return NULL;
   }
 }
 
@@ -2858,7 +2912,7 @@
  * The EOS event will pause the task associated with @pad before it is forwarded
  * to all internally linked pads,
  *
- * The the event is sent to all pads internally linked to @pad. This function
+ * The event is sent to all pads internally linked to @pad. This function
  * takes ownership of @event.
  *
  * Returns: %TRUE if the event was sent successfully.
@@ -2928,7 +2982,10 @@
       "fallback ACCEPT_CAPS query, consider implementing a specialized version");
 
   gst_query_parse_accept_caps (query, &caps);
-  allowed = gst_pad_query_caps (pad, caps);
+  if (GST_PAD_IS_ACCEPT_TEMPLATE (pad))
+    allowed = gst_pad_get_pad_template_caps (pad);
+  else
+    allowed = gst_pad_query_caps (pad, caps);
 
   if (allowed) {
     if (GST_PAD_IS_ACCEPT_INTERSECT (pad)) {
@@ -3024,6 +3081,123 @@
   return TRUE;
 }
 
+/* Default latency implementation */
+typedef struct
+{
+  gboolean live;
+  GstClockTime min, max;
+} LatencyFoldData;
+
+static gboolean
+query_latency_default_fold (const GValue * item, GValue * ret,
+    gpointer user_data)
+{
+  GstPad *pad = g_value_get_object (item), *peer;
+  LatencyFoldData *fold_data = user_data;
+  GstQuery *query;
+  gboolean res = FALSE;
+
+  query = gst_query_new_latency ();
+
+  peer = gst_pad_get_peer (pad);
+  if (peer) {
+    res = gst_pad_peer_query (pad, query);
+  } else {
+    GST_LOG_OBJECT (pad, "No peer pad found, ignoring this pad");
+  }
+
+  if (res) {
+    gboolean live;
+    GstClockTime min, max;
+
+    gst_query_parse_latency (query, &live, &min, &max);
+
+    GST_LOG_OBJECT (pad, "got latency live:%s min:%" G_GINT64_FORMAT
+        " max:%" G_GINT64_FORMAT, live ? "true" : "false", min, max);
+
+    if (live) {
+      if (min > fold_data->min)
+        fold_data->min = min;
+
+      if (fold_data->max == GST_CLOCK_TIME_NONE)
+        fold_data->max = max;
+      else if (max < fold_data->max)
+        fold_data->max = max;
+
+      fold_data->live = TRUE;
+    }
+  } else if (peer) {
+    GST_DEBUG_OBJECT (pad, "latency query failed");
+    g_value_set_boolean (ret, FALSE);
+  }
+
+  gst_query_unref (query);
+  if (peer)
+    gst_object_unref (peer);
+
+  return TRUE;
+}
+
+static gboolean
+gst_pad_query_latency_default (GstPad * pad, GstQuery * query)
+{
+  GstIterator *it;
+  GstIteratorResult res;
+  GValue ret = G_VALUE_INIT;
+  gboolean query_ret;
+  LatencyFoldData fold_data;
+
+  it = gst_pad_iterate_internal_links (pad);
+  if (!it) {
+    GST_DEBUG_OBJECT (pad, "Can't iterate internal links");
+    return FALSE;
+  }
+
+  g_value_init (&ret, G_TYPE_BOOLEAN);
+
+retry:
+  fold_data.live = FALSE;
+  fold_data.min = 0;
+  fold_data.max = GST_CLOCK_TIME_NONE;
+
+  g_value_set_boolean (&ret, TRUE);
+  res = gst_iterator_fold (it, query_latency_default_fold, &ret, &fold_data);
+  switch (res) {
+    case GST_ITERATOR_OK:
+      g_assert_not_reached ();
+      break;
+    case GST_ITERATOR_DONE:
+      break;
+    case GST_ITERATOR_ERROR:
+      g_value_set_boolean (&ret, FALSE);
+      break;
+    case GST_ITERATOR_RESYNC:
+      gst_iterator_resync (it);
+      goto retry;
+    default:
+      g_assert_not_reached ();
+      break;
+  }
+  gst_iterator_free (it);
+
+  query_ret = g_value_get_boolean (&ret);
+  if (query_ret) {
+    GST_LOG_OBJECT (pad, "got latency live:%s min:%" G_GINT64_FORMAT
+        " max:%" G_GINT64_FORMAT, fold_data.live ? "true" : "false",
+        fold_data.min, fold_data.max);
+
+    if (fold_data.min > fold_data.max) {
+      GST_ERROR_OBJECT (pad, "minimum latency bigger than maximum latency");
+    }
+
+    gst_query_set_latency (query, fold_data.live, fold_data.min, fold_data.max);
+  } else {
+    GST_LOG_OBJECT (pad, "latency query failed");
+  }
+
+  return query_ret;
+}
+
 typedef struct
 {
   GstQuery *query;
@@ -3079,10 +3253,13 @@
       ret = gst_pad_query_caps_default (pad, query);
       forward = FALSE;
       break;
+    case GST_QUERY_LATENCY:
+      ret = gst_pad_query_latency_default (pad, query);
+      forward = FALSE;
+      break;
     case GST_QUERY_POSITION:
     case GST_QUERY_SEEKING:
     case GST_QUERY_FORMATS:
-    case GST_QUERY_LATENCY:
     case GST_QUERY_JITTER:
     case GST_QUERY_RATE:
     case GST_QUERY_CONVERT:
@@ -3124,6 +3301,7 @@
   GstPadProbeType type, flags;
   GstPadProbeCallback callback;
   GstPadProbeReturn ret;
+  gpointer original_data;
 
   /* if we have called this callback, do nothing */
   if (PROBE_COOKIE (hook) == data->cookie) {
@@ -3137,6 +3315,7 @@
 
   flags = hook->flags >> G_HOOK_FLAG_USER_SHIFT;
   type = info->type;
+  original_data = info->data;
 
   /* one of the data types for non-idle probes */
   if ((type & GST_PAD_PROBE_TYPE_IDLE) == 0
@@ -3175,6 +3354,12 @@
 
   GST_OBJECT_LOCK (pad);
 
+  if (original_data != NULL && info->data == NULL) {
+    GST_DEBUG_OBJECT (pad, "data item in pad probe info was dropped");
+    info->type = GST_PAD_PROBE_TYPE_INVALID;
+    data->dropped = TRUE;
+  }
+
   switch (ret) {
     case GST_PAD_PROBE_REMOVE:
       /* remove the probe */
@@ -3188,6 +3373,10 @@
       info->type = GST_PAD_PROBE_TYPE_INVALID;
       data->dropped = TRUE;
       break;
+    case GST_PAD_PROBE_HANDLED:
+      GST_DEBUG_OBJECT (pad, "probe handled data");
+      data->handled = TRUE;
+      break;
     case GST_PAD_PROBE_PASS:
       /* inform the pad block to let things pass */
       GST_DEBUG_OBJECT (pad, "asked to pass item");
@@ -3215,32 +3404,74 @@
 #define PROBE_NO_DATA(pad,mask,label,defaultval)                \
   G_STMT_START {						\
     if (G_UNLIKELY (pad->num_probes)) {				\
+      GstFlowReturn pval = defaultval;				\
       /* pass NULL as the data item */                          \
-      GstPadProbeInfo info = { mask, 0, NULL, 0, 0 };           \
+      GstPadProbeInfo info = { mask, 0, NULL, 0, 0 };		\
+      info.ABI.abi.flow_ret = defaultval;			\
       ret = do_probe_callbacks (pad, &info, defaultval);	\
-      if (G_UNLIKELY (ret != defaultval && ret != GST_FLOW_OK))	\
+      if (G_UNLIKELY (ret != pval && ret != GST_FLOW_OK))	\
         goto label;						\
     }								\
   } G_STMT_END
 
-#define PROBE_FULL(pad,mask,data,offs,size,label)               \
-  G_STMT_START {						\
-    if (G_UNLIKELY (pad->num_probes)) {				\
-      /* pass the data item */                                  \
-      GstPadProbeInfo info = { mask, 0, data, offs, size };     \
-      ret = do_probe_callbacks (pad, &info, GST_FLOW_OK);	\
-      /* store the possibly updated data item */                \
-      data = GST_PAD_PROBE_INFO_DATA (&info);                   \
-      /* if something went wrong, exit */                       \
-      if (G_UNLIKELY (ret != GST_FLOW_OK))	                \
-        goto label;						\
-    }								\
+#define PROBE_FULL(pad,mask,data,offs,size,label,handleable,handle_label) \
+  G_STMT_START {							\
+    if (G_UNLIKELY (pad->num_probes)) {					\
+      /* pass the data item */						\
+      GstPadProbeInfo info = { mask, 0, data, offs, size };		\
+      info.ABI.abi.flow_ret = GST_FLOW_OK;				\
+      ret = do_probe_callbacks (pad, &info, GST_FLOW_OK);		\
+      /* store the possibly updated data item */			\
+      data = GST_PAD_PROBE_INFO_DATA (&info);				\
+      /* if something went wrong, exit */				\
+      if (G_UNLIKELY (ret != GST_FLOW_OK)) {				\
+	if (handleable && ret == GST_FLOW_CUSTOM_SUCCESS_1) {		\
+	  ret = info.ABI.abi.flow_ret;						\
+	  goto handle_label;						\
+	}								\
+	goto label;							\
+      }									\
+    }									\
   } G_STMT_END
 
-#define PROBE_PUSH(pad,mask,data,label)		                 \
-  PROBE_FULL(pad, mask, data, -1, -1, label);
-#define PROBE_PULL(pad,mask,data,offs,size,label)		 \
-  PROBE_FULL(pad, mask, data, offs, size, label);
+#define PROBE_PUSH(pad,mask,data,label)		\
+  PROBE_FULL(pad, mask, data, -1, -1, label, FALSE, label);
+#define PROBE_HANDLE(pad,mask,data,label,handle_label)	\
+  PROBE_FULL(pad, mask, data, -1, -1, label, TRUE, handle_label);
+#define PROBE_PULL(pad,mask,data,offs,size,label)		\
+  PROBE_FULL(pad, mask, data, offs, size, label, FALSE, label);
+
+static GstFlowReturn
+do_pad_idle_probe_wait (GstPad * pad)
+{
+  while (GST_PAD_IS_RUNNING_IDLE_PROBE (pad)) {
+    GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
+        "waiting idle probe to be removed");
+    GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_BLOCKING);
+    GST_PAD_BLOCK_WAIT (pad);
+    GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_BLOCKING);
+    GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad, "We got unblocked");
+
+    if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
+      return GST_FLOW_FLUSHING;
+  }
+  return GST_FLOW_OK;
+}
+
+#define PROBE_TYPE_IS_SERIALIZED(i) \
+    ( \
+      ( \
+        (((i)->type & (GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | \
+        GST_PAD_PROBE_TYPE_EVENT_FLUSH)) && \
+        GST_EVENT_IS_SERIALIZED ((i)->data)) \
+      ) || ( \
+        (((i)->type & GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM) && \
+        GST_QUERY_IS_SERIALIZED ((i)->data)) \
+      ) || ( \
+        ((i)->type & (GST_PAD_PROBE_TYPE_BUFFER | \
+        GST_PAD_PROBE_TYPE_BUFFER_LIST))  \
+      ) \
+    )
 
 static GstFlowReturn
 do_probe_callbacks (GstPad * pad, GstPadProbeInfo * info,
@@ -3253,6 +3484,7 @@
   data.pad = pad;
   data.info = info;
   data.pass = FALSE;
+  data.handled = FALSE;
   data.marshalled = FALSE;
   data.dropped = FALSE;
   data.cookie = ++pad->priv->probe_cookie;
@@ -3260,6 +3492,11 @@
   is_block =
       (info->type & GST_PAD_PROBE_TYPE_BLOCK) == GST_PAD_PROBE_TYPE_BLOCK;
 
+  if (is_block && PROBE_TYPE_IS_SERIALIZED (info)) {
+    if (do_pad_idle_probe_wait (pad) == GST_FLOW_FLUSHING)
+      goto flushing;
+  }
+
 again:
   GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
       "do probes cookie %u", data.cookie);
@@ -3280,6 +3517,11 @@
   if (data.dropped)
     goto dropped;
 
+  /* If one handler took care of it, let the the item pass */
+  if (data.handled) {
+    goto handled;
+  }
+
   /* if no handler matched and we are blocking, let the item pass */
   if (!data.marshalled && is_block)
     goto passed;
@@ -3341,6 +3583,11 @@
     GST_DEBUG_OBJECT (pad, "data is passed");
     return GST_FLOW_OK;
   }
+handled:
+  {
+    GST_DEBUG_OBJECT (pad, "data was handled");
+    return GST_FLOW_CUSTOM_SUCCESS_1;
+  }
 }
 
 /* pad offsets */
@@ -3642,9 +3889,12 @@
     if (G_UNLIKELY (serialized))
       GST_PAD_STREAM_UNLOCK (pad);
 
-    /* if a probe dropped, we don't sent it further but assume that the probe
-     * did not answer the query and return FALSE */
-    res = FALSE;
+    /* if a probe dropped without handling, we don't sent it further but assume
+     * that the probe did not answer the query and return FALSE */
+    if (ret != GST_FLOW_CUSTOM_SUCCESS_1)
+      res = FALSE;
+    else
+      res = TRUE;
 
     return res;
   }
@@ -3756,9 +4006,12 @@
     GST_DEBUG_OBJECT (pad, "probe stopped: %s", gst_flow_get_name (ret));
     GST_OBJECT_UNLOCK (pad);
 
-    /* if a probe dropped, we don't sent it further but assume that the probe
-     * did not answer the query and return FALSE */
-    res = FALSE;
+    /* if a probe dropped without handling, we don't sent it further but
+     * assume that the probe did not answer the query and return FALSE */
+    if (ret != GST_FLOW_CUSTOM_SUCCESS_1)
+      res = FALSE;
+    else
+      res = TRUE;
 
     return res;
   }
@@ -3776,6 +4029,7 @@
 {
   GstFlowReturn ret;
   GstObject *parent;
+  gboolean handled = FALSE;
 
   GST_PAD_STREAM_LOCK (pad);
 
@@ -3805,11 +4059,12 @@
   }
 #endif
 
-  PROBE_PUSH (pad, type | GST_PAD_PROBE_TYPE_BLOCK, data, probe_stopped);
+  PROBE_HANDLE (pad, type | GST_PAD_PROBE_TYPE_BLOCK, data, probe_stopped,
+      probe_handled);
 
-  PROBE_PUSH (pad, type, data, probe_stopped);
+  PROBE_HANDLE (pad, type, data, probe_stopped, probe_handled);
 
-  parent = GST_OBJECT_PARENT (pad);
+  ACQUIRE_PARENT (pad, parent, no_parent);
   GST_OBJECT_UNLOCK (pad);
 
   /* NOTE: we read the chainfunc unlocked.
@@ -3823,13 +4078,13 @@
     if (G_UNLIKELY ((chainfunc = GST_PAD_CHAINFUNC (pad)) == NULL))
       goto no_function;
 
-    GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
+    GST_CAT_DEBUG_OBJECT (GST_CAT_SCHEDULING, pad,
         "calling chainfunction &%s with buffer %" GST_PTR_FORMAT,
         GST_DEBUG_FUNCPTR_NAME (chainfunc), GST_BUFFER (data));
 
     ret = chainfunc (pad, parent, GST_BUFFER_CAST (data));
 
-    GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
+    GST_CAT_DEBUG_OBJECT (GST_CAT_SCHEDULING, pad,
         "called chainfunction &%s with buffer %p, returned %s",
         GST_DEBUG_FUNCPTR_NAME (chainfunc), data, gst_flow_get_name (ret));
   } else {
@@ -3838,17 +4093,19 @@
     if (G_UNLIKELY ((chainlistfunc = GST_PAD_CHAINLISTFUNC (pad)) == NULL))
       goto no_function;
 
-    GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
+    GST_CAT_DEBUG_OBJECT (GST_CAT_SCHEDULING, pad,
         "calling chainlistfunction &%s",
         GST_DEBUG_FUNCPTR_NAME (chainlistfunc));
 
     ret = chainlistfunc (pad, parent, GST_BUFFER_LIST_CAST (data));
 
-    GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
+    GST_CAT_DEBUG_OBJECT (GST_CAT_SCHEDULING, pad,
         "called chainlistfunction &%s, returned %s",
         GST_DEBUG_FUNCPTR_NAME (chainlistfunc), gst_flow_get_name (ret));
   }
 
+  RELEASE_PARENT (parent);
+
   GST_PAD_STREAM_UNLOCK (pad);
 
   return ret;
@@ -3880,15 +4137,21 @@
     gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
     return GST_FLOW_ERROR;
   }
+probe_handled:
+  handled = TRUE;
+  /* PASSTHROUGH */
 probe_stopped:
   {
     GST_OBJECT_UNLOCK (pad);
     GST_PAD_STREAM_UNLOCK (pad);
-    gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
+    /* We unref the buffer, except if the probe handled it (CUSTOM_SUCCESS_1) */
+    if (!handled)
+      gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
 
     switch (ret) {
       case GST_FLOW_CUSTOM_SUCCESS:
-        GST_DEBUG_OBJECT (pad, "dropped buffer");
+      case GST_FLOW_CUSTOM_SUCCESS_1:
+        GST_DEBUG_OBJECT (pad, "dropped or handled buffer");
         ret = GST_FLOW_OK;
         break;
       default:
@@ -3897,8 +4160,17 @@
     }
     return ret;
   }
+no_parent:
+  {
+    GST_DEBUG_OBJECT (pad, "No parent when chaining %" GST_PTR_FORMAT, data);
+    gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
+    GST_OBJECT_UNLOCK (pad);
+    GST_PAD_STREAM_UNLOCK (pad);
+    return GST_FLOW_FLUSHING;
+  }
 no_function:
   {
+    RELEASE_PARENT (parent);
     gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
     g_critical ("chain on pad %s:%s but it has no chainfunction",
         GST_DEBUG_PAD_NAME (pad));
@@ -3952,7 +4224,7 @@
   GstBuffer *buffer;
   GstFlowReturn ret;
 
-  GST_INFO_OBJECT (pad, "chaining each group in list as a merged buffer");
+  GST_INFO_OBJECT (pad, "chaining each buffer in list individually");
 
   len = gst_buffer_list_length (list);
 
@@ -4012,6 +4284,7 @@
 {
   GstPad *peer;
   GstFlowReturn ret;
+  gboolean handled = FALSE;
 
   GST_OBJECT_LOCK (pad);
   if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
@@ -4043,14 +4316,15 @@
     goto events_error;
 
   /* do block probes */
-  PROBE_PUSH (pad, type | GST_PAD_PROBE_TYPE_BLOCK, data, probe_stopped);
+  PROBE_HANDLE (pad, type | GST_PAD_PROBE_TYPE_BLOCK, data, probe_stopped,
+      probe_handled);
 
   /* recheck sticky events because the probe might have cause a relink */
   if (G_UNLIKELY ((ret = check_sticky (pad, NULL))) != GST_FLOW_OK)
     goto events_error;
 
   /* do post-blocking probes */
-  PROBE_PUSH (pad, type, data, probe_stopped);
+  PROBE_HANDLE (pad, type, data, probe_stopped, probe_handled);
 
   if (G_UNLIKELY ((peer = GST_PAD_PEER (pad)) == NULL))
     goto not_linked;
@@ -4061,6 +4335,7 @@
   GST_OBJECT_UNLOCK (pad);
 
   ret = gst_pad_chain_data_unchecked (peer, type, data);
+  data = NULL;
 
   gst_object_unref (peer);
 
@@ -4113,22 +4388,26 @@
     gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
     return ret;
   }
+probe_handled:
+  handled = TRUE;
+  /* PASSTHROUGH */
 probe_stopped:
   {
     GST_OBJECT_UNLOCK (pad);
-    pad->ABI.abi.last_flowret =
-        ret == GST_FLOW_CUSTOM_SUCCESS ? GST_FLOW_OK : ret;
-    gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
+    if (data != NULL && !handled)
+      gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
 
     switch (ret) {
       case GST_FLOW_CUSTOM_SUCCESS:
-        GST_DEBUG_OBJECT (pad, "dropped buffer");
+      case GST_FLOW_CUSTOM_SUCCESS_1:
+        GST_DEBUG_OBJECT (pad, "dropped or handled buffer");
         ret = GST_FLOW_OK;
         break;
       default:
         GST_DEBUG_OBJECT (pad, "an error occurred %s", gst_flow_get_name (ret));
         break;
     }
+    pad->ABI.abi.last_flowret = ret;
     return ret;
   }
 not_linked:
@@ -4413,8 +4692,8 @@
   g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
   g_return_val_if_fail (GST_PAD_IS_SRC (pad), GST_FLOW_ERROR);
   g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
-  g_return_val_if_fail (*buffer == NULL
-      || GST_IS_BUFFER (*buffer), GST_FLOW_ERROR);
+  g_return_val_if_fail (*buffer == NULL || (GST_IS_BUFFER (*buffer)
+          && gst_buffer_get_size (*buffer) >= size), GST_FLOW_ERROR);
 
   return gst_pad_get_range_unchecked (pad, offset, size, buffer);
 }
@@ -4468,8 +4747,8 @@
   g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
   g_return_val_if_fail (GST_PAD_IS_SINK (pad), GST_FLOW_ERROR);
   g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
-  g_return_val_if_fail (*buffer == NULL
-      || GST_IS_BUFFER (*buffer), GST_FLOW_ERROR);
+  g_return_val_if_fail (*buffer == NULL || (GST_IS_BUFFER (*buffer)
+          && gst_buffer_get_size (*buffer) >= size), GST_FLOW_ERROR);
 
   GST_OBJECT_LOCK (pad);
   if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
@@ -4614,6 +4893,14 @@
                   || type == GST_EVENT_EOS))))
     goto flushed;
 
+  /* 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");
+    remove_event_by_type (pad, GST_EVENT_EOS);
+    GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
+  }
+
   if (G_UNLIKELY (GST_PAD_IS_EOS (pad)))
     goto eos;
 
@@ -4768,6 +5055,9 @@
       type |= GST_PAD_PROBE_TYPE_EVENT_FLUSH;
       break;
     case GST_EVENT_FLUSH_STOP:
+      if (G_UNLIKELY (!GST_PAD_IS_ACTIVE (pad)))
+        goto inactive;
+
       GST_PAD_UNSET_FLUSHING (pad);
 
       /* Remove sticky EOS events */
@@ -4835,7 +5125,7 @@
   /* Note: we gave away ownership of the event at this point but we can still
    * print the old pointer */
   GST_LOG_OBJECT (pad,
-      "sent event %p to (%s) peerpad %" GST_PTR_FORMAT ", ret %s", event,
+      "sent event %p (%s) to peerpad %" GST_PTR_FORMAT ", ret %s", event,
       gst_event_type_get_name (event_type), peerpad, gst_flow_get_name (ret));
 
   gst_object_unref (peerpad);
@@ -4856,12 +5146,22 @@
     gst_event_unref (event);
     return GST_FLOW_FLUSHING;
   }
+inactive:
+  {
+    GST_DEBUG_OBJECT (pad, "flush-stop on inactive pad");
+    gst_event_unref (event);
+    return GST_FLOW_FLUSHING;
+  }
 probe_stopped:
   {
     GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_PENDING_EVENTS);
-    gst_event_unref (event);
+    if (ret != GST_FLOW_CUSTOM_SUCCESS_1)
+      gst_event_unref (event);
 
     switch (ret) {
+      case GST_FLOW_CUSTOM_SUCCESS_1:
+        GST_DEBUG_OBJECT (pad, "handled event");
+        break;
       case GST_FLOW_CUSTOM_SUCCESS:
         GST_DEBUG_OBJECT (pad, "dropped event");
         break;
@@ -4957,7 +5257,8 @@
     /* other events are pushed right away */
     ret = gst_pad_push_event_unchecked (pad, event, type);
     /* dropped events by a probe are not an error */
-    res = (ret == GST_FLOW_OK || ret == GST_FLOW_CUSTOM_SUCCESS);
+    res = (ret == GST_FLOW_OK || ret == GST_FLOW_CUSTOM_SUCCESS
+        || ret == GST_FLOW_CUSTOM_SUCCESS_1);
   } else {
     /* Errors in sticky event pushing are no problem and ignored here
      * as they will cause more meaningful errors during data flow.
@@ -5058,17 +5359,22 @@
           "have event type %d (FLUSH_START)", GST_EVENT_TYPE (event));
 
       /* can't even accept a flush begin event when flushing */
-      if (GST_PAD_IS_FLUSHING (pad))
+      if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
         goto flushing;
 
       GST_PAD_SET_FLUSHING (pad);
       GST_CAT_DEBUG_OBJECT (GST_CAT_EVENT, pad, "set flush flag");
       break;
     case GST_EVENT_FLUSH_STOP:
-      if (G_LIKELY (GST_PAD_MODE (pad) != GST_PAD_MODE_NONE)) {
-        GST_PAD_UNSET_FLUSHING (pad);
-        GST_CAT_DEBUG_OBJECT (GST_CAT_EVENT, pad, "cleared flush flag");
-      }
+      /* we can't accept flush-stop on inactive pads else the flushing flag
+       * would be cleared and it would look like the pad can accept data.
+       * Also, some elements restart a streaming thread in flush-stop which we
+       * can't allow on inactive pads */
+      if (G_UNLIKELY (!GST_PAD_IS_ACTIVE (pad)))
+        goto inactive;
+
+      GST_PAD_UNSET_FLUSHING (pad);
+      GST_CAT_DEBUG_OBJECT (GST_CAT_EVENT, pad, "cleared flush flag");
       /* Remove pending EOS events */
       GST_LOG_OBJECT (pad, "Removing pending EOS and SEGMENT events");
       remove_event_by_type (pad, GST_EVENT_EOS);
@@ -5094,6 +5400,17 @@
       if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
         goto flushing;
 
+      switch (event_type) {
+        case GST_EVENT_STREAM_START:
+          /* Remove sticky EOS events */
+          GST_LOG_OBJECT (pad, "Removing pending EOS events");
+          remove_event_by_type (pad, GST_EVENT_EOS);
+          GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
+          break;
+        default:
+          break;
+      }
+
       if (serialized) {
         if (G_UNLIKELY (GST_PAD_IS_EOS (pad)))
           goto eos;
@@ -5183,6 +5500,16 @@
     gst_event_unref (event);
     return GST_FLOW_FLUSHING;
   }
+inactive:
+  {
+    GST_OBJECT_UNLOCK (pad);
+    if (need_unlock)
+      GST_PAD_STREAM_UNLOCK (pad);
+    GST_CAT_INFO_OBJECT (GST_CAT_EVENT, pad,
+        "Received flush-stop on inactive pad. Discarding");
+    gst_event_unref (event);
+    return GST_FLOW_FLUSHING;
+  }
 eos:
   {
     GST_OBJECT_UNLOCK (pad);
@@ -5198,11 +5525,14 @@
     GST_OBJECT_UNLOCK (pad);
     if (need_unlock)
       GST_PAD_STREAM_UNLOCK (pad);
-    gst_event_unref (event);
+    /* Only unref if unhandled */
+    if (ret != GST_FLOW_CUSTOM_SUCCESS_1)
+      gst_event_unref (event);
 
     switch (ret) {
+      case GST_FLOW_CUSTOM_SUCCESS_1:
       case GST_FLOW_CUSTOM_SUCCESS:
-        GST_DEBUG_OBJECT (pad, "dropped event");
+        GST_DEBUG_OBJECT (pad, "dropped or handled event");
         ret = GST_FLOW_OK;
         break;
       default:
diff --git a/gst/gstpad.h b/gst/gstpad.h
index 2ac335c..157d147 100644
--- a/gst/gstpad.h
+++ b/gst/gstpad.h
@@ -61,6 +61,8 @@
   GST_PAD_MODE_PULL
 } GstPadMode;
 
+#include <glib.h>
+
 const gchar   * gst_pad_mode_get_name (GstPadMode mode);
 
 #include <gst/gstobject.h>
@@ -254,7 +256,7 @@
  * @parent: (allow-none): the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
  *          flag is set, @parent is guaranteed to be not-%NULL and remain valid
  *          during the execution of this function.
- * @buffer: the #GstBuffer that is chained, not %NULL.
+ * @buffer: (transfer full): the #GstBuffer that is chained, not %NULL.
  *
  * A function that will be called on sinkpads when chaining buffers.
  * The function typically processes the data contained in the buffer and
@@ -277,7 +279,7 @@
  * @parent: (allow-none): the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
  *          flag is set, @parent is guaranteed to be not-%NULL and remain valid
  *          during the execution of this function.
- * @list: the #GstBufferList that is chained, not %NULL.
+ * @list: (transfer full): the #GstBufferList that is chained, not %NULL.
  *
  * A function that will be called on sinkpads when chaining buffer lists.
  * The function typically processes the data contained in the buffer list and
@@ -351,7 +353,7 @@
  * @parent: (allow-none): the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
  *          flag is set, @parent is guaranteed to be not-%NULL and remain valid
  *          during the execution of this function.
- * @event: the #GstEvent to handle.
+ * @event: (transfer full): the #GstEvent to handle.
  *
  * Function signature to handle an event for the pad.
  *
@@ -500,14 +502,26 @@
 
 /**
  * GstPadProbeReturn:
- * @GST_PAD_PROBE_OK: normal probe return value
+ * @GST_PAD_PROBE_OK: normal probe return value. This leaves the probe in
+ *        place, and defers decisions about dropping or passing data to other
+ *        probes, if any. If there are no other probes, the default behaviour
+ *        for the probe type applies (block for blocking probes, and pass for
+ *        non-blocking probes).
  * @GST_PAD_PROBE_DROP: drop data in data probes. For push mode this means that
- *        the data item is not sent downstream. For pull mode, it means that the
- *        data item is not passed upstream. In both cases, this result code
- *        means that #GST_FLOW_OK or %TRUE is returned to the caller.
- * @GST_PAD_PROBE_REMOVE: remove probe
- * @GST_PAD_PROBE_PASS: pass the data item in the block probe and block on
- *                         the next item
+ *        the data item is not sent downstream. For pull mode, it means that
+ *        the data item is not passed upstream. In both cases, no more probes
+ *        are called and #GST_FLOW_OK or %TRUE is returned to the caller.
+ * @GST_PAD_PROBE_REMOVE: remove this probe.
+ * @GST_PAD_PROBE_PASS: pass the data item in the block probe and block on the
+ *        next item.
+ * @GST_PAD_PROBE_HANDLED: Data has been handled in the probe and will not be
+ *        forwarded further. For events and buffers this is the same behaviour as
+ *        @GST_PAD_PROBE_DROP (except that in this case you need to unref the buffer
+ *        or event yourself). For queries it will also return %TRUE to the caller.
+ *        The probe can also modify the #GstFlowReturn value by using the
+ *        #GST_PAD_PROBE_INFO_FLOW_RETURN() accessor.
+ *        Note that the resulting query must contain valid entries.
+ *        Since: 1.6
  *
  * Different return values for the #GstPadProbeCallback.
  */
@@ -517,6 +531,7 @@
   GST_PAD_PROBE_OK,
   GST_PAD_PROBE_REMOVE,
   GST_PAD_PROBE_PASS,
+  GST_PAD_PROBE_HANDLED
 } GstPadProbeReturn;
 
 
@@ -542,12 +557,18 @@
   guint size;
 
   /*< private >*/
-  gpointer _gst_reserved[GST_PADDING];
+  union {
+    gpointer _gst_reserved[GST_PADDING];
+    struct {
+      GstFlowReturn flow_ret;
+    } abi;
+  } ABI;
 };
 
 #define GST_PAD_PROBE_INFO_TYPE(d)         ((d)->type)
 #define GST_PAD_PROBE_INFO_ID(d)           ((d)->id)
 #define GST_PAD_PROBE_INFO_DATA(d)         ((d)->data)
+#define GST_PAD_PROBE_INFO_FLOW_RETURN(d)  ((d)->ABI.abi.flow_ret)
 
 #define GST_PAD_PROBE_INFO_BUFFER(d)       GST_BUFFER_CAST(GST_PAD_PROBE_INFO_DATA(d))
 #define GST_PAD_PROBE_INFO_BUFFER_LIST(d)  GST_BUFFER_LIST_CAST(GST_PAD_PROBE_INFO_DATA(d))
@@ -627,6 +648,10 @@
  *                      it the caps intersect the query-caps result instead
  *                      of checking for a subset. This is interesting for
  *                      parsers that can accept incompletely specified caps.
+ * @GST_PAD_FLAG_ACCEPT_TEMPLATE: the default accept-caps handler will use
+ *                      the template pad caps instead of query caps to
+ *                      compare with the accept caps. Use this in combination
+ *                      with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since 1.6)
  * @GST_PAD_FLAG_LAST: offset to define more flags
  *
  * Pad state flags
@@ -644,6 +669,7 @@
   GST_PAD_FLAG_PROXY_ALLOCATION = (GST_OBJECT_FLAG_LAST << 9),
   GST_PAD_FLAG_PROXY_SCHEDULING = (GST_OBJECT_FLAG_LAST << 10),
   GST_PAD_FLAG_ACCEPT_INTERSECT = (GST_OBJECT_FLAG_LAST << 11),
+  GST_PAD_FLAG_ACCEPT_TEMPLATE  = (GST_OBJECT_FLAG_LAST << 12),
   /* padding */
   GST_PAD_FLAG_LAST        = (GST_OBJECT_FLAG_LAST << 16)
 } GstPadFlags;
@@ -1113,6 +1139,38 @@
  */
 #define GST_PAD_UNSET_ACCEPT_INTERSECT(pad) (GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_ACCEPT_INTERSECT))
 /**
+ * GST_PAD_IS_ACCEPT_TEMPLATE:
+ * @pad: a #GstPad
+ *
+ * Check if the pad's accept caps operation will use the pad template caps.
+ * The default accept-caps will do a query caps to get the caps, which might
+ * be querying downstream causing unnecessary overhead. It is recommended to
+ * implement a proper accept-caps query handler or to use this flag to prevent
+ * recursive accept-caps handling.
+ *
+ * Since: 1.6
+ */
+#define GST_PAD_IS_ACCEPT_TEMPLATE(pad)    (GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_ACCEPT_TEMPLATE))
+/**
+ * GST_PAD_SET_ACCEPT_TEMPLATE:
+ * @pad: a #GstPad
+ *
+ * Set @pad to by default use the pad template caps to compare with
+ * the accept caps instead of using a caps query result.
+ *
+ * Since: 1.6
+ */
+#define GST_PAD_SET_ACCEPT_TEMPLATE(pad)   (GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_ACCEPT_TEMPLATE))
+/**
+ * GST_PAD_UNSET_ACCEPT_TEMPLATE:
+ * @pad: a #GstPad
+ *
+ * Unset accept template flag.
+ *
+ * Since: 1.6
+ */
+#define GST_PAD_UNSET_ACCEPT_TEMPLATE(pad) (GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_ACCEPT_TEMPLATE))
+/**
  * GST_PAD_GET_STREAM_LOCK:
  * @pad: a #GstPad
  *
diff --git a/gst/gstparse.c b/gst/gstparse.c
index dd22113..a85fcf0 100644
--- a/gst/gstparse.c
+++ b/gst/gstparse.c
@@ -27,7 +27,7 @@
  * @short_description: Get a pipeline from a text pipeline description
  *
  * These function allow to create a pipeline based on the syntax used in the
- * gst-launch utility (see man-page for syntax documentation).
+ * gst-launch-1.0 utility (see man-page for syntax documentation).
  *
  * Please note that these functions take several measures to create
  * somewhat dynamic pipelines. Due to that such pipelines are not always
diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c
index 21e0620..a258c34 100644
--- a/gst/gstpipeline.c
+++ b/gst/gstpipeline.c
@@ -94,12 +94,14 @@
 
 #define DEFAULT_DELAY           0
 #define DEFAULT_AUTO_FLUSH_BUS  TRUE
+#define DEFAULT_LATENCY         GST_CLOCK_TIME_NONE
 
 enum
 {
   PROP_0,
   PROP_DELAY,
-  PROP_AUTO_FLUSH_BUS
+  PROP_AUTO_FLUSH_BUS,
+  PROP_LATENCY
 };
 
 #define GST_PIPELINE_GET_PRIVATE(obj)  \
@@ -114,6 +116,8 @@
    * PLAYING*/
   GstClockTime last_start_time;
   gboolean update_clock;
+
+  GstClockTime latency;
 };
 
 
@@ -128,6 +132,7 @@
     GstStateChange transition);
 
 static void gst_pipeline_handle_message (GstBin * bin, GstMessage * message);
+static gboolean gst_pipeline_do_latency (GstBin * bin);
 
 /* static guint gst_pipeline_signals[LAST_SIGNAL] = { 0 }; */
 
@@ -178,6 +183,18 @@
           "from READY into NULL state", DEFAULT_AUTO_FLUSH_BUS,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  /**
+   * GstPipeline:latency:
+   *
+   * Latency to configure on the pipeline. See gst_pipeline_set_latency().
+   *
+   * Since: 1.6
+   **/
+  g_object_class_install_property (gobject_class, PROP_LATENCY,
+      g_param_spec_uint64 ("latency", "Latency",
+          "Latency to configure on the pipeline", 0, G_MAXUINT64,
+          DEFAULT_LATENCY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   gobject_class->dispose = gst_pipeline_dispose;
 
   gst_element_class_set_static_metadata (gstelement_class, "Pipeline object",
@@ -191,6 +208,7 @@
       GST_DEBUG_FUNCPTR (gst_pipeline_provide_clock_func);
   gstbin_class->handle_message =
       GST_DEBUG_FUNCPTR (gst_pipeline_handle_message);
+  gstbin_class->do_latency = GST_DEBUG_FUNCPTR (gst_pipeline_do_latency);
 }
 
 static void
@@ -203,6 +221,7 @@
   /* set default property values */
   pipeline->priv->auto_flush_bus = DEFAULT_AUTO_FLUSH_BUS;
   pipeline->delay = DEFAULT_DELAY;
+  pipeline->priv->latency = DEFAULT_LATENCY;
 
   /* create and set a default bus */
   bus = gst_bus_new ();
@@ -245,6 +264,9 @@
     case PROP_AUTO_FLUSH_BUS:
       gst_pipeline_set_auto_flush_bus (pipeline, g_value_get_boolean (value));
       break;
+    case PROP_LATENCY:
+      gst_pipeline_set_latency (pipeline, g_value_get_uint64 (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -264,6 +286,9 @@
     case PROP_AUTO_FLUSH_BUS:
       g_value_set_boolean (value, gst_pipeline_get_auto_flush_bus (pipeline));
       break;
+    case PROP_LATENCY:
+      g_value_set_uint64 (value, gst_pipeline_get_latency (pipeline));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -365,6 +390,9 @@
       GST_OBJECT_LOCK (element);
       pipeline->priv->update_clock = TRUE;
       GST_OBJECT_UNLOCK (element);
+
+      /* READY to PAUSED starts running_time from 0 */
+      reset_start_time (pipeline, 0);
       break;
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
     {
@@ -462,6 +490,8 @@
       break;
     }
     case GST_STATE_CHANGE_PAUSED_TO_READY:
+      reset_start_time (pipeline, 0);
+      break;
     case GST_STATE_CHANGE_READY_TO_NULL:
       break;
   }
@@ -472,11 +502,7 @@
     case GST_STATE_CHANGE_NULL_TO_READY:
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
-    {
-      /* READY to PAUSED starts running_time from 0 */
-      reset_start_time (pipeline, 0);
       break;
-    }
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
       break;
     case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
@@ -573,6 +599,75 @@
   GST_BIN_CLASS (parent_class)->handle_message (bin, message);
 }
 
+static gboolean
+gst_pipeline_do_latency (GstBin * bin)
+{
+  GstPipeline *pipeline = GST_PIPELINE (bin);
+  GstQuery *query;
+  GstClockTime latency;
+  GstClockTime min_latency, max_latency;
+  gboolean res;
+
+  GST_OBJECT_LOCK (pipeline);
+  latency = pipeline->priv->latency;
+  GST_OBJECT_UNLOCK (pipeline);
+
+  if (latency == GST_CLOCK_TIME_NONE)
+    return GST_BIN_CLASS (parent_class)->do_latency (bin);
+
+  GST_DEBUG_OBJECT (pipeline, "querying latency");
+
+  query = gst_query_new_latency ();
+  if ((res = gst_element_query (GST_ELEMENT_CAST (pipeline), query))) {
+    gboolean live;
+
+    gst_query_parse_latency (query, &live, &min_latency, &max_latency);
+
+    GST_DEBUG_OBJECT (pipeline,
+        "got min latency %" GST_TIME_FORMAT ", max latency %"
+        GST_TIME_FORMAT ", live %d", GST_TIME_ARGS (min_latency),
+        GST_TIME_ARGS (max_latency), live);
+
+    if (max_latency < min_latency) {
+      /* this is an impossible situation, some parts of the pipeline might not
+       * work correctly. We post a warning for now. */
+      GST_ELEMENT_WARNING (pipeline, CORE, CLOCK, (NULL),
+          ("Impossible to configure latency: max %" GST_TIME_FORMAT " < min %"
+              GST_TIME_FORMAT ". Add queues or other buffering elements.",
+              GST_TIME_ARGS (max_latency), GST_TIME_ARGS (min_latency)));
+    }
+
+    if (latency < min_latency) {
+      /* This is a problematic situation as we will most likely drop lots of
+       * data if we configure a too low latency */
+      GST_ELEMENT_WARNING (pipeline, CORE, CLOCK, (NULL),
+          ("Configured latency is lower than detected minimum latency: configured %"
+              GST_TIME_FORMAT " < min %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (latency), GST_TIME_ARGS (min_latency)));
+    }
+  } else {
+    /* this is not a real problem, we just don't configure any latency. */
+    GST_WARNING_OBJECT (pipeline, "failed to query latency");
+  }
+  gst_query_unref (query);
+
+
+  /* configure latency on elements */
+  res =
+      gst_element_send_event (GST_ELEMENT_CAST (pipeline),
+      gst_event_new_latency (latency));
+  if (res) {
+    GST_INFO_OBJECT (pipeline, "configured latency of %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (latency));
+  } else {
+    GST_WARNING_OBJECT (pipeline,
+        "did not really configure latency of %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (latency));
+  }
+
+  return res;
+}
+
 /**
  * gst_pipeline_get_bus:
  * @pipeline: a #GstPipeline
@@ -627,16 +722,40 @@
 }
 
 /**
- * gst_pipeline_get_clock:
+ * gst_pipeline_get_clock: (skip)
  * @pipeline: a #GstPipeline
  *
- * Gets the current clock used by @pipeline.
+ * Gets the current clock used by @pipeline. Users of object
+ * oriented languages should use gst_pipeline_get_pipeline_clock()
+ * to avoid confusion with gst_element_get_clock() which has a different behavior.
+ *
+ * Unlike gst_element_get_clock(), this function will always return a
+ * clock, even if the pipeline is not in the PLAYING state.
  *
  * Returns: (transfer full): a #GstClock, unref after usage.
  */
 GstClock *
 gst_pipeline_get_clock (GstPipeline * pipeline)
 {
+  return gst_pipeline_get_pipeline_clock (pipeline);
+}
+
+/**
+ * gst_pipeline_get_pipeline_clock:
+ * @pipeline: a #GstPipeline
+ *
+ * Gets the current clock used by @pipeline.
+ *
+ * Unlike gst_element_get_clock(), this function will always return a
+ * clock, even if the pipeline is not in the PLAYING state.
+ *
+ * Returns: (transfer full): a #GstClock, unref after usage.
+ *
+ * Since: 1.6
+ */
+GstClock *
+gst_pipeline_get_pipeline_clock (GstPipeline * pipeline)
+{
   g_return_val_if_fail (GST_IS_PIPELINE (pipeline), NULL);
 
   return gst_pipeline_provide_clock_func (GST_ELEMENT_CAST (pipeline));
@@ -676,7 +795,7 @@
 }
 
 /**
- * gst_pipeline_set_clock:
+ * gst_pipeline_set_clock: (skip)
  * @pipeline: a #GstPipeline
  * @clock: (transfer none): the clock to set
  *
@@ -837,3 +956,60 @@
 
   return res;
 }
+
+/**
+ * gst_pipeline_set_latency:
+ * @pipeline: a #GstPipeline
+ * @latency: latency to configure
+ *
+ * Sets the latency that should be configured on the pipeline. Setting
+ * GST_CLOCK_TIME_NONE will restore the default behaviour of using the minimum
+ * latency from the LATENCY query. Setting this is usually not required and
+ * the pipeline will figure out an appropriate latency automatically.
+ *
+ * Setting a too low latency, especially lower than the minimum latency from
+ * the LATENCY query, will most likely cause the pipeline to fail.
+ *
+ * Since: 1.6
+ */
+void
+gst_pipeline_set_latency (GstPipeline * pipeline, GstClockTime latency)
+{
+  gboolean changed;
+
+  g_return_if_fail (GST_IS_PIPELINE (pipeline));
+
+  GST_OBJECT_LOCK (pipeline);
+  changed = (pipeline->priv->latency != latency);
+  pipeline->priv->latency = latency;
+  GST_OBJECT_UNLOCK (pipeline);
+
+  if (changed)
+    gst_bin_recalculate_latency (GST_BIN_CAST (pipeline));
+}
+
+/**
+ * gst_pipeline_get_latency:
+ * @pipeline: a #GstPipeline
+ *
+ * Gets the latency that should be configured on the pipeline. See
+ * gst_pipeline_set_latency().
+ *
+ * Returns: Latency to configure on the pipeline or GST_CLOCK_TIME_NONE
+ *
+ * Since: 1.6
+ */
+
+GstClockTime
+gst_pipeline_get_latency (GstPipeline * pipeline)
+{
+  GstClockTime latency;
+
+  g_return_val_if_fail (GST_IS_PIPELINE (pipeline), GST_CLOCK_TIME_NONE);
+
+  GST_OBJECT_LOCK (pipeline);
+  latency = pipeline->priv->latency;
+  GST_OBJECT_UNLOCK (pipeline);
+
+  return latency;
+}
diff --git a/gst/gstpipeline.h b/gst/gstpipeline.h
index 0dae4c7..73fdeb4 100644
--- a/gst/gstpipeline.h
+++ b/gst/gstpipeline.h
@@ -96,11 +96,15 @@
 void            gst_pipeline_use_clock          (GstPipeline *pipeline, GstClock *clock);
 gboolean        gst_pipeline_set_clock          (GstPipeline *pipeline, GstClock *clock);
 GstClock*       gst_pipeline_get_clock          (GstPipeline *pipeline);
+GstClock*       gst_pipeline_get_pipeline_clock (GstPipeline *pipeline);
 void            gst_pipeline_auto_clock         (GstPipeline *pipeline);
 
 void            gst_pipeline_set_delay          (GstPipeline *pipeline, GstClockTime delay);
 GstClockTime    gst_pipeline_get_delay          (GstPipeline *pipeline);
 
+void            gst_pipeline_set_latency        (GstPipeline *pipeline, GstClockTime latency);
+GstClockTime    gst_pipeline_get_latency        (GstPipeline *pipeline);
+
 void            gst_pipeline_set_auto_flush_bus (GstPipeline *pipeline, gboolean auto_flush);
 gboolean        gst_pipeline_get_auto_flush_bus (GstPipeline *pipeline);
 
diff --git a/gst/gstplugin.c b/gst/gstplugin.c
index c9c286a..4b7a140 100644
--- a/gst/gstplugin.c
+++ b/gst/gstplugin.c
@@ -80,8 +80,7 @@
 
 /* list of valid licenses.
  * One of these must be specified or the plugin won't be loaded
- * Contact gstreamer-devel@lists.sourceforge.net if your license should be
- * added.
+ * Please file a bug to request any additional license be added.
  *
  * GPL: http://www.gnu.org/copyleft/gpl.html
  * LGPL: http://www.gnu.org/copyleft/lesser.html
@@ -480,16 +479,18 @@
 {
   if (!gst_plugin_check_version (desc->major_version, desc->minor_version)) {
     if (GST_CAT_DEFAULT)
-      GST_WARNING ("plugin \"%s\" has incompatible version, not loading",
-          GST_STR_NULL (plugin->filename));
+      GST_WARNING ("plugin \"%s\" has incompatible version "
+          "(plugin: %d.%d, gst: %d,%d), not loading",
+          GST_STR_NULL (plugin->filename), desc->major_version,
+          desc->minor_version, GST_VERSION_MAJOR, GST_VERSION_MINOR);
     return NULL;
   }
 
   if (!desc->license || !desc->description || !desc->source ||
       !desc->package || !desc->origin) {
     if (GST_CAT_DEFAULT)
-      GST_WARNING ("plugin \"%s\" has incorrect GstPluginDesc, not loading",
-          GST_STR_NULL (plugin->filename));
+      GST_WARNING ("plugin \"%s\" has missing detail in GstPluginDesc, not "
+          "loading", GST_STR_NULL (plugin->filename));
     return NULL;
   }
 
@@ -676,19 +677,27 @@
 GstPlugin *
 gst_plugin_load_file (const gchar * filename, GError ** error)
 {
+  return _priv_gst_plugin_load_file_for_registry (filename, NULL, error);
+}
+
+GstPlugin *
+_priv_gst_plugin_load_file_for_registry (const gchar * filename,
+    GstRegistry * registry, GError ** error)
+{
   GstPluginDesc *desc;
   GstPlugin *plugin;
   GModule *module;
   gboolean ret;
   gpointer ptr;
   GStatBuf file_status;
-  GstRegistry *registry;
   gboolean new_plugin = TRUE;
   GModuleFlags flags;
 
   g_return_val_if_fail (filename != NULL, NULL);
 
-  registry = gst_registry_get ();
+  if (registry == NULL)
+    registry = gst_registry_get ();
+
   g_mutex_lock (&gst_plugin_loading_mutex);
 
   plugin = gst_registry_lookup (registry, filename);
@@ -706,7 +715,7 @@
   GST_CAT_DEBUG (GST_CAT_PLUGIN_LOADING, "attempt to load plugin \"%s\"",
       filename);
 
-  if (g_module_supported () == FALSE) {
+  if (!g_module_supported ()) {
     GST_CAT_DEBUG (GST_CAT_PLUGIN_LOADING, "module loading not supported");
     g_set_error (error,
         GST_PLUGIN_ERROR,
@@ -834,7 +843,7 @@
 
   if (new_plugin) {
     gst_object_ref (plugin);
-    gst_registry_add_plugin (gst_registry_get (), plugin);
+    gst_registry_add_plugin (registry, plugin);
   }
 
   g_mutex_unlock (&gst_plugin_loading_mutex);
diff --git a/gst/gstplugin.h b/gst/gstplugin.h
index 6e49332..c76302f 100644
--- a/gst/gstplugin.h
+++ b/gst/gstplugin.h
@@ -149,7 +149,7 @@
  *     format (or rather, a subset thereof), or %NULL. Allowed are the
  *     following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with
  *     'T' a separator and 'Z' indicating UTC/Zulu time). This field
- *     should be set via the %GST_PACKAGE_RELEASE_DATETIME
+ *     should be set via the GST_PACKAGE_RELEASE_DATETIME
  *     preprocessor macro.
  *
  * A plugin should export a variable of this type called plugin_desc. The plugin
diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c
index 96d4994..dbd341d 100644
--- a/gst/gstpluginloader.c
+++ b/gst/gstpluginloader.c
@@ -480,12 +480,12 @@
     {
       gchar *basedir;
 
-      basedir = g_win32_get_package_installation_directory_of_module (_priv_gst_dll_handle);
-      helper_bin = g_build_filename (basedir,
-                                     "lib",
-                                     "gstreamer-" GST_API_VERSION,
-                                     "gst-plugin-scanner.exe",
-                                     NULL);
+      basedir =
+          g_win32_get_package_installation_directory_of_module
+          (_priv_gst_dll_handle);
+      helper_bin =
+          g_build_filename (basedir, "lib", "gstreamer-" GST_API_VERSION,
+          "gst-plugin-scanner.exe", NULL);
       g_free (basedir);
     }
 #else
@@ -544,7 +544,7 @@
 
     dup_fd = dup (0);           /* STDIN */
     if (dup_fd == -1) {
-      GST_ERROR ("Failed to start. Could no dup STDIN, errno %d", errno);
+      GST_ERROR ("Failed to start. Could not dup STDIN, errno %d", errno);
       res = FALSE;
       goto beach;
     }
@@ -553,7 +553,7 @@
 
     dup_fd = dup (1);           /* STDOUT */
     if (dup_fd == -1) {
-      GST_ERROR ("Failed to start. Could no dup STDOUT, errno %d", errno);
+      GST_ERROR ("Failed to start. Could not dup STDOUT, errno %d", errno);
       res = FALSE;
       goto beach;
     }
diff --git a/gst/gstpluginloader.h b/gst/gstpluginloader.h
index 53ac6fb..dfbac59 100644
--- a/gst/gstpluginloader.h
+++ b/gst/gstpluginloader.h
@@ -21,6 +21,9 @@
 #ifndef __GST_PLUGINLOADER_H__
 #define __GST_PLUGINLOADER_H__
 
+#include <glib.h>
+#include <gst/gstregistry.h>
+
 G_BEGIN_DECLS
 
 typedef struct _GstPluginLoader GstPluginLoader;
diff --git a/gst/gstpreset.c b/gst/gstpreset.c
index 27db9ec..1b42024 100644
--- a/gst/gstpreset.c
+++ b/gst/gstpreset.c
@@ -34,6 +34,9 @@
  * native preset format of those wrapped plugins.
  * One method that is useful to be overridden is gst_preset_get_property_names().
  * With that one can control which properties are saved and in which order.
+ * When implementing support for read-only presets, one should set the vmethods
+ * for gst_preset_save_preset() and gst_preset_delete_preset() to %NULL.
+ * Applications can use gst_preset_is_editable() to check for that.
  *
  * The default implementation supports presets located in a system directory, 
  * application specific directory and in the users home directory. When getting
@@ -101,8 +104,6 @@
 static GQuark preset_system_path_quark = 0;
 static GQuark preset_quark = 0;
 
-/*static GQuark property_list_quark = 0;*/
-
 /* the application can set a custom path that is checked in addition to standard
  * system and user dirs. This helps to develop new presets first local to the
  * application.
@@ -394,7 +395,7 @@
         if (presets)
           g_key_file_free (presets);
         presets = in_app;
-        version = version_system;
+        version = version_app;
       }
     }
     if (in_user) {
@@ -427,6 +428,12 @@
   return presets;
 }
 
+static gint
+compare_strings (gchar ** a, gchar ** b, gpointer user_data)
+{
+  return g_strcmp0 (*a, *b);
+}
+
 /* get a list of all supported preset names for an element */
 static gchar **
 gst_preset_default_get_preset_names (GstPreset * preset)
@@ -455,9 +462,15 @@
       groups[num_groups] = NULL;
     }
   }
+  if (!num_groups) {
+    GST_INFO_OBJECT (preset, "Empty preset file");
+    g_strfreev (groups);
+    return NULL;
+  }
+
   /* sort the array now */
   g_qsort_with_data (groups, num_groups, sizeof (gchar *),
-      (GCompareDataFunc) strcmp, NULL);
+      (GCompareDataFunc) compare_strings, NULL);
 
   return groups;
 
@@ -1150,6 +1163,24 @@
   return preset_app_dir;
 }
 
+/**
+ * gst_preset_is_editable:
+ * @preset: a #GObject that implements #GstPreset
+ *
+ * Check if one can add new presets, change existing ones and remove presets.
+ *
+ * Returns: %TRUE if presets are editable or %FALSE if they are static
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_preset_is_editable (GstPreset * preset)
+{
+  GstPresetInterface *iface = GST_PRESET_GET_INTERFACE (preset);
+
+  return iface->save_preset && iface->delete_preset;
+}
+
 /* class internals */
 
 static void
@@ -1186,8 +1217,6 @@
         g_quark_from_static_string ("GstPreset::system_path");
 
 #if 0
-    property_list_quark = g_quark_from_static_string ("GstPreset::properties");
-
     /* create interface properties, each element would need to override this
      *   g_object_class_override_property(gobject_class, PROP_PRESET_NAME, "preset-name");
      * and in _set_property() do
diff --git a/gst/gstpreset.h b/gst/gstpreset.h
index 8e3ea2a..178eccd 100644
--- a/gst/gstpreset.h
+++ b/gst/gstpreset.h
@@ -97,6 +97,7 @@
 gboolean     gst_preset_set_app_dir        (const gchar *app_dir);
 const gchar *gst_preset_get_app_dir        (void);
 
+gboolean     gst_preset_is_editable        (GstPreset *preset);
 G_END_DECLS
 
 #endif /* __GST_PRESET_H__ */
diff --git a/gst/gstprotection.c b/gst/gstprotection.c
new file mode 100644
index 0000000..87122c9
--- /dev/null
+++ b/gst/gstprotection.c
@@ -0,0 +1,230 @@
+/* GStreamer
+ * Copyright (C) <2013> YouView TV Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:gstprotection
+ * @short_description: Functions and classes to support encrypted streams.
+ *
+ * The GstProtectionMeta class enables the information needed to decrypt a
+ * #GstBuffer to be attached to that buffer.
+ *
+ * Typically, a demuxer element would attach GstProtectionMeta objects
+ * to the buffers that it pushes downstream. The demuxer would parse the
+ * protection information for a video/audio frame from its input data and use
+ * this information to populate the #GstStructure @info field,
+ * which is then encapsulated in a GstProtectionMeta object and attached to
+ * the corresponding output buffer using the gst_buffer_add_protection_meta()
+ * function. The information in this attached GstProtectionMeta would be
+ * used by a downstream decrypter element to recover the original unencrypted
+ * frame.
+ *
+ * Since: 1.6
+ */
+
+#include "gst_private.h"
+#include "glib-compat-private.h"
+
+#include "gstprotection.h"
+
+#define GST_CAT_DEFAULT GST_CAT_PROTECTION
+
+static gboolean gst_protection_meta_init (GstMeta * meta, gpointer params,
+    GstBuffer * buffer);
+
+static void gst_protection_meta_free (GstMeta * meta, GstBuffer * buffer);
+
+static const gchar *gst_protection_factory_check (GstElementFactory * fact,
+    const gchar ** system_identifiers);
+
+GType
+gst_protection_meta_api_get_type (void)
+{
+  static volatile GType type;
+  static const gchar *tags[] = { NULL };
+
+  if (g_once_init_enter (&type)) {
+    GType _type = gst_meta_api_type_register ("GstProtectionMetaAPI", tags);
+    g_once_init_leave (&type, _type);
+  }
+  return type;
+}
+
+static gboolean
+gst_protection_meta_init (GstMeta * meta, gpointer params, GstBuffer * buffer)
+{
+  GstProtectionMeta *protection_meta = (GstProtectionMeta *) meta;
+
+  protection_meta->info = NULL;
+
+  return TRUE;
+}
+
+static void
+gst_protection_meta_free (GstMeta * meta, GstBuffer * buffer)
+{
+  GstProtectionMeta *protection_meta = (GstProtectionMeta *) meta;
+
+  if (protection_meta->info)
+    gst_structure_free (protection_meta->info);
+}
+
+static gboolean
+gst_protection_meta_transform (GstBuffer * transbuf, GstMeta * meta,
+    GstBuffer * buffer, GQuark type, gpointer data)
+{
+  GstProtectionMeta *protection_meta = (GstProtectionMeta *) meta;
+
+  if (GST_META_TRANSFORM_IS_COPY (type)) {
+    GstMetaTransformCopy *copy = data;
+    if (!copy->region) {
+      /* only copy if the complete data is copied as well */
+      gst_buffer_add_protection_meta (transbuf,
+          gst_structure_copy (protection_meta->info));
+    } else {
+      return FALSE;
+    }
+  } else {
+    /* transform type not supported */
+    return FALSE;
+  }
+  return TRUE;
+}
+
+const GstMetaInfo *
+gst_protection_meta_get_info (void)
+{
+  static const GstMetaInfo *protection_meta_info = NULL;
+
+  if (g_once_init_enter (&protection_meta_info)) {
+    const GstMetaInfo *meta =
+        gst_meta_register (GST_PROTECTION_META_API_TYPE, "GstProtectionMeta",
+        sizeof (GstProtectionMeta), gst_protection_meta_init,
+        gst_protection_meta_free, gst_protection_meta_transform);
+
+    g_once_init_leave (&protection_meta_info, meta);
+  }
+  return protection_meta_info;
+}
+
+/**
+ * gst_buffer_add_protection_meta:
+ * @buffer: #GstBuffer holding an encrypted sample, to which protection
+ *     metadata should be added.
+ * @info: (transfer full): a #GstStructure holding cryptographic
+ *     information relating to the sample contained in @buffer. This
+ *     function takes ownership of @info.
+ *
+ * Attaches protection metadata to a #GstBuffer.
+ *
+ * Returns: (transfer none): a pointer to the added #GstProtectionMeta if successful; %NULL if
+ * unsuccessful.
+ *
+ * Since: 1.6
+ */
+GstProtectionMeta *
+gst_buffer_add_protection_meta (GstBuffer * buffer, GstStructure * info)
+{
+  GstProtectionMeta *meta;
+
+  g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL);
+  g_return_val_if_fail (info != NULL, NULL);
+
+  meta =
+      (GstProtectionMeta *) gst_buffer_add_meta (buffer,
+      GST_PROTECTION_META_INFO, NULL);
+
+  meta->info = info;
+
+  return meta;
+}
+
+/**
+ * gst_protection_select_system:
+ * @system_identifiers: (transfer none): A null terminated array of strings
+ * that contains the UUID values of each protection system that is to be
+ * checked.
+ *
+ * Iterates the supplied list of UUIDs and checks the GstRegistry for
+ * an element that supports one of the supplied UUIDs. If more than one
+ * element matches, the system ID of the highest ranked element is selected.
+ *
+ * Returns: (transfer none): One of the strings from @system_identifiers that
+ * indicates the highest ranked element that implements the protection system
+ * indicated by that system ID, or %NULL if no element has been found.
+ *
+ * Since: 1.6
+ */
+const gchar *
+gst_protection_select_system (const gchar ** system_identifiers)
+{
+  GList *decryptors, *walk;
+  const gchar *retval = NULL;
+
+  decryptors =
+      gst_element_factory_list_get_elements (GST_ELEMENT_FACTORY_TYPE_DECRYPTOR,
+      GST_RANK_MARGINAL);
+
+  for (walk = decryptors; !retval && walk; walk = g_list_next (walk)) {
+    GstElementFactory *fact = (GstElementFactory *) walk->data;
+
+    retval = gst_protection_factory_check (fact, system_identifiers);
+  }
+
+  gst_plugin_feature_list_free (decryptors);
+
+  return retval;
+}
+
+static const gchar *
+gst_protection_factory_check (GstElementFactory * fact,
+    const gchar ** system_identifiers)
+{
+  const GList *template, *walk;
+  const gchar *retval = NULL;
+
+  template = gst_element_factory_get_static_pad_templates (fact);
+  for (walk = template; walk && !retval; walk = g_list_next (walk)) {
+    GstStaticPadTemplate *templ = walk->data;
+    GstCaps *caps = gst_static_pad_template_get_caps (templ);
+    guint leng = gst_caps_get_size (caps);
+
+    for (guint i = 0; !retval && i < leng; ++i) {
+      GstStructure *st;
+
+      st = gst_caps_get_structure (caps, i);
+      if (gst_structure_has_field_typed (st,
+              GST_PROTECTION_SYSTEM_ID_CAPS_FIELD, G_TYPE_STRING)) {
+        const gchar *sys_id =
+            gst_structure_get_string (st, GST_PROTECTION_SYSTEM_ID_CAPS_FIELD);
+        GST_DEBUG ("Found decryptor that supports protection system %s",
+            sys_id);
+        for (guint j = 0; !retval && system_identifiers[j]; ++j) {
+          GST_TRACE ("  compare with %s", system_identifiers[j]);
+          if (g_ascii_strcasecmp (system_identifiers[j], sys_id) == 0) {
+            GST_DEBUG ("  Selecting %s", system_identifiers[j]);
+            retval = system_identifiers[j];
+          }
+        }
+      }
+    }
+    gst_caps_unref (caps);
+  }
+
+  return retval;
+}
diff --git a/gst/gstprotection.h b/gst/gstprotection.h
new file mode 100644
index 0000000..f2f54c4
--- /dev/null
+++ b/gst/gstprotection.h
@@ -0,0 +1,71 @@
+/* GStreamer
+ * Copyright (C) <2015> YouView TV Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_PROTECTION_H__
+#define __GST_PROTECTION_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GST_PROTECTION_SYSTEM_ID_CAPS_FIELD:
+ *
+ * The field name in a GstCaps that is used to signal the UUID of the protection
+ * system.
+ *
+ * Since: 1.6
+ */
+#define GST_PROTECTION_SYSTEM_ID_CAPS_FIELD "protection-system"
+
+typedef struct _GstProtectionMeta GstProtectionMeta;
+/**
+ * GstProtectionMeta:
+ * @meta: the parent #GstMeta.
+ * @info: the cryptographic information needed to decrypt the sample.
+ *
+ * Metadata type that holds information about a sample from a protection-protected
+ * track, including the information needed to decrypt it (if it is encrypted).
+ *
+ * Since: 1.6
+ */
+struct _GstProtectionMeta
+{
+  GstMeta meta;
+
+  GstStructure *info;
+};
+
+GType gst_protection_meta_api_get_type (void);
+#define GST_PROTECTION_META_API_TYPE (gst_protection_meta_api_get_type())
+
+#define gst_buffer_get_protection_meta(b) \
+    ((GstProtectionMeta*)gst_buffer_get_meta ((b), GST_PROTECTION_META_API_TYPE))
+
+#define GST_PROTECTION_META_INFO (gst_protection_meta_get_info())
+
+const GstMetaInfo *gst_protection_meta_get_info (void);
+
+GstProtectionMeta *gst_buffer_add_protection_meta (GstBuffer * buffer,
+    GstStructure * info);
+
+const gchar *gst_protection_select_system (const gchar ** system_identifiers);
+
+G_END_DECLS
+#endif /* __GST_PROTECTION_META_H__ */
diff --git a/gst/gstquark.h b/gst/gstquark.h
index 98bfdd0..b8daeb0 100644
--- a/gst/gstquark.h
+++ b/gst/gstquark.h
@@ -22,6 +22,8 @@
 #ifndef __GST_QUARK_H__
 #define __GST_QUARK_H__
 
+#include <glib.h>
+
 /* These enums need to match the number and order
  * of strings declared in _quark_table, in gstquark.c */
 typedef enum _GstQuarkId
diff --git a/gst/gstquery.c b/gst/gstquery.c
index 38fc5c5..2828bd5 100644
--- a/gst/gstquery.c
+++ b/gst/gstquery.c
@@ -413,6 +413,7 @@
   GstStructure *structure;
 
   g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_LATENCY);
+  g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min_latency));
 
   structure = GST_QUERY_STRUCTURE (query);
   gst_structure_id_set (structure,
@@ -1601,7 +1602,6 @@
 
   g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_ALLOCATION);
   g_return_if_fail (gst_query_is_writable (query));
-  g_return_if_fail (size != 0);
 
   structure = GST_QUERY_STRUCTURE (query);
   array = ensure_array (structure, GST_QUARK (POOL),
diff --git a/gst/gstregistry.c b/gst/gstregistry.c
index 73fdf0e..090f814 100644
--- a/gst/gstregistry.c
+++ b/gst/gstregistry.c
@@ -1177,7 +1177,8 @@
     /* We don't use a GError here because a failure to load some shared
      * objects as plugins is normal (particularly in the uninstalled case)
      */
-    newplugin = gst_plugin_load_file (filename, NULL);
+    newplugin = _priv_gst_plugin_load_file_for_registry (filename,
+        context->registry, NULL);
   }
 
   if (newplugin) {
@@ -1247,7 +1248,7 @@
         g_free (filename);
         continue;
       }
-      /* FIXME 0.11: Don't recurse into directories, this behaviour
+      /* FIXME 2.0: Don't recurse into directories, this behaviour
        * is inconsistent with other PATH environment variables
        */
       if (level > 0) {
diff --git a/gst/gstsample.c b/gst/gstsample.c
index ce8228a..e61ff67 100644
--- a/gst/gstsample.c
+++ b/gst/gstsample.c
@@ -42,6 +42,7 @@
   GstCaps *caps;
   GstSegment segment;
   GstStructure *info;
+  GstBufferList *buffer_list;
 };
 
 GType _gst_sample_type = 0;
@@ -64,6 +65,10 @@
   copy = gst_sample_new (sample->buffer, sample->caps, &sample->segment,
       (sample->info) ? gst_structure_copy (sample->info) : NULL);
 
+  if (sample->buffer_list)
+    copy->buffer_list = (GstBufferList *)
+        gst_mini_object_ref (GST_MINI_OBJECT_CAST (sample->buffer_list));
+
   return copy;
 }
 
@@ -80,6 +85,9 @@
     gst_structure_set_parent_refcount (sample->info, NULL);
     gst_structure_free (sample->info);
   }
+  if (sample->buffer_list)
+    gst_mini_object_unref (GST_MINI_OBJECT_CAST (sample->buffer_list));
+
   g_slice_free1 (sizeof (GstSample), sample);
 }
 
@@ -208,3 +216,46 @@
 
   return sample->info;
 }
+
+/**
+ * gst_sample_get_buffer_list:
+ * @sample: a #GstSample
+ *
+ * Get the buffer list associated with @sample
+ *
+ * Returns: (transfer none) (nullable): the buffer list of @sample or %NULL
+ *  when there is no buffer list. The buffer list remains valid as long as
+ *  @sample is valid.  If you need to hold on to it for longer than
+ *  that, take a ref to the buffer list with gst_mini_object_ref ().
+ *
+ * Since: 1.6
+ */
+GstBufferList *
+gst_sample_get_buffer_list (GstSample * sample)
+{
+  g_return_val_if_fail (GST_IS_SAMPLE (sample), NULL);
+
+  return sample->buffer_list;
+}
+
+/**
+ * gst_sample_set_buffer_list:
+ * @sample: a #GstSample
+ * @buffer_list: a #GstBufferList
+ *
+ * Set the buffer list associated with @sample
+ *
+ * Since: 1.6
+ */
+void
+gst_sample_set_buffer_list (GstSample * sample, GstBufferList * buffer_list)
+{
+  GstBufferList *old = NULL;
+  g_return_if_fail (GST_IS_SAMPLE (sample));
+  old = sample->buffer_list;
+  sample->buffer_list = (GstBufferList *)
+      gst_mini_object_ref (GST_MINI_OBJECT_CAST (buffer_list));
+
+  if (old)
+    gst_mini_object_unref (GST_MINI_OBJECT_CAST (old));
+}
diff --git a/gst/gstsample.h b/gst/gstsample.h
index d05ff1e..71f48ee 100644
--- a/gst/gstsample.h
+++ b/gst/gstsample.h
@@ -25,6 +25,7 @@
 #define __GST_SAMPLE_H__
 
 #include <gst/gstbuffer.h>
+#include <gst/gstbufferlist.h>
 #include <gst/gstcaps.h>
 #include <gst/gstsegment.h>
 
@@ -58,6 +59,8 @@
 GstCaps *            gst_sample_get_caps      (GstSample *sample);
 GstSegment *         gst_sample_get_segment   (GstSample *sample);
 const GstStructure * gst_sample_get_info      (GstSample *sample);
+GstBufferList *      gst_sample_get_buffer_list (GstSample *sample);
+void                 gst_sample_set_buffer_list (GstSample *sample, GstBufferList *buffer_list);
 
 /* refcounting */
 /**
diff --git a/gst/gstsegment.c b/gst/gstsegment.c
index 3c4081b..01b3005 100644
--- a/gst/gstsegment.c
+++ b/gst/gstsegment.c
@@ -340,10 +340,14 @@
   segment->flags = GST_SEGMENT_FLAG_NONE;
   if ((flags & GST_SEEK_FLAG_FLUSH) != 0)
     segment->flags |= GST_SEGMENT_FLAG_RESET;
-  if ((flags & GST_SEEK_FLAG_SKIP) != 0)
-    segment->flags |= GST_SEGMENT_FLAG_SKIP;
+  if ((flags & GST_SEEK_FLAG_TRICKMODE) != 0)
+    segment->flags |= GST_SEGMENT_FLAG_TRICKMODE;
   if ((flags & GST_SEEK_FLAG_SEGMENT) != 0)
     segment->flags |= GST_SEGMENT_FLAG_SEGMENT;
+  if ((flags & GST_SEEK_FLAG_TRICKMODE_KEY_UNITS) != 0)
+    segment->flags |= GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS;
+  if ((flags & GST_SEEK_FLAG_TRICKMODE_NO_AUDIO) != 0)
+    segment->flags |= GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO;
 
   segment->rate = rate;
   segment->applied_rate = 1.0;
@@ -449,6 +453,116 @@
 }
 
 /**
+ * gst_segment_to_running_time_full:
+ * @segment: a #GstSegment structure.
+ * @format: the format of the segment.
+ * @position: the position in the segment
+ * @running_time: result running-time
+ *
+ * Translate @position to the total running time using the currently configured
+ * segment. Compared to gst_segment_to_running_time() this function can return
+ * negative running-time.
+ *
+ * This function is typically used by elements that need to synchronize buffers
+ * against the clock or eachother.
+ *
+ * @position can be any value and the result of this function for values outside
+ * of the segment is extrapolated.
+ *
+ * When 1 is returned, @position resulted in a positive running-time returned
+ * in @running_time.
+ *
+ * When this function returns -1, the returned @running_time should be negated
+ * to get the real negative running time.
+ *
+ * Returns: a 1 or -1 on success, 0 on failure.
+ *
+ * Since: 1.6
+ */
+gint
+gst_segment_to_running_time_full (const GstSegment * segment, GstFormat format,
+    guint64 position, guint64 * running_time)
+{
+  gint res = 0;
+  guint64 result;
+  guint64 start, stop, offset;
+  gdouble abs_rate;
+
+  if (G_UNLIKELY (position == -1)) {
+    GST_DEBUG ("invalid position (-1)");
+    goto done;
+  }
+
+  g_return_val_if_fail (segment != NULL, 0);
+  g_return_val_if_fail (segment->format == format, 0);
+
+  offset = segment->offset;
+
+  if (G_LIKELY (segment->rate > 0.0)) {
+    start = segment->start + offset;
+
+    /* bring to uncorrected position in segment */
+    if (position < start) {
+      /* negative value */
+      result = start - position;
+      res = -1;
+    } else {
+      result = position - start;
+      res = 1;
+    }
+  } else {
+    stop = segment->stop;
+
+    /* cannot continue if no stop position set or invalid offset */
+    g_return_val_if_fail (stop != -1, 0);
+    g_return_val_if_fail (stop >= offset, 0);
+
+    stop -= offset;
+
+    /* bring to uncorrected position in segment */
+    if (position > stop) {
+      /* negative value */
+      result = position - stop;
+      res = -1;
+    } else {
+      result = stop - position;
+      res = 1;
+    }
+  }
+
+  if (running_time) {
+    /* scale based on the rate, avoid division by and conversion to
+     * float when not needed */
+    abs_rate = ABS (segment->rate);
+    if (G_UNLIKELY (abs_rate != 1.0))
+      result /= abs_rate;
+
+    /* correct for base of the segment */
+    if (res == 1)
+      /* positive, add base */
+      *running_time = result + segment->base;
+    else if (segment->base >= result) {
+      /* negative and base is bigger, subtract from base and we have a
+       * positive value again */
+      *running_time = segment->base - result;
+      res = 1;
+    } else {
+      /* negative and base is smaller, subtract base and remainder is
+       * negative */
+      *running_time = result - segment->base;
+    }
+  }
+  return res;
+
+done:
+  {
+    if (running_time)
+      *running_time = -1;
+    return 0;
+  }
+}
+
+/**
  * gst_segment_to_running_time:
  * @segment: a #GstSegment structure.
  * @format: the format of the segment.
@@ -472,70 +586,28 @@
     guint64 position)
 {
   guint64 result;
-  guint64 start, stop;
-  gdouble abs_rate;
-
-  if (G_UNLIKELY (position == -1)) {
-    GST_DEBUG ("invalid position (-1)");
-    return -1;
-  }
 
   g_return_val_if_fail (segment != NULL, -1);
   g_return_val_if_fail (segment->format == format, -1);
 
-  start = segment->start;
-
-  if (segment->rate > 0.0)
-    start += segment->offset;
-
   /* before the segment boundary */
-  if (G_UNLIKELY (position < start)) {
+  if (G_UNLIKELY (position < segment->start)) {
     GST_DEBUG ("position(%" G_GUINT64_FORMAT ") < start(%" G_GUINT64_FORMAT
-        ")", position, start);
+        ")", position, segment->start);
+    return -1;
+  }
+  /* after the segment boundary */
+  if (G_UNLIKELY (segment->stop != -1 && position > segment->stop)) {
+    GST_DEBUG ("position(%" G_GUINT64_FORMAT ") > stop(%" G_GUINT64_FORMAT
+        ")", position, segment->stop);
     return -1;
   }
 
-  stop = segment->stop;
+  if (gst_segment_to_running_time_full (segment, format, position,
+          &result) == 1)
+    return result;
 
-  if (G_LIKELY (segment->rate > 0.0)) {
-    /* after of the segment boundary */
-    if (G_UNLIKELY (stop != -1 && position > stop)) {
-      GST_DEBUG ("position(%" G_GUINT64_FORMAT ") > stop(%" G_GUINT64_FORMAT
-          ")", position, stop);
-      return -1;
-    }
-
-    /* bring to uncorrected position in segment */
-    result = position - start;
-  } else {
-    /* cannot continue if no stop position set or outside of
-     * the segment. */
-    if (G_UNLIKELY (stop == -1)) {
-      GST_DEBUG ("invalid stop (-1)");
-      return -1;
-    }
-
-    stop -= segment->offset;
-    if (G_UNLIKELY (position > stop)) {
-      GST_DEBUG ("position(%" G_GUINT64_FORMAT ") > stop(%" G_GUINT64_FORMAT
-          ")", position, stop);
-      return -1;
-    }
-
-    /* bring to uncorrected position in segment */
-    result = stop - position;
-  }
-
-  /* scale based on the rate, avoid division by and conversion to
-   * float when not needed */
-  abs_rate = ABS (segment->rate);
-  if (G_UNLIKELY (abs_rate != 1.0))
-    result /= abs_rate;
-
-  /* correct for base of the segment */
-  result += segment->base;
-
-  return result;
+  return -1;
 }
 
 /**
@@ -753,8 +825,48 @@
       if (position == -1)
         return FALSE;
 
-      segment->offset = position;
+      segment->offset = position - segment->start;
     }
   }
   return TRUE;
 }
+
+/**
+ * gst_segment_is_equal:
+ * @s0: a #GstSegment structure.
+ * @s1: a #GstSegment structure.
+ *
+ * Checks for two segments being equal. Equality here is defined
+ * as perfect equality, including floating point values.
+ *
+ * Since: 1.6
+ *
+ * Returns: %TRUE if the segments are equal, %FALSE otherwise.
+ */
+gboolean
+gst_segment_is_equal (const GstSegment * s0, const GstSegment * s1)
+{
+  if (s0->flags != s1->flags)
+    return FALSE;
+  if (s0->rate != s1->rate)
+    return FALSE;
+  if (s0->applied_rate != s1->applied_rate)
+    return FALSE;
+  if (s0->format != s1->format)
+    return FALSE;
+  if (s0->base != s1->base)
+    return FALSE;
+  if (s0->offset != s1->offset)
+    return FALSE;
+  if (s0->start != s1->start)
+    return FALSE;
+  if (s0->stop != s1->stop)
+    return FALSE;
+  if (s0->time != s1->time)
+    return FALSE;
+  if (s0->position != s1->position)
+    return FALSE;
+  if (s0->duration != s1->duration)
+    return FALSE;
+  return TRUE;
+}
diff --git a/gst/gstsegment.h b/gst/gstsegment.h
index c9ec1e4..85aed25 100644
--- a/gst/gstsegment.h
+++ b/gst/gstsegment.h
@@ -56,19 +56,28 @@
  * @GST_SEEK_FLAG_KEY_UNIT: seek to the nearest keyframe. This might be
  *                     faster but less accurate.
  * @GST_SEEK_FLAG_SEGMENT: perform a segment seek.
- * @GST_SEEK_FLAG_SKIP: when doing fast forward or fast reverse playback, allow
+ * @GST_SEEK_FLAG_TRICKMODE: when doing fast forward or fast reverse playback, allow
  *                     elements to skip frames instead of generating all
- *                     frames.
+ *                     frames. (Since 1.6)
  * @GST_SEEK_FLAG_SNAP_BEFORE: go to a location before the requested position,
- *                     if KEY_UNIT this means the keyframe at or before the
- *                     requested position the one at or before the seek target.
+ *                     if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at or before
+ *                     the requested position the one at or before the seek target.
  * @GST_SEEK_FLAG_SNAP_AFTER: go to a location after the requested position,
- *                     if KEY_UNIT this means the keyframe at of after the
+ *                     if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at of after the
  *                     requested position.
  * @GST_SEEK_FLAG_SNAP_NEAREST: go to a position near the requested position,
- *                     if KEY_UNIT this means the keyframe closest to the
- *                     requested position, if both keyframes are at an equal
- *                     distance, behaves like SNAP_BEFORE.
+ *                     if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe closest
+ *                     to the requested position, if both keyframes are at an equal
+ *                     distance, behaves like %GST_SEEK_FLAG_SNAP_BEFORE.
+ * @GST_SEEK_FLAG_TRICKMODE_KEY_UNITS: when doing fast forward or fast reverse
+ *                     playback, request that elements only decode keyframes
+ *                     and skip all other content, for formats that have
+ *                     keyframes. (Since 1.6)
+ * @GST_SEEK_FLAG_TRICKMODE_NO_AUDIO: when doing fast forward or fast reverse
+ *                     playback, request that audio decoder elements skip
+ *                     decoding and output only gap events or silence. (Since 1.6)
+ * @GST_SEEK_FLAG_SKIP: Deprecated backward compatibility flag, replaced
+ *                     by %GST_SEEK_FLAG_TRICKMODE
  *
  * Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
  * can be used together.
@@ -82,22 +91,28 @@
  *
  * When performing a segment seek: after the playback of the segment completes,
  * no EOS will be emitted by the element that performed the seek, but a
- * #GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
+ * %GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
  * When this message is posted, it is possible to send a new seek event to
  * continue playback. With this seek method it is possible to perform seamless
  * looping or simple linear editing.
  *
  * When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode
- * playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
+ * playback, the %GST_SEEK_FLAG_TRICKMODE flag can be used to instruct decoders
  * and demuxers to adjust the playback rate by skipping frames. This can improve
  * performance and decrease CPU usage because not all frames need to be decoded.
  *
- * The @GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous
- * relevant location, and the @GST_SEEK_FLAG_SNAP_AFTER flag can be used to
- * select the next relevant location. If KEY_UNIT is specified, the relevant
- * location is a keyframe. If both flags are specified, the nearest of these
- * locations will be selected. If none are specified, the implementation is
+ * Beyond that, the %GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to
+ * request that decoders skip all frames except key units, and
+ * %GST_SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio
+ * decoders do no decoding at all, and simple output silence.
+ *
+ * The %GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous
+ * relevant location, and the %GST_SEEK_FLAG_SNAP_AFTER flag can be used to
+ * select the next relevant location. If %GST_SEEK_FLAG_KEY_UNIT is specified,
+ * the relevant location is a keyframe. If both flags are specified, the nearest
+ * of these locations will be selected. If none are specified, the implementation is
  * free to select whichever it wants.
+ *
  * The before and after here are in running time, so when playing backwards,
  * the next location refers to the one that will played in next, and not the
  * one that is located after in the actual source stream.
@@ -112,11 +127,16 @@
   GST_SEEK_FLAG_ACCURATE        = (1 << 1),
   GST_SEEK_FLAG_KEY_UNIT        = (1 << 2),
   GST_SEEK_FLAG_SEGMENT         = (1 << 3),
+  GST_SEEK_FLAG_TRICKMODE       = (1 << 4),
+  /* FIXME 2.0: Remove _SKIP flag,
+   * which was kept for backward compat when _TRICKMODE was added */
   GST_SEEK_FLAG_SKIP            = (1 << 4),
   GST_SEEK_FLAG_SNAP_BEFORE     = (1 << 5),
   GST_SEEK_FLAG_SNAP_AFTER      = (1 << 6),
   GST_SEEK_FLAG_SNAP_NEAREST    = GST_SEEK_FLAG_SNAP_BEFORE | GST_SEEK_FLAG_SNAP_AFTER,
   /* Careful to restart next flag with 1<<7 here */
+  GST_SEEK_FLAG_TRICKMODE_KEY_UNITS = (1 << 7),
+  GST_SEEK_FLAG_TRICKMODE_NO_AUDIO  = (1 << 8),
 } GstSeekFlags;
 
 /**
@@ -124,8 +144,14 @@
  * @GST_SEGMENT_FLAG_NONE: no flags
  * @GST_SEGMENT_FLAG_RESET: reset the pipeline running_time to the segment
  *                          running_time
- * @GST_SEGMENT_FLAG_SKIP: perform skip playback
+ * @GST_SEGMENT_FLAG_TRICKMODE: perform skip playback (Since 1.6)
  * @GST_SEGMENT_FLAG_SEGMENT: send SEGMENT_DONE instead of EOS
+ * @GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS: Decode only keyframes, where
+ *                                        possible (Since 1.6)
+ * @GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO: Do not decode any audio, where
+ *                                        possible (Since 1.6)
+ * @GST_SEGMENT_FLAG_SKIP: Deprecated backward compatibility flag, replaced
+ *                         by @GST_SEGMENT_FLAG_TRICKMODE
  *
  * Flags for the GstSegment structure. Currently mapped to the corresponding
  * values of the seek flags.
@@ -134,8 +160,13 @@
 typedef enum { /*< flags >*/
   GST_SEGMENT_FLAG_NONE            = GST_SEEK_FLAG_NONE,
   GST_SEGMENT_FLAG_RESET           = GST_SEEK_FLAG_FLUSH,
-  GST_SEGMENT_FLAG_SKIP            = GST_SEEK_FLAG_SKIP,
-  GST_SEGMENT_FLAG_SEGMENT         = GST_SEEK_FLAG_SEGMENT
+  GST_SEGMENT_FLAG_TRICKMODE       = GST_SEEK_FLAG_TRICKMODE,
+  /* FIXME 2.0: Remove _SKIP flag,
+   * which was kept for backward compat when _TRICKMODE was added */
+  GST_SEGMENT_FLAG_SKIP            = GST_SEEK_FLAG_TRICKMODE,
+  GST_SEGMENT_FLAG_SEGMENT         = GST_SEEK_FLAG_SEGMENT,
+  GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS = GST_SEEK_FLAG_TRICKMODE_KEY_UNITS,
+  GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO      = GST_SEEK_FLAG_TRICKMODE_NO_AUDIO
 } GstSegmentFlags;
 
 /**
@@ -149,7 +180,8 @@
  * @start: the start of the segment
  * @stop: the stop of the segment
  * @time: the stream time of the segment
- * @position: the position in the segment
+ * @position: the position in the segment (used internally by elements
+ *     such as sources, demuxers or parsers to track progress)
  * @duration: the duration of the segment
  *
  * A helper structure that holds the configured region of
@@ -187,6 +219,9 @@
 
 guint64      gst_segment_to_stream_time      (const GstSegment *segment, GstFormat format, guint64 position);
 guint64      gst_segment_to_running_time     (const GstSegment *segment, GstFormat format, guint64 position);
+
+gint         gst_segment_to_running_time_full (const GstSegment *segment, GstFormat format, guint64 position,
+                                               guint64 * running_time);
 guint64      gst_segment_to_position         (const GstSegment *segment, GstFormat format, guint64 running_time);
 
 gboolean     gst_segment_set_running_time    (GstSegment *segment, GstFormat format, guint64 running_time);
@@ -201,6 +236,7 @@
                                               GstFormat format, GstSeekFlags flags,
                                               GstSeekType start_type, guint64 start,
                                               GstSeekType stop_type, guint64 stop, gboolean * update);
+gboolean     gst_segment_is_equal            (const GstSegment * s0, const GstSegment * s1);
 
 G_END_DECLS
 
diff --git a/gst/gststructure.c b/gst/gststructure.c
index 10ac568..0617115 100644
--- a/gst/gststructure.c
+++ b/gst/gststructure.c
@@ -619,7 +619,8 @@
  * @fieldname: the name of the field to set
  * @...: variable arguments
  *
- * Parses the variable arguments and sets fields accordingly.
+ * Parses the variable arguments and sets fields accordingly. Fields that
+ * weren't already part of the structure are added as needed.
  * Variable arguments should be in the form field name, field type
  * (as a GType), value(s).  The last variable argument should be %NULL.
  */
@@ -665,15 +666,9 @@
     GstStructureField field = { 0 };
 
     field.name = fieldname;
-
     type = va_arg (varargs, GType);
 
-#ifndef G_VALUE_COLLECT_INIT
-    g_value_init (&field.value, type);
-    G_VALUE_COLLECT (&field.value, varargs, 0, &err);
-#else
     G_VALUE_COLLECT_INIT (&field.value, type, varargs, 0, &err);
-#endif
     if (G_UNLIKELY (err)) {
       g_critical ("%s", err);
       return;
@@ -1106,7 +1101,8 @@
  * @user_data: (closure): private data
  *
  * Calls the provided function once for each field in the #GstStructure. The
- * function must not modify the fields. Also see gst_structure_map_in_place().
+ * function must not modify the fields. Also see gst_structure_map_in_place()
+ * and gst_structure_filter_and_map_in_place().
  *
  * Returns: %TRUE if the supplied function returns %TRUE For each of the fields,
  * %FALSE otherwise.
@@ -1173,6 +1169,51 @@
 }
 
 /**
+ * gst_structure_filter_and_map_in_place:
+ * @structure: a #GstStructure
+ * @func: (scope call): a function to call for each field
+ * @user_data: (closure): private data
+ *
+ * Calls the provided function once for each field in the #GstStructure. In
+ * contrast to gst_structure_foreach(), the function may modify the fields.
+ * In contrast to gst_structure_map_in_place(), the field is removed from
+ * the structure if %FALSE is returned from the function.
+ * The structure must be mutable.
+ *
+ * Since: 1.6
+ */
+void
+gst_structure_filter_and_map_in_place (GstStructure * structure,
+    GstStructureFilterMapFunc func, gpointer user_data)
+{
+  guint i, len;
+  GstStructureField *field;
+  gboolean ret;
+
+  g_return_if_fail (structure != NULL);
+  g_return_if_fail (IS_MUTABLE (structure));
+  g_return_if_fail (func != NULL);
+  len = GST_STRUCTURE_FIELDS (structure)->len;
+
+  for (i = 0; i < len;) {
+    field = GST_STRUCTURE_FIELD (structure, i);
+
+    ret = func (field->name, &field->value, user_data);
+
+    if (!ret) {
+      if (G_IS_VALUE (&field->value)) {
+        g_value_unset (&field->value);
+      }
+      GST_STRUCTURE_FIELDS (structure) =
+          g_array_remove_index (GST_STRUCTURE_FIELDS (structure), i);
+      len = GST_STRUCTURE_FIELDS (structure)->len;
+    } else {
+      i++;
+    }
+  }
+}
+
+/**
  * gst_structure_id_has_field:
  * @structure: a #GstStructure
  * @field: #GQuark of the field name
@@ -1512,7 +1553,7 @@
   if (!GST_VALUE_HOLDS_DATE_TIME (&field->value))
     return FALSE;
 
-  /* FIXME: 0.11 g_value_dup_boxed() -> g_value_get_boxed() */
+  /* FIXME 2.0: g_value_dup_boxed() -> g_value_get_boxed() */
   *value = g_value_dup_boxed (&field->value);
 
   return TRUE;
@@ -1680,6 +1721,44 @@
   return TRUE;
 }
 
+/**
+ * gst_structure_get_flagset:
+ * @structure: a #GstStructure
+ * @fieldname: the name of a field
+ * @value_flags: (out) (allow-none): a pointer to a guint for the flags field
+ * @value_mask: (out) (allow-none): a pointer to a guint for the mask field
+ *
+ * Read the GstFlagSet flags and mask out of the structure into the
+ * provided pointers.
+ *
+ * Returns: %TRUE if the values could be set correctly. If there was no field
+ * with @fieldname or the existing field did not contain a GstFlagSet, this
+ * function returns %FALSE.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_structure_get_flagset (const GstStructure * structure,
+    const gchar * fieldname, guint * value_flags, guint * value_mask)
+{
+  GstStructureField *field;
+
+  g_return_val_if_fail (structure != NULL, FALSE);
+  g_return_val_if_fail (fieldname != NULL, FALSE);
+
+  field = gst_structure_get_field (structure, fieldname);
+
+  if (field == NULL || !GST_VALUE_HOLDS_FLAG_SET (&field->value))
+    return FALSE;
+
+  if (value_flags)
+    *value_flags = gst_value_get_flagset_flags (&field->value);
+  if (value_mask)
+    *value_mask = gst_value_get_flagset_mask (&field->value);
+
+  return TRUE;
+}
+
 typedef struct _GstStructureAbbreviation
 {
   const gchar *type_name;
@@ -1976,7 +2055,7 @@
   s++;
 
   ret = gst_structure_parse_value (s, &s, &value1, type);
-  if (ret == FALSE)
+  if (!ret)
     return FALSE;
 
   while (g_ascii_isspace (*s))
@@ -1990,7 +2069,7 @@
     s++;
 
   ret = gst_structure_parse_value (s, &s, &value2, type);
-  if (ret == FALSE)
+  if (!ret)
     return FALSE;
 
   while (g_ascii_isspace (*s))
@@ -2006,7 +2085,7 @@
         s++;
 
       ret = gst_structure_parse_value (s, &s, &value3, type);
-      if (ret == FALSE)
+      if (!ret)
         return FALSE;
 
       while (g_ascii_isspace (*s))
@@ -2090,7 +2169,7 @@
   }
 
   ret = gst_structure_parse_value (s, &s, &list_value, type);
-  if (ret == FALSE)
+  if (!ret)
     return FALSE;
 
   g_array_append_val (array, list_value);
@@ -2108,7 +2187,7 @@
 
     memset (&list_value, 0, sizeof (list_value));
     ret = gst_structure_parse_value (s, &s, &list_value, type);
-    if (ret == FALSE)
+    if (!ret)
       return FALSE;
 
     g_array_append_val (array, list_value);
@@ -2256,8 +2335,8 @@
 
     if (G_UNLIKELY (type == G_TYPE_INVALID)) {
       GType try_types[] =
-          { G_TYPE_INT, G_TYPE_DOUBLE, GST_TYPE_FRACTION, G_TYPE_BOOLEAN,
-        G_TYPE_STRING
+          { G_TYPE_INT, G_TYPE_DOUBLE, GST_TYPE_FRACTION, GST_TYPE_FLAG_SET,
+        G_TYPE_BOOLEAN, G_TYPE_STRING
       };
       int i;
 
diff --git a/gst/gststructure.h b/gst/gststructure.h
index 6687970..a2b7926 100644
--- a/gst/gststructure.h
+++ b/gst/gststructure.h
@@ -71,6 +71,23 @@
                                              gpointer user_data);
 
 /**
+ * GstStructureFilterMapFunc:
+ * @field_id: the #GQuark of the field name
+ * @value: the #GValue of the field
+ * @user_data: user data
+ *
+ * A function that will be called in gst_structure_filter_and_map_in_place().
+ * The function may modify @value, and the value will be removed from
+ * the structure if %FALSE is returned.
+ *
+ * Returns: %TRUE if the field should be preserved, %FALSE if it
+ * should be removed.
+ */
+typedef gboolean (*GstStructureFilterMapFunc) (GQuark   field_id,
+                                               GValue * value,
+                                               gpointer user_data);
+
+/**
  * GstStructure:
  * @type: the GType of a structure
  *
@@ -198,6 +215,10 @@
                                                           GstStructureMapFunc   func,
                                                           gpointer              user_data);
 
+void                  gst_structure_filter_and_map_in_place (GstStructure        * structure,
+                                                          GstStructureFilterMapFunc   func,
+                                                          gpointer              user_data);
+
 gint                  gst_structure_n_fields             (const GstStructure  * structure);
 
 const gchar *         gst_structure_nth_field_name       (const GstStructure  * structure,
@@ -267,6 +288,11 @@
                                                           gint                * value_numerator,
                                                           gint                * value_denominator);
 
+gboolean              gst_structure_get_flagset          (const GstStructure  * structure,
+                                                          const gchar         * fieldname,
+                                                          guint               * value_flags,
+                                                          guint               * value_mask);
+
 gchar *               gst_structure_to_string    (const GstStructure * structure) G_GNUC_MALLOC;
 
 GstStructure *        gst_structure_from_string  (const gchar * string,
diff --git a/gst/gstsystemclock.c b/gst/gstsystemclock.c
index 3071926..0527af2 100644
--- a/gst/gstsystemclock.c
+++ b/gst/gstsystemclock.c
@@ -339,7 +339,7 @@
 
   if (clock == NULL) {
     GST_CAT_DEBUG (GST_CAT_CLOCK, "creating new static system clock");
-    g_assert (_external_default_clock == FALSE);
+    g_assert (!_external_default_clock);
     clock = g_object_new (GST_TYPE_SYSTEM_CLOCK,
         "name", "GstSystemClock", NULL);
 
@@ -738,8 +738,10 @@
 
         if (diff <= 0) {
           /* timeout, this is fine, we can report success now */
-          if (G_UNLIKELY (!CAS_ENTRY_STATUS (entry, GST_CLOCK_DONE, GST_CLOCK_OK))) {
-            GST_CAT_DEBUG (GST_CAT_CLOCK, "unexpected status for entry %p", entry);
+          if (G_UNLIKELY (!CAS_ENTRY_STATUS (entry, GST_CLOCK_DONE,
+                      GST_CLOCK_OK))) {
+            GST_CAT_DEBUG (GST_CAT_CLOCK, "unexpected status for entry %p",
+                entry);
             status = GET_ENTRY_STATUS (entry);
             goto done;
           } else {
diff --git a/gst/gstsystemclock.h b/gst/gstsystemclock.h
index fe5d009..c142708 100644
--- a/gst/gstsystemclock.h
+++ b/gst/gstsystemclock.h
@@ -47,7 +47,7 @@
  * @GST_CLOCK_TYPE_REALTIME: time since Epoch
  * @GST_CLOCK_TYPE_MONOTONIC: monotonic time since some unspecified starting
  *                            point
- * @GST_CLOCK_TYPE_OTHER: some other time source is used (Since: 1.0.5)
+ * @GST_CLOCK_TYPE_OTHER: some other time source is used (Since 1.0.5)
  *
  * The different kind of clocks.
  */
diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c
index be502c3..5b644dc 100644
--- a/gst/gsttaglist.c
+++ b/gst/gsttaglist.c
@@ -468,7 +468,7 @@
  * @type: the type this data is in
  * @nick: human-readable name
  * @blurb: a human-readable description about this tag
- * @func: (allow-none): function for merging multiple values of this tag, or %NULL
+ * @func: (allow-none) (scope call): function for merging multiple values of this tag, or %NULL
  *
  * Registers a new tag type for the use with GStreamer's type system. If a type
  * with that name is already registered, that one is used.
@@ -512,7 +512,7 @@
  * @type: the type this data is in
  * @nick: human-readable name or short description (string constant)
  * @blurb: a human-readable description for this tag (string constant)
- * @func: (allow-none): function for merging multiple values of this tag, or %NULL
+ * @func: (allow-none) (scope call): function for merging multiple values of this tag, or %NULL
  *
  * Registers a new tag type for the use with GStreamer's type system.
  *
@@ -673,7 +673,7 @@
 
 /* takes ownership of the structure */
 static GstTagList *
-gst_tag_list_new_internal (GstStructure * s)
+gst_tag_list_new_internal (GstStructure * s, GstTagScope scope)
 {
   GstTagList *tag_list;
 
@@ -686,7 +686,7 @@
       (GstMiniObjectFreeFunction) __gst_tag_list_free);
 
   GST_TAG_LIST_STRUCTURE (tag_list) = s;
-  GST_TAG_LIST_SCOPE (tag_list) = GST_TAG_SCOPE_STREAM;
+  GST_TAG_LIST_SCOPE (tag_list) = scope;
 
 #ifdef DEBUG_REFCOUNT
   GST_CAT_TRACE (GST_CAT_TAGS, "created taglist %p", tag_list);
@@ -717,7 +717,8 @@
   g_return_val_if_fail (GST_IS_TAG_LIST (list), NULL);
 
   s = GST_TAG_LIST_STRUCTURE (list);
-  return gst_tag_list_new_internal (gst_structure_copy (s));
+  return gst_tag_list_new_internal (gst_structure_copy (s),
+      GST_TAG_LIST_SCOPE (list));
 }
 
 /**
@@ -736,7 +737,7 @@
   GstTagList *tag_list;
 
   s = gst_structure_new_id_empty (GST_QUARK (TAGLIST));
-  tag_list = gst_tag_list_new_internal (s);
+  tag_list = gst_tag_list_new_internal (s, GST_TAG_SCOPE_STREAM);
   return tag_list;
 }
 
@@ -878,7 +879,7 @@
   if (s == NULL)
     return NULL;
 
-  tag_list = gst_tag_list_new_internal (s);
+  tag_list = gst_tag_list_new_internal (s, GST_TAG_SCOPE_STREAM);
 
   return tag_list;
 }
@@ -1499,7 +1500,7 @@
   return TRUE;
 }
 
-/* FIXME 0.11: this whole merge function business is overdesigned, and the
+/* FIXME 2.0: this whole merge function business is overdesigned, and the
  * _get_foo() API is misleading as well - how many application developers will
  * expect gst_tag_list_get_string (list, GST_TAG_ARTIST, &val) might return a
  * string with multiple comma-separated artists? _get_foo() should just be
@@ -1798,7 +1799,7 @@
 TAG_MERGE_FUNCS (string, gchar *, (*value != NULL));
 
 /*
- *FIXME 0.11: Instead of _peek (non-copy) and _get (copy), we could have
+ *FIXME 2.0: Instead of _peek (non-copy) and _get (copy), we could have
  *            _get (non-copy) and _dup (copy) for strings, seems more
  *            widely used
  */
diff --git a/gst/gsttask.c b/gst/gsttask.c
index 60c0140..62453d1 100644
--- a/gst/gsttask.c
+++ b/gst/gsttask.c
@@ -78,6 +78,10 @@
 #include <sys/prctl.h>
 #endif
 
+#ifdef HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
+#include <pthread.h>
+#endif
+
 GST_DEBUG_CATEGORY_STATIC (task_debug);
 #define GST_CAT_DEFAULT (task_debug)
 
@@ -246,8 +250,19 @@
       GST_DEBUG_OBJECT (task, "Failed to set thread name");
   }
   GST_OBJECT_UNLOCK (task);
-#endif
-#ifdef _MSC_VER
+#elif defined(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID)
+  const gchar *name;
+
+  GST_OBJECT_LOCK (task);
+  name = GST_OBJECT_NAME (task);
+
+  /* set the thread name to something easily identifiable */
+  GST_DEBUG_OBJECT (task, "Setting thread name to '%s'", name);
+  if (pthread_setname_np (name))
+    GST_DEBUG_OBJECT (task, "Failed to set thread name");
+
+  GST_OBJECT_UNLOCK (task);
+#elif defined (_MSC_VER)
   const gchar *name;
   name = GST_OBJECT_NAME (task);
 
@@ -399,6 +414,8 @@
 {
   GstTask *task;
 
+  g_return_val_if_fail (func != NULL, NULL);
+
   task = g_object_newv (GST_TYPE_TASK, 0, NULL);
   task->func = func;
   task->user_data = user_data;
@@ -425,6 +442,8 @@
 void
 gst_task_set_lock (GstTask * task, GRecMutex * mutex)
 {
+  g_return_if_fail (GST_IS_TASK (task));
+
   GST_OBJECT_LOCK (task);
   if (G_UNLIKELY (task->running))
     goto is_running;
@@ -780,10 +799,10 @@
   gpointer id;
   GstTaskPool *pool = NULL;
 
-  priv = task->priv;
-
   g_return_val_if_fail (GST_IS_TASK (task), FALSE);
 
+  priv = task->priv;
+
   tself = g_thread_self ();
 
   GST_DEBUG_OBJECT (task, "Joining task %p, thread %p", task, tself);
diff --git a/gst/gsttoc.c b/gst/gsttoc.c
index be99cb1..b1732b2 100644
--- a/gst/gsttoc.c
+++ b/gst/gsttoc.c
@@ -388,6 +388,18 @@
   return NULL;
 }
 
+static GList *
+gst_toc_deep_copy_toc_entries (GList * entry_list)
+{
+  GQueue new_entries = G_QUEUE_INIT;
+  GList *l;
+
+  for (l = entry_list; l != NULL; l = l->next)
+    g_queue_push_tail (&new_entries, gst_toc_entry_copy (l->data));
+
+  return new_entries.head;
+}
+
 /**
  * gst_toc_entry_copy:
  * @entry: #GstTocEntry to copy.
@@ -401,9 +413,8 @@
 static GstTocEntry *
 gst_toc_entry_copy (const GstTocEntry * entry)
 {
-  GstTocEntry *ret, *sub;
+  GstTocEntry *ret;
   GstTagList *list;
-  GList *cur;
 
   g_return_val_if_fail (entry != NULL, NULL);
 
@@ -419,16 +430,7 @@
     ret->tags = list;
   }
 
-  cur = entry->subentries;
-  while (cur != NULL) {
-    sub = gst_toc_entry_copy (cur->data);
-
-    if (sub != NULL)
-      ret->subentries = g_list_prepend (ret->subentries, sub);
-
-    cur = cur->next;
-  }
-  ret->subentries = g_list_reverse (ret->subentries);
+  ret->subentries = gst_toc_deep_copy_toc_entries (entry->subentries);
 
   return ret;
 }
@@ -446,8 +448,6 @@
 gst_toc_copy (const GstToc * toc)
 {
   GstToc *ret;
-  GstTocEntry *entry;
-  GList *cur;
   GstTagList *list;
 
   g_return_val_if_fail (toc != NULL, NULL);
@@ -460,16 +460,8 @@
     ret->tags = list;
   }
 
-  cur = toc->entries;
-  while (cur != NULL) {
-    entry = gst_toc_entry_copy (cur->data);
+  ret->entries = gst_toc_deep_copy_toc_entries (toc->entries);
 
-    if (entry != NULL)
-      ret->entries = g_list_prepend (ret->entries, entry);
-
-    cur = cur->next;
-  }
-  ret->entries = g_list_reverse (ret->entries);
   return ret;
 }
 
diff --git a/gst/gsttrace.h b/gst/gsttrace.h
index 021729f..33ff633 100644
--- a/gst/gsttrace.h
+++ b/gst/gsttrace.h
@@ -25,6 +25,7 @@
 #define __GST_TRACE_H__
 
 #include <glib.h>
+#include <gst/gstconfig.h>
 
 G_BEGIN_DECLS
 
diff --git a/gst/gsttypefind.c b/gst/gsttypefind.c
index ddcbfda..e0ca96f 100644
--- a/gst/gsttypefind.c
+++ b/gst/gsttypefind.c
@@ -72,15 +72,10 @@
 
   factory = g_object_newv (GST_TYPE_TYPE_FIND_FACTORY, 0, NULL);
   GST_DEBUG_OBJECT (factory, "using new typefind factory for %s", name);
-  g_assert (GST_IS_TYPE_FIND_FACTORY (factory));
 
   gst_plugin_feature_set_name (GST_PLUGIN_FEATURE_CAST (factory), name);
   gst_plugin_feature_set_rank (GST_PLUGIN_FEATURE_CAST (factory), rank);
 
-  if (factory->extensions) {
-    g_strfreev (factory->extensions);
-    factory->extensions = NULL;
-  }
   if (extensions)
     factory->extensions = g_strsplit (extensions, ",", -1);
 
diff --git a/gst/gsturi.c b/gst/gsturi.c
index eb8cdcc..3efaae3 100644
--- a/gst/gsturi.c
+++ b/gst/gsturi.c
@@ -2,8 +2,10 @@
  * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
  *                    2000 Wim Taymans <wtay@chello.be>
  * Copyright (C) 2011 Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) 2014 David Waring, British Broadcasting Corporation
+ *                        <david.waring@rd.bbc.co.uk>
  *
- * gsturi.c: register URI handlers
+ * gsturi.c: register URI handlers and IETF RFC 3986 URI manipulations.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -25,8 +27,8 @@
  * SECTION:gsturihandler
  * @short_description: Interface to ease URI handling in plugins.
  *
- * The URIHandler is an interface that is implemented by Source and Sink
- * #GstElement to simplify then handling of URI.
+ * The #GstURIHandler is an interface that is implemented by Source and Sink
+ * #GstElement to unify handling of URI.
  *
  * An application can use the following functions to quickly get an element
  * that handles the given URI for reading or writing
@@ -48,10 +50,93 @@
 #include "gst-i18n-lib.h"
 
 #include <string.h>
+#include <glib.h>
+#include <glib/gprintf.h>
 
 GST_DEBUG_CATEGORY_STATIC (gst_uri_handler_debug);
 #define GST_CAT_DEFAULT gst_uri_handler_debug
 
+#ifndef HAVE_STRCASESTR
+#define strcasestr _gst_ascii_strcasestr
+
+/* From https://github.com/freebsd/freebsd/blob/master/contrib/file/src/strcasestr.c
+ * Updated to use GLib types and GLib string functions
+ *
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Find the first occurrence of find in s, ignore case.
+ */
+
+static gchar *
+_gst_ascii_strcasestr (const gchar * s, const gchar * find)
+{
+  gchar c, sc;
+  gsize len;
+
+  if ((c = *find++) != 0) {
+    c = g_ascii_tolower (c);
+    len = strlen (find);
+    do {
+      do {
+        if ((sc = *s++) == 0)
+          return (NULL);
+      } while (g_ascii_tolower (sc) != c);
+    } while (g_ascii_strncasecmp (s, find, len) != 0);
+    s--;
+  }
+  return (gchar *) (gintptr) (s);
+}
+#endif
+
+#if !GLIB_CHECK_VERSION (2, 33, 4)
+#define g_list_copy_deep gst_g_list_copy_deep
+static GList *
+gst_g_list_copy_deep (GList * list, GCopyFunc func, gpointer user_data)
+{
+  list = g_list_copy (list);
+
+  if (func != NULL) {
+    GList *l;
+
+    for (l = list; l != NULL; l = l->next) {
+      l->data = func (l->data, user_data);
+    }
+  }
+
+  return list;
+}
+#endif
+
 GType
 gst_uri_handler_get_type (void)
 {
@@ -639,11 +724,11 @@
  * Returns: the #GstURIType of the URI handler.
  * Returns #GST_URI_UNKNOWN if the @handler isn't implemented correctly.
  */
-guint
+GstURIType
 gst_uri_handler_get_uri_type (GstURIHandler * handler)
 {
   GstURIHandlerInterface *iface;
-  guint ret;
+  GstURIType ret;
 
   g_return_val_if_fail (GST_IS_URI_HANDLER (handler), GST_URI_UNKNOWN);
 
@@ -733,7 +818,7 @@
 {
   GstURIHandlerInterface *iface;
   gboolean ret;
-  gchar *new_uri, *protocol, *location, *colon;
+  gchar *protocol;
 
   g_return_val_if_fail (GST_IS_URI_HANDLER (handler), FALSE);
   g_return_val_if_fail (gst_uri_is_valid (uri), FALSE);
@@ -768,15 +853,8 @@
     }
   }
 
-  colon = strstr (uri, ":");
-  location = g_strdup (colon);
-
-  new_uri = g_strdup_printf ("%s%s", protocol, location);
-
   ret = iface->set_uri (handler, uri, error);
 
-  g_free (new_uri);
-  g_free (location);
   g_free (protocol);
 
   return ret;
@@ -849,6 +927,9 @@
  * will be canonicalised so that it doesn't contain any './' or '../' segments.
  *
  * On Windows #filename should be in UTF-8 encoding.
+ *
+ * Returns: newly-allocated URI string, or NULL on error. The caller must
+ *   free the URI string with g_free() when no longer needed.
  */
 gchar *
 gst_filename_to_uri (const gchar * filename, GError ** error)
@@ -891,3 +972,1845 @@
   GST_DEBUG ("'%s' -> '%s'", filename, uri);
   return uri;
 }
+
+/****************************************************************************
+ * GstUri - GstMiniObject to parse and merge URIs according to IETF RFC 3986
+ ****************************************************************************/
+
+/**
+ * SECTION:gsturi
+ * @short_description: URI parsing and manipulation.
+ *
+ * A #GstUri object can be used to parse and split a URI string into its
+ * constituant parts. Two #GstUri objects can be joined to make a new #GstUri
+ * using the algorithm described in RFC3986.
+ */
+
+/* Definition for GstUri object */
+struct _GstUri
+{
+  /*< private > */
+  GstMiniObject mini_object;
+  gchar *scheme;
+  gchar *userinfo;
+  gchar *host;
+  guint port;
+  GList *path;
+  GHashTable *query;
+  gchar *fragment;
+};
+
+GST_DEFINE_MINI_OBJECT_TYPE (GstUri, gst_uri);
+
+static GstUri *_gst_uri_copy (const GstUri * uri);
+static void _gst_uri_free (GstUri * uri);
+static GstUri *_gst_uri_new (void);
+static GList *_remove_dot_segments (GList * path);
+
+/* private GstUri functions */
+
+static GstUri *
+_gst_uri_new (void)
+{
+  GstUri *uri;
+  uri = GST_URI_CAST (g_slice_new0 (GstUri));
+
+  if (uri)
+    gst_mini_object_init (GST_MINI_OBJECT_CAST (uri), 0, gst_uri_get_type (),
+        (GstMiniObjectCopyFunction) _gst_uri_copy, NULL,
+        (GstMiniObjectFreeFunction) _gst_uri_free);
+
+  return uri;
+}
+
+static void
+_gst_uri_free (GstUri * uri)
+{
+  g_return_if_fail (GST_IS_URI (uri));
+
+  g_free (uri->scheme);
+  g_free (uri->userinfo);
+  g_free (uri->host);
+  g_list_free_full (uri->path, g_free);
+  if (uri->query)
+    g_hash_table_unref (uri->query);
+  g_free (uri->fragment);
+
+  g_slice_free1 (sizeof (*uri), uri);
+}
+
+static GHashTable *
+_gst_uri_copy_query_table (GHashTable * orig)
+{
+  GHashTable *new = NULL;
+
+  if (orig != NULL) {
+    GHashTableIter iter;
+    gpointer key, value;
+    new = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+    g_hash_table_iter_init (&iter, orig);
+    while (g_hash_table_iter_next (&iter, &key, &value)) {
+      g_hash_table_insert (new, g_strdup (key), g_strdup (value));
+    }
+  }
+
+  return new;
+}
+
+static GstUri *
+_gst_uri_copy (const GstUri * orig_uri)
+{
+  GstUri *new_uri;
+
+  g_return_val_if_fail (GST_IS_URI (orig_uri), NULL);
+
+  new_uri = _gst_uri_new ();
+
+  if (new_uri) {
+    new_uri->scheme = g_strdup (orig_uri->scheme);
+    new_uri->userinfo = g_strdup (orig_uri->userinfo);
+    new_uri->host = g_strdup (orig_uri->host);
+    new_uri->port = orig_uri->port;
+    new_uri->path = g_list_copy_deep (orig_uri->path, (GCopyFunc) g_strdup,
+        NULL);
+    new_uri->query = _gst_uri_copy_query_table (orig_uri->query);
+    new_uri->fragment = g_strdup (orig_uri->fragment);
+  }
+
+  return new_uri;
+}
+
+/*
+ * _gst_uri_compare_lists:
+ *
+ * Compare two lists for equality. This compares the two lists, item for item,
+ * comparing items in the same position in the two lists. If @first is
+ * considered less than @second the result will be negative. If @first is
+ * considered to be more than @second then the result will be positive. If the
+ * lists are considered to be equal then the result will be 0. If two lists
+ * have the same items, but one list is shorter than the other, then the
+ * shorter list is considered to be less than the longer list.
+ */
+static gint
+_gst_uri_compare_lists (GList * first, GList * second, GCompareFunc cmp_fn)
+{
+  GList *itr1, *itr2;
+  gint result;
+
+  for (itr1 = first, itr2 = second;
+      itr1 != NULL || itr2 != NULL; itr1 = itr1->next, itr2 = itr2->next) {
+    if (itr1 == NULL)
+      return -1;
+    if (itr2 == NULL)
+      return 1;
+    result = cmp_fn (itr1->data, itr2->data);
+    if (result != 0)
+      return result;
+  }
+  return 0;
+}
+
+typedef enum
+{
+  _GST_URI_NORMALIZE_LOWERCASE = 1,
+  _GST_URI_NORMALIZE_UPPERCASE = 2
+} _GstUriNormalizations;
+
+/*
+ * Find the first character that hasn't been normalized according to the @flags.
+ */
+static gchar *
+_gst_uri_first_non_normalized_char (gchar * str, guint flags)
+{
+  gchar *pos;
+
+  if (str == NULL)
+    return NULL;
+
+  for (pos = str; *pos; pos++) {
+    if ((flags & _GST_URI_NORMALIZE_UPPERCASE) && g_ascii_islower (*pos))
+      return pos;
+    if ((flags & _GST_URI_NORMALIZE_LOWERCASE) && g_ascii_isupper (*pos))
+      return pos;
+  }
+  return NULL;
+}
+
+static gboolean
+_gst_uri_normalize_lowercase (gchar * str)
+{
+  gchar *pos;
+  gboolean ret = FALSE;
+
+  for (pos = _gst_uri_first_non_normalized_char (str,
+          _GST_URI_NORMALIZE_LOWERCASE);
+      pos != NULL;
+      pos = _gst_uri_first_non_normalized_char (pos + 1,
+          _GST_URI_NORMALIZE_LOWERCASE)) {
+    *pos = g_ascii_tolower (*pos);
+    ret = TRUE;
+  }
+
+  return ret;
+}
+
+#define _gst_uri_normalize_scheme _gst_uri_normalize_lowercase
+#define _gst_uri_normalize_hostname _gst_uri_normalize_lowercase
+
+static gboolean
+_gst_uri_normalize_path (GList ** path)
+{
+  GList *new_path;
+
+  new_path = _remove_dot_segments (*path);
+  if (_gst_uri_compare_lists (new_path, *path, (GCompareFunc) g_strcmp0) != 0) {
+    g_list_free_full (*path, g_free);
+    *path = new_path;
+    return TRUE;
+  }
+  g_list_free_full (new_path, g_free);
+
+  return FALSE;
+}
+
+static gboolean
+_gst_uri_normalize_str_noop (gchar * str)
+{
+  return FALSE;
+}
+
+static gboolean
+_gst_uri_normalize_table_noop (GHashTable * table)
+{
+  return FALSE;
+}
+
+#define _gst_uri_normalize_userinfo _gst_uri_normalize_str_noop
+#define _gst_uri_normalize_query _gst_uri_normalize_table_noop
+#define _gst_uri_normalize_fragment _gst_uri_normalize_str_noop
+
+/* RFC 3986 functions */
+
+static GList *
+_merge (GList * base, GList * path)
+{
+  GList *ret, *path_copy, *last;
+
+  path_copy = g_list_copy_deep (path, (GCopyFunc) g_strdup, NULL);
+  /* if base is NULL make path absolute */
+  if (base == NULL) {
+    if (path_copy != NULL && path_copy->data != NULL) {
+      path_copy = g_list_prepend (path_copy, NULL);
+    }
+    return path_copy;
+  }
+
+  ret = g_list_copy_deep (base, (GCopyFunc) g_strdup, NULL);
+  last = g_list_last (ret);
+  ret = g_list_remove_link (ret, last);
+  g_list_free_full (last, g_free);
+  ret = g_list_concat (ret, path_copy);
+
+  return ret;
+}
+
+static GList *
+_remove_dot_segments (GList * path)
+{
+  GList *out, *elem, *next;
+
+  if (path == NULL)
+    return NULL;
+
+  out = g_list_copy_deep (path, (GCopyFunc) g_strdup, NULL);
+
+  for (elem = out; elem; elem = next) {
+    next = elem->next;
+    if (elem->data == NULL && elem != out && next != NULL) {
+      out = g_list_delete_link (out, elem);
+    } else if (g_strcmp0 (elem->data, ".") == 0) {
+      g_free (elem->data);
+      out = g_list_delete_link (out, elem);
+    } else if (g_strcmp0 (elem->data, "..") == 0) {
+      GList *prev = g_list_previous (elem);
+      if (prev && (prev != out || prev->data != NULL)) {
+        g_free (prev->data);
+        out = g_list_delete_link (out, prev);
+      }
+      g_free (elem->data);
+      out = g_list_delete_link (out, elem);
+    }
+  }
+
+  return out;
+}
+
+static gchar *
+_gst_uri_escape_userinfo (const gchar * userinfo)
+{
+  return g_uri_escape_string (userinfo,
+      G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO, FALSE);
+}
+
+static gchar *
+_gst_uri_escape_host (const gchar * host)
+{
+  return g_uri_escape_string (host,
+      G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, FALSE);
+}
+
+static gchar *
+_gst_uri_escape_host_colon (const gchar * host)
+{
+  return g_uri_escape_string (host,
+      G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":", FALSE);
+}
+
+static gchar *
+_gst_uri_escape_path_segment (const gchar * segment)
+{
+  return g_uri_escape_string (segment,
+      G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT, FALSE);
+}
+
+static gchar *
+_gst_uri_escape_http_query_element (const gchar * element)
+{
+  gchar *ret, *c;
+
+  ret = g_uri_escape_string (element, "!$'()*,;:@/? ", FALSE);
+  for (c = ret; *c; c++)
+    if (*c == ' ')
+      *c = '+';
+  return ret;
+}
+
+static gchar *
+_gst_uri_escape_fragment (const gchar * fragment)
+{
+  return g_uri_escape_string (fragment,
+      G_URI_RESERVED_CHARS_ALLOWED_IN_PATH "?", FALSE);
+}
+
+static GList *
+_gst_uri_string_to_list (const gchar * str, const gchar * sep, gboolean convert,
+    gboolean unescape)
+{
+  GList *new_list = NULL;
+
+  if (str) {
+    guint pct_sep_len = 0;
+    gchar *pct_sep = NULL;
+    gchar **split_str;
+
+    if (convert && !unescape) {
+      pct_sep = g_strdup_printf ("%%%2.2X", (guint) (*sep));
+      pct_sep_len = 3;
+    }
+
+    split_str = g_strsplit (str, sep, -1);
+    if (split_str) {
+      gchar **next_elem;
+      for (next_elem = split_str; *next_elem; next_elem += 1) {
+        gchar *elem = *next_elem;
+        if (*elem == '\0') {
+          new_list = g_list_append (new_list, NULL);
+        } else {
+          if (convert && !unescape) {
+            gchar *next_sep;
+            for (next_sep = strcasestr (elem, pct_sep); next_sep;
+                next_sep = strcasestr (next_sep + 1, pct_sep)) {
+              *next_sep = *sep;
+              memmove (next_sep + 1, next_sep + pct_sep_len,
+                  strlen (next_sep + pct_sep_len) + 1);
+            }
+          }
+          if (unescape) {
+            *next_elem = g_uri_unescape_string (elem, NULL);
+            g_free (elem);
+            elem = *next_elem;
+          }
+          new_list = g_list_append (new_list, g_strdup (elem));
+        }
+      }
+    }
+    g_strfreev (split_str);
+    if (convert && !unescape)
+      g_free (pct_sep);
+  }
+
+  return new_list;
+}
+
+static GHashTable *
+_gst_uri_string_to_table (const gchar * str, const gchar * part_sep,
+    const gchar * kv_sep, gboolean convert, gboolean unescape)
+{
+  GHashTable *new_table = NULL;
+
+  if (str) {
+    gchar *pct_part_sep = NULL, *pct_kv_sep = NULL;
+    gchar **split_parts;
+
+    new_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+    if (convert && !unescape) {
+      pct_part_sep = g_strdup_printf ("%%%2.2X", (guint) (*part_sep));
+      pct_kv_sep = g_strdup_printf ("%%%2.2X", (guint) (*kv_sep));
+    }
+
+    split_parts = g_strsplit (str, part_sep, -1);
+    if (split_parts) {
+      gchar **next_part;
+      for (next_part = split_parts; *next_part; next_part += 1) {
+        gchar *part = *next_part;
+        gchar *kv_sep_pos;
+        gchar *key, *value;
+        /* if we are converting percent encoded versions of separators then
+         *  substitute the part separator now. */
+        if (convert && !unescape) {
+          gchar *next_sep;
+          for (next_sep = strcasestr (part, pct_part_sep); next_sep;
+              next_sep = strcasestr (next_sep + 1, pct_part_sep)) {
+            *next_sep = *part_sep;
+            memmove (next_sep + 1, next_sep + 3, strlen (next_sep + 3) + 1);
+          }
+        }
+        /* find the key/value separator within the part */
+        kv_sep_pos = g_strstr_len (part, -1, kv_sep);
+        if (kv_sep_pos == NULL) {
+          if (unescape) {
+            key = g_uri_unescape_string (part, NULL);
+          } else {
+            key = g_strdup (part);
+          }
+          value = NULL;
+        } else {
+          if (unescape) {
+            key = g_uri_unescape_segment (part, kv_sep_pos, NULL);
+            value = g_uri_unescape_string (kv_sep_pos + 1, NULL);
+          } else {
+            key = g_strndup (part, kv_sep_pos - part);
+            value = g_strdup (kv_sep_pos + 1);
+          }
+        }
+        /* if we are converting percent encoded versions of separators then
+         *  substitute the key/value separator in both key and value now. */
+        if (convert && !unescape) {
+          gchar *next_sep;
+          for (next_sep = strcasestr (key, pct_kv_sep); next_sep;
+              next_sep = strcasestr (next_sep + 1, pct_kv_sep)) {
+            *next_sep = *kv_sep;
+            memmove (next_sep + 1, next_sep + 3, strlen (next_sep + 3) + 1);
+          }
+          if (value) {
+            for (next_sep = strcasestr (value, pct_kv_sep); next_sep;
+                next_sep = strcasestr (next_sep + 1, pct_kv_sep)) {
+              *next_sep = *kv_sep;
+              memmove (next_sep + 1, next_sep + 3, strlen (next_sep + 3) + 1);
+            }
+          }
+        }
+        /* add value to the table */
+        g_hash_table_insert (new_table, key, value);
+      }
+    }
+    /* tidy up */
+    g_strfreev (split_parts);
+    if (convert && !unescape) {
+      g_free (pct_part_sep);
+      g_free (pct_kv_sep);
+    }
+  }
+
+  return new_table;
+}
+
+
+/*
+ * Method definitions.
+ */
+
+/**
+ * gst_uri_new:
+ * @scheme: (nullable): The scheme for the new URI.
+ * @userinfo: (nullable): The user-info for the new URI.
+ * @host: (nullable): The host name for the new URI.
+ * @port: The port number for the new URI or %GST_URI_NO_PORT.
+ * @path: (nullable): The path for the new URI with '/' separating path
+ *                      elements.
+ * @query: (nullable): The query string for the new URI with '&' separating
+ *                       query elements. Elements containing '&' characters
+ *                       should encode them as "&percnt;26".
+ * @fragment: (nullable): The fragment name for the new URI.
+ *
+ * Creates a new #GstUri object with the given URI parts. The path and query
+ * strings will be broken down into their elements. All strings should not be
+ * escaped except where indicated.
+ *
+ * Returns: (transfer full): A new #GstUri object.
+ *
+ * Since: 1.6
+ */
+GstUri *
+gst_uri_new (const gchar * scheme, const gchar * userinfo, const gchar * host,
+    guint port, const gchar * path, const gchar * query, const gchar * fragment)
+{
+  GstUri *new_uri;
+
+  new_uri = _gst_uri_new ();
+  if (new_uri) {
+    new_uri->scheme = g_strdup (scheme);
+    new_uri->userinfo = g_strdup (userinfo);
+    new_uri->host = g_strdup (host);
+    new_uri->port = port;
+    new_uri->path = _gst_uri_string_to_list (path, "/", FALSE, FALSE);
+    new_uri->query = _gst_uri_string_to_table (query, "&", "=", TRUE, FALSE);
+    new_uri->fragment = g_strdup (fragment);
+  }
+
+  return new_uri;
+}
+
+/**
+ * gst_uri_new_with_base:
+ * @base: (transfer none)(nullable): The base URI to join the new URI to.
+ * @scheme: (nullable): The scheme for the new URI.
+ * @userinfo: (nullable): The user-info for the new URI.
+ * @host: (nullable): The host name for the new URI.
+ * @port: The port number for the new URI or %GST_URI_NO_PORT.
+ * @path: (nullable): The path for the new URI with '/' separating path
+ *                      elements.
+ * @query: (nullable): The query string for the new URI with '&' separating
+ *                       query elements. Elements containing '&' characters
+ *                       should encode them as "&percnt;26".
+ * @fragment: (nullable): The fragment name for the new URI.
+ *
+ * Like gst_uri_new(), but joins the new URI onto a base URI.
+ *
+ * Returns: (transfer full): The new URI joined onto @base.
+ *
+ * Since: 1.6
+ */
+GstUri *
+gst_uri_new_with_base (GstUri * base, const gchar * scheme,
+    const gchar * userinfo, const gchar * host, guint port, const gchar * path,
+    const gchar * query, const gchar * fragment)
+{
+  GstUri *new_rel_uri;
+  GstUri *new_uri;
+
+  g_return_val_if_fail (base == NULL || GST_IS_URI (base), NULL);
+
+  new_rel_uri = gst_uri_new (scheme, userinfo, host, port, path, query,
+      fragment);
+  new_uri = gst_uri_join (base, new_rel_uri);
+  gst_uri_unref (new_rel_uri);
+
+  return new_uri;
+}
+
+/**
+ * gst_uri_from_string:
+ * @uri: The URI string to parse.
+ *
+ * Parses a URI string into a new #GstUri object. Will return NULL if the URI
+ * cannot be parsed.
+ *
+ * Returns: (transfer full)(nullable): A new #GstUri object, or NULL.
+ *
+ * Since: 1.6
+ */
+GstUri *
+gst_uri_from_string (const gchar * uri)
+{
+  const gchar *orig_uri = uri;
+  GstUri *uri_obj;
+
+  uri_obj = _gst_uri_new ();
+
+  if (uri_obj && uri != NULL) {
+    int i = 0;
+
+    /* be helpful and skip initial white space */
+    while (*uri == '\v' || g_ascii_isspace (*uri))
+      uri++;
+
+    if (g_ascii_isalpha (uri[i])) {
+      /* find end of scheme name */
+      i++;
+      while (g_ascii_isalnum (uri[i]) || uri[i] == '+' || uri[i] == '-' ||
+          uri[i] == '.')
+        i++;
+    }
+    if (i > 0 && uri[i] == ':') {
+      /* get scheme */
+      uri_obj->scheme = g_strndup (uri, i);
+      uri += i + 1;
+    }
+    if (uri[0] == '/' && uri[1] == '/') {
+      const gchar *eoa, *eoui, *eoh, *reoh;
+      /* get authority [userinfo@]host[:port] */
+      uri += 2;
+      /* find end of authority */
+      eoa = uri + strcspn (uri, "/?#");
+
+      /* find end of userinfo */
+      eoui = strchr (uri, '@');
+      if (eoui != NULL && eoui < eoa) {
+        uri_obj->userinfo = g_uri_unescape_segment (uri, eoui, NULL);
+        uri = eoui + 1;
+      }
+      /* find end of host */
+      if (uri[0] == '[') {
+        eoh = strchr (uri, ']');
+        if (eoh == NULL || eoh > eoa) {
+          GST_DEBUG ("Unable to parse the host part of the URI '%s'.",
+              orig_uri);
+          _gst_uri_free (uri_obj);
+          return NULL;
+        }
+        reoh = eoh + 1;
+        uri++;
+      } else {
+        reoh = eoh = strchr (uri, ':');
+        if (eoh == NULL || eoh > eoa)
+          reoh = eoh = eoa;
+      }
+      /* don't capture empty host strings */
+      if (eoh != uri)
+        uri_obj->host = g_uri_unescape_segment (uri, eoh, NULL);
+
+      uri = reoh;
+      if (uri < eoa) {
+        /* if port number is malformed then we can't parse this */
+        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);
+          return NULL;
+        }
+        /* otherwise treat port as unsigned decimal number */
+        uri++;
+        while (uri < eoa) {
+          uri_obj->port = uri_obj->port * 10 + g_ascii_digit_value (*uri);
+          uri++;
+        }
+      }
+      uri = eoa;
+    }
+    if (uri != NULL && uri[0] != '\0') {
+      /* get path */
+      size_t len;
+      len = strcspn (uri, "?#");
+      if (uri[len] == '\0') {
+        uri_obj->path = _gst_uri_string_to_list (uri, "/", FALSE, TRUE);
+        uri = NULL;
+      } else {
+        if (len > 0) {
+          gchar *path_str = g_strndup (uri, len);
+          uri_obj->path = _gst_uri_string_to_list (path_str, "/", FALSE, TRUE);
+          g_free (path_str);
+        }
+        uri += len;
+      }
+    }
+    if (uri != NULL && uri[0] == '?') {
+      /* get query */
+      gchar *eoq;
+      eoq = strchr (++uri, '#');
+      if (eoq == NULL) {
+        uri_obj->query = _gst_uri_string_to_table (uri, "&", "=", TRUE, TRUE);
+        uri = NULL;
+      } else {
+        if (eoq != uri) {
+          gchar *query_str = g_strndup (uri, eoq - uri);
+          uri_obj->query = _gst_uri_string_to_table (query_str, "&", "=", TRUE,
+              TRUE);
+          g_free (query_str);
+        }
+        uri = eoq;
+      }
+    }
+    if (uri != NULL && uri[0] == '#') {
+      uri_obj->fragment = g_uri_unescape_string (uri + 1, NULL);
+    }
+  }
+
+  return uri_obj;
+}
+
+/**
+ * gst_uri_from_string_with_base:
+ * @base: (transfer none)(nullable): The base URI to join the new URI with.
+ * @uri: The URI string to parse.
+ *
+ * Like gst_uri_from_string() but also joins with a base URI.
+ *
+ * Returns: (transfer full): A new #GstUri object.
+ *
+ * Since: 1.6
+ */
+GstUri *
+gst_uri_from_string_with_base (GstUri * base, const gchar * uri)
+{
+  GstUri *new_rel_uri;
+  GstUri *new_uri;
+
+  g_return_val_if_fail (base == NULL || GST_IS_URI (base), NULL);
+
+  new_rel_uri = gst_uri_from_string (uri);
+  new_uri = gst_uri_join (base, new_rel_uri);
+  gst_uri_unref (new_rel_uri);
+
+  return new_uri;
+}
+
+/**
+ * gst_uri_equal:
+ * @first: First #GstUri to compare.
+ * @second: Second #GstUri to compare.
+ *
+ * Compares two #GstUri objects to see if they represent the same normalized
+ * URI.
+ *
+ * Returns: %TRUE if the normalized versions of the two URI's would be equal.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_equal (const GstUri * first, const GstUri * second)
+{
+  gchar *first_norm = NULL, *second_norm = NULL;
+  GList *first_norm_list = NULL, *second_norm_list = NULL;
+  const gchar *first_cmp, *second_cmp;
+  GHashTableIter table_iter;
+  gpointer key, value;
+  int result;
+
+  g_return_val_if_fail ((first == NULL || GST_IS_URI (first)) &&
+      (second == NULL || GST_IS_URI (second)), FALSE);
+
+  if (first == second)
+    return TRUE;
+
+  if (first == NULL || second == NULL)
+    return FALSE;
+
+  if (first->port != second->port)
+    return FALSE;
+
+/* work out a version of field value (normalized or not) to compare.
+ * first_cmp, second_cmp will be the values to compare later.
+ * first_norm, second_norm will be non-NULL if normalized versions are used,
+ *  and need to be freed later.
+ */
+#define GST_URI_NORMALIZED_FIELD(pos, field, norm_fn, flags) \
+  pos##_cmp = pos->field; \
+  if (_gst_uri_first_non_normalized_char ((gchar*)pos##_cmp, flags) != NULL) { \
+    pos##_norm = g_strdup (pos##_cmp); \
+    norm_fn (pos##_norm); \
+    pos##_cmp = pos##_norm; \
+  }
+
+/* compare two string values, normalizing if needed */
+#define GST_URI_NORMALIZED_CMP_STR(field, norm_fn, flags) \
+  GST_URI_NORMALIZED_FIELD (first, field, norm_fn, flags) \
+  GST_URI_NORMALIZED_FIELD (second, field, norm_fn, flags) \
+  result = g_strcmp0 (first_cmp, second_cmp); \
+  g_free (first_norm); \
+  first_norm = NULL; \
+  g_free (second_norm); \
+  second_norm = NULL; \
+  if (result != 0) return FALSE
+
+/* compare two string values */
+#define GST_URI_CMP_STR(field) \
+  if (g_strcmp0 (first->field, second->field) != 0) return FALSE
+
+/* compare two GLists, normalize lists if needed before comparison */
+#define GST_URI_NORMALIZED_CMP_LIST(field, norm_fn, copy_fn, cmp_fn, free_fn) \
+  first_norm_list = g_list_copy_deep (first->field, (GCopyFunc) copy_fn, NULL); \
+  norm_fn (&first_norm_list); \
+  second_norm_list = g_list_copy_deep (second->field, (GCopyFunc) copy_fn, NULL); \
+  norm_fn (&second_norm_list); \
+  result = _gst_uri_compare_lists (first_norm_list, second_norm_list, (GCompareFunc) cmp_fn); \
+  g_list_free_full (first_norm_list, free_fn); \
+  g_list_free_full (second_norm_list, free_fn); \
+  if (result != 0) return FALSE
+
+  GST_URI_CMP_STR (userinfo);
+
+  GST_URI_CMP_STR (fragment);
+
+  GST_URI_NORMALIZED_CMP_STR (scheme, _gst_uri_normalize_scheme,
+      _GST_URI_NORMALIZE_LOWERCASE);
+
+  GST_URI_NORMALIZED_CMP_STR (host, _gst_uri_normalize_hostname,
+      _GST_URI_NORMALIZE_LOWERCASE);
+
+  GST_URI_NORMALIZED_CMP_LIST (path, _gst_uri_normalize_path, g_strdup,
+      g_strcmp0, g_free);
+
+  if (first->query == NULL && second->query != NULL)
+    return FALSE;
+  if (first->query != NULL && second->query == NULL)
+    return FALSE;
+  if (first->query != NULL) {
+    if (g_hash_table_size (first->query) != g_hash_table_size (second->query))
+      return FALSE;
+
+    g_hash_table_iter_init (&table_iter, first->query);
+    while (g_hash_table_iter_next (&table_iter, &key, &value)) {
+      if (!g_hash_table_contains (second->query, key))
+        return FALSE;
+      result = g_strcmp0 (g_hash_table_lookup (second->query, key), value);
+      if (result != 0)
+        return FALSE;
+    }
+  }
+#undef GST_URI_NORMALIZED_CMP_STR
+#undef GST_URI_CMP_STR
+#undef GST_URI_NORMALIZED_CMP_LIST
+#undef GST_URI_NORMALIZED_FIELD
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_join:
+ * @base_uri: (transfer none)(nullable): The base URI to join another to.
+ * @ref_uri: (transfer none)(nullable): The reference URI to join onto the
+ *                                        base URI.
+ *
+ * Join a reference URI onto a base URI using the method from RFC 3986.
+ * If either URI is %NULL then the other URI will be returned with the ref count
+ * increased.
+ *
+ * Returns: (transfer full): A #GstUri which represents the base with the
+ *                           reference URI joined on.
+ *
+ * Since: 1.6
+ */
+GstUri *
+gst_uri_join (GstUri * base_uri, GstUri * ref_uri)
+{
+  const gchar *r_scheme;
+  GstUri *t;
+
+  g_return_val_if_fail ((base_uri == NULL || GST_IS_URI (base_uri)) &&
+      (ref_uri == NULL || GST_IS_URI (ref_uri)), NULL);
+
+  if (base_uri == NULL && ref_uri == NULL)
+    return NULL;
+  if (base_uri == NULL) {
+    g_return_val_if_fail (GST_IS_URI (ref_uri), NULL);
+    return gst_uri_ref (ref_uri);
+  }
+  if (ref_uri == NULL) {
+    g_return_val_if_fail (GST_IS_URI (base_uri), NULL);
+    return gst_uri_ref (base_uri);
+  }
+
+  g_return_val_if_fail (GST_IS_URI (base_uri) && GST_IS_URI (ref_uri), NULL);
+
+  t = _gst_uri_new ();
+
+  if (t == NULL)
+    return t;
+
+  /* process according to RFC3986 */
+  r_scheme = ref_uri->scheme;
+  if (r_scheme != NULL && g_strcmp0 (base_uri->scheme, r_scheme) == 0) {
+    r_scheme = NULL;
+  }
+  if (r_scheme != NULL) {
+    t->scheme = g_strdup (r_scheme);
+    t->userinfo = g_strdup (ref_uri->userinfo);
+    t->host = g_strdup (ref_uri->host);
+    t->port = ref_uri->port;
+    t->path = _remove_dot_segments (ref_uri->path);
+    t->query = _gst_uri_copy_query_table (ref_uri->query);
+  } else {
+    if (ref_uri->host != NULL) {
+      t->userinfo = g_strdup (ref_uri->userinfo);
+      t->host = g_strdup (ref_uri->host);
+      t->port = ref_uri->port;
+      t->path = _remove_dot_segments (ref_uri->path);
+      t->query = _gst_uri_copy_query_table (ref_uri->query);
+    } else {
+      if (ref_uri->path == NULL) {
+        t->path = g_list_copy_deep (base_uri->path, (GCopyFunc) g_strdup, NULL);
+        if (ref_uri->query != NULL)
+          t->query = _gst_uri_copy_query_table (ref_uri->query);
+        else
+          t->query = _gst_uri_copy_query_table (base_uri->query);
+      } else {
+        if (ref_uri->path->data == NULL)
+          t->path = _remove_dot_segments (ref_uri->path);
+        else {
+          GList *mrgd = _merge (base_uri->path, ref_uri->path);
+          t->path = _remove_dot_segments (mrgd);
+          g_list_free_full (mrgd, g_free);
+        }
+        t->query = _gst_uri_copy_query_table (ref_uri->query);
+      }
+      t->userinfo = g_strdup (base_uri->userinfo);
+      t->host = g_strdup (base_uri->host);
+      t->port = base_uri->port;
+    }
+    t->scheme = g_strdup (base_uri->scheme);
+  }
+  t->fragment = g_strdup (ref_uri->fragment);
+
+  return t;
+}
+
+/**
+ * gst_uri_join_strings:
+ * @base_uri: The percent-encoded base URI.
+ * @ref_uri: The percent-encoded reference URI to join to the @base_uri.
+ *
+ * This is a convenience function to join two URI strings and return the result.
+ * The returned string should be g_free()'d after use.
+ *
+ * Returns: (transfer full): A string representing the percent-encoded join of
+ *          the two URIs.
+ *
+ * Since: 1.6
+ */
+gchar *
+gst_uri_join_strings (const gchar * base_uri, const gchar * ref_uri)
+{
+  GstUri *base, *result;
+  gchar *result_uri;
+
+  base = gst_uri_from_string (base_uri);
+  result = gst_uri_from_string_with_base (base, ref_uri);
+  result_uri = gst_uri_to_string (result);
+  gst_uri_unref (base);
+  gst_uri_unref (result);
+
+  return result_uri;
+}
+
+/**
+ * gst_uri_is_writable:
+ * @uri: The #GstUri object to test.
+ *
+ * Check if it is safe to write to this #GstUri.
+ *
+ * Check if the refcount of @uri is exactly 1, meaning that no other
+ * reference exists to the #GstUri and that the #GstUri is therefore writable.
+ *
+ * Modification of a #GstUri should only be done after verifying that it is
+ * writable.
+ *
+ * Returns: %TRUE if it is safe to write to the object.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_is_writable (const GstUri * uri)
+{
+  g_return_val_if_fail (GST_IS_URI (uri), FALSE);
+  return gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (uri));
+}
+
+/**
+ * gst_uri_make_writable:
+ * @uri: (transfer full): The #GstUri object to make writable.
+ *
+ * Make the #GstUri writable.
+ *
+ * Checks if @uri is writable, and if so the original object is returned. If
+ * not, then a writable copy is made and returned. This gives away the
+ * reference to @uri and returns a reference to the new #GstUri.
+ * If @uri is %NULL then %NULL is returned.
+ *
+ * Returns: (transfer full): A writable version of @uri.
+ *
+ * Since: 1.6
+ */
+GstUri *
+gst_uri_make_writable (GstUri * uri)
+{
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  return
+      GST_URI_CAST (gst_mini_object_make_writable (GST_MINI_OBJECT_CAST (uri)));
+}
+
+/**
+ * gst_uri_to_string:
+ * @uri: This #GstUri to convert to a string.
+ *
+ * Convert the URI to a string.
+ *
+ * Returns the URI as held in this object as a #gchar* nul-terminated string.
+ * The caller should g_free() the string once they are finished with it.
+ * The string is put together as described in RFC 3986.
+ *
+ * Returns: (transfer full): The string version of the URI.
+ *
+ * Since: 1.6
+ */
+gchar *
+gst_uri_to_string (const GstUri * uri)
+{
+  GString *uri_str;
+  gchar *escaped;
+
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+
+  uri_str = g_string_new (NULL);
+
+  if (uri->scheme != NULL)
+    g_string_append_printf (uri_str, "%s:", uri->scheme);
+
+  if (uri->userinfo != NULL || uri->host != NULL ||
+      uri->port != GST_URI_NO_PORT)
+    g_string_append (uri_str, "//");
+
+  if (uri->userinfo != NULL) {
+    escaped = _gst_uri_escape_userinfo (uri->userinfo);
+    g_string_append_printf (uri_str, "%s@", escaped);
+    g_free (escaped);
+  }
+
+  if (uri->host != NULL) {
+    if (strchr (uri->host, ':') != NULL) {
+      escaped = _gst_uri_escape_host_colon (uri->host);
+      g_string_append_printf (uri_str, "[%s]", escaped);
+      g_free (escaped);
+    } else {
+      escaped = _gst_uri_escape_host (uri->host);
+      g_string_append (uri_str, escaped);
+      g_free (escaped);
+    }
+  }
+
+  if (uri->port != GST_URI_NO_PORT)
+    g_string_append_printf (uri_str, ":%u", uri->port);
+
+  if (uri->path != NULL) {
+    escaped = gst_uri_get_path_string (uri);
+    g_string_append (uri_str, escaped);
+    g_free (escaped);
+  }
+
+  if (uri->query) {
+    g_string_append (uri_str, "?");
+    escaped = gst_uri_get_query_string (uri);
+    g_string_append (uri_str, escaped);
+    g_free (escaped);
+  }
+
+  if (uri->fragment != NULL) {
+    escaped = _gst_uri_escape_fragment (uri->fragment);
+    g_string_append_printf (uri_str, "#%s", escaped);
+    g_free (escaped);
+  }
+
+  return g_string_free (uri_str, FALSE);
+}
+
+/**
+ * gst_uri_is_normalized:
+ * @uri: The #GstUri to test to see if it is normalized.
+ *
+ * Tests the @uri to see if it is normalized. A %NULL @uri is considered to be
+ * normalized.
+ *
+ * Returns: TRUE if the URI is normalized or is %NULL.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_is_normalized (const GstUri * uri)
+{
+  GList *new_path;
+  gboolean ret;
+
+  if (uri == NULL)
+    return TRUE;
+
+  g_return_val_if_fail (GST_IS_URI (uri), FALSE);
+
+  /* check for non-normalized characters in uri parts */
+  if (_gst_uri_first_non_normalized_char (uri->scheme,
+          _GST_URI_NORMALIZE_LOWERCASE) != NULL ||
+      /*_gst_uri_first_non_normalized_char (uri->userinfo,
+          _GST_URI_NORMALIZE_PERCENTAGES) != NULL || */
+      _gst_uri_first_non_normalized_char (uri->host,
+          _GST_URI_NORMALIZE_LOWERCASE /*| _GST_URI_NORMALIZE_PERCENTAGES */ )
+      != NULL
+      /*|| _gst_uri_first_non_normalized_char (uri->path,
+         _GST_URI_NORMALIZE_PERCENTAGES) != NULL
+         || _gst_uri_first_non_normalized_char (uri->query,
+         _GST_URI_NORMALIZE_PERCENTAGES) != NULL
+         || _gst_uri_first_non_normalized_char (uri->fragment,
+         _GST_URI_NORMALIZE_PERCENTAGES) != NULL */ )
+    return FALSE;
+
+  /* also check path has had dot segments removed */
+  new_path = _remove_dot_segments (uri->path);
+  ret =
+      (_gst_uri_compare_lists (new_path, uri->path,
+          (GCompareFunc) g_strcmp0) == 0);
+  g_list_free_full (new_path, g_free);
+  return ret;
+}
+
+/**
+ * gst_uri_normalize:
+ * @uri: (transfer none): The #GstUri to normalize.
+ *
+ * Normalization will remove extra path segments ("." and "..") from the URI. It
+ * will also convert the scheme and host name to lower case and any
+ * percent-encoded values to uppercase.
+ *
+ * The #GstUri object must be writable. Check with gst_uri_is_writable() or use
+ * gst_uri_make_writable() first.
+ *
+ * Returns: TRUE if the URI was modified.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_normalize (GstUri * uri)
+{
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  return _gst_uri_normalize_scheme (uri->scheme) |
+      _gst_uri_normalize_userinfo (uri->userinfo) |
+      _gst_uri_normalize_hostname (uri->host) |
+      _gst_uri_normalize_path (&uri->path) |
+      _gst_uri_normalize_query (uri->query) |
+      _gst_uri_normalize_fragment (uri->fragment);
+}
+
+/**
+ * gst_uri_get_scheme:
+ * @uri: (nullable): This #GstUri object.
+ *
+ * Get the scheme name from the URI or %NULL if it doesn't exist.
+ * If @uri is %NULL then returns %NULL.
+ *
+ * Returns: The scheme from the #GstUri object or %NULL.
+ */
+const gchar *
+gst_uri_get_scheme (const GstUri * uri)
+{
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), NULL);
+  return (uri ? uri->scheme : NULL);
+}
+
+/**
+ * gst_uri_set_scheme:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @scheme: The new scheme to set or %NULL to unset the scheme.
+ *
+ * Set or unset the scheme for the URI.
+ *
+ * Returns: %TRUE if the scheme was set/unset successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_scheme (GstUri * uri, const gchar * scheme)
+{
+  if (!uri)
+    return scheme == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  g_free (uri->scheme);
+  uri->scheme = g_strdup (scheme);
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_userinfo:
+ * @uri: (nullable): This #GstUri object.
+ *
+ * Get the userinfo (usually in the form "username:password") from the URI
+ * or %NULL if it doesn't exist. If @uri is %NULL then returns %NULL.
+ *
+ * Returns: The userinfo from the #GstUri object or %NULL.
+ *
+ * Since: 1.6
+ */
+const gchar *
+gst_uri_get_userinfo (const GstUri * uri)
+{
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), NULL);
+  return (uri ? uri->userinfo : NULL);
+}
+
+/**
+ * gst_uri_set_userinfo:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @userinfo: The new user-information string to set or %NULL to unset.
+ *
+ * Set or unset the user information for the URI.
+ *
+ * Returns: %TRUE if the user information was set/unset successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_userinfo (GstUri * uri, const gchar * userinfo)
+{
+  if (!uri)
+    return userinfo == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  g_free (uri->userinfo);
+  uri->userinfo = g_strdup (userinfo);
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_host:
+ * @uri: (nullable): This #GstUri object.
+ *
+ * Get the host name from the URI or %NULL if it doesn't exist.
+ * If @uri is %NULL then returns %NULL.
+ *
+ * Returns: The host name from the #GstUri object or %NULL.
+ *
+ * Since: 1.6
+ */
+const gchar *
+gst_uri_get_host (const GstUri * uri)
+{
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), NULL);
+  return (uri ? uri->host : NULL);
+}
+
+/**
+ * gst_uri_set_host:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @host: The new host string to set or %NULL to unset.
+ *
+ * Set or unset the host for the URI.
+ *
+ * Returns: %TRUE if the host was set/unset successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_host (GstUri * uri, const gchar * host)
+{
+  if (!uri)
+    return host == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  g_free (uri->host);
+  uri->host = g_strdup (host);
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_port:
+ * @uri: (nullable): This #GstUri object.
+ *
+ * Get the port number from the URI or %GST_URI_NO_PORT if it doesn't exist.
+ * If @uri is %NULL then returns %GST_URI_NO_PORT.
+ *
+ * Returns: The port number from the #GstUri object or %GST_URI_NO_PORT.
+ *
+ * Since: 1.6
+ */
+guint
+gst_uri_get_port (const GstUri * uri)
+{
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), GST_URI_NO_PORT);
+  return (uri ? uri->port : GST_URI_NO_PORT);
+}
+
+/**
+ * gst_uri_set_port:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @port: The new port number to set or %GST_URI_NO_PORT to unset.
+ *
+ * Set or unset the port number for the URI.
+ *
+ * Returns: %TRUE if the port number was set/unset successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_port (GstUri * uri, guint port)
+{
+  if (!uri)
+    return port == GST_URI_NO_PORT;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  uri->port = port;
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_path:
+ * @uri: The #GstUri to get the path from.
+ *
+ * Extract the path string from the URI object.
+ *
+ * Returns: (transfer full): The path from the URI. Once finished with the
+ *                           string should be g_free()'d.
+ *
+ * Since: 1.6
+ */
+gchar *
+gst_uri_get_path (const GstUri * uri)
+{
+  GList *path_segment;
+  const gchar *sep = "";
+  GString *ret;
+
+  if (!uri)
+    return NULL;
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  if (!uri->path)
+    return NULL;
+
+  ret = g_string_new (NULL);
+
+  for (path_segment = uri->path; path_segment;
+      path_segment = path_segment->next) {
+    g_string_append (ret, sep);
+    if (path_segment->data) {
+      g_string_append (ret, path_segment->data);
+    }
+    sep = "/";
+  }
+
+  return g_string_free (ret, FALSE);
+}
+
+/**
+ * gst_uri_set_path:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @path: The new path to set with path segments separated by '/', or use %NULL
+ *        to unset the path.
+ *
+ * Sets or unsets the path in the URI.
+ *
+ * Returns: %TRUE if the path was set successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_path (GstUri * uri, const gchar * path)
+{
+  if (!uri)
+    return path == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  g_list_free_full (uri->path, g_free);
+  uri->path = _gst_uri_string_to_list (path, "/", FALSE, FALSE);
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_path_string:
+ * @uri: The #GstUri to get the path from.
+ *
+ * Extract the path string from the URI object as a percent encoded URI path.
+ *
+ * Returns: (transfer full): The path from the URI. Once finished with the
+ *                           string should be g_free()'d.
+ *
+ * Since: 1.6
+ */
+gchar *
+gst_uri_get_path_string (const GstUri * uri)
+{
+  GList *path_segment;
+  const gchar *sep = "";
+  GString *ret;
+  gchar *escaped;
+
+  if (!uri)
+    return NULL;
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  if (!uri->path)
+    return NULL;
+
+  ret = g_string_new (NULL);
+
+  for (path_segment = uri->path; path_segment;
+      path_segment = path_segment->next) {
+    g_string_append (ret, sep);
+    if (path_segment->data) {
+      escaped = _gst_uri_escape_path_segment (path_segment->data);
+      g_string_append (ret, escaped);
+      g_free (escaped);
+    }
+    sep = "/";
+  }
+
+  return g_string_free (ret, FALSE);
+}
+
+/**
+ * gst_uri_set_path_string:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @path: The new percent encoded path to set with path segments separated by
+ * '/', or use %NULL to unset the path.
+ *
+ * Sets or unsets the path in the URI.
+ *
+ * Returns: %TRUE if the path was set successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_path_string (GstUri * uri, const gchar * path)
+{
+  if (!uri)
+    return path == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  g_list_free_full (uri->path, g_free);
+  uri->path = _gst_uri_string_to_list (path, "/", FALSE, TRUE);
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_path_segments:
+ * @uri: (nullable): The #GstUri to get the path from.
+ *
+ * Get a list of path segments from the URI.
+ *
+ * Returns: (transfer full)(element-type gchar*): A #GList of path segment
+ *          strings or %NULL if no path segments are available. Free the list
+ *          when no longer needed with g_list_free_full(list, g_free).
+ *
+ * Since: 1.6
+ */
+GList *
+gst_uri_get_path_segments (const GstUri * uri)
+{
+  GList *ret = NULL;
+
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), NULL);
+
+  if (uri) {
+    ret = g_list_copy_deep (uri->path, (GCopyFunc) g_strdup, NULL);
+  }
+
+  return ret;
+}
+
+/**
+ * gst_uri_set_path_segments:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @path_segments: (transfer full)(nullable)(element-type gchar*): The new
+ *                 path list to set.
+ *
+ * Replace the path segments list in the URI.
+ *
+ * Returns: %TRUE if the path segments were set successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_path_segments (GstUri * uri, GList * path_segments)
+{
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), FALSE);
+
+  if (!uri) {
+    if (path_segments)
+      g_list_free_full (path_segments, g_free);
+    return path_segments == NULL;
+  }
+
+  g_return_val_if_fail (gst_uri_is_writable (uri), FALSE);
+
+  g_list_free_full (uri->path, g_free);
+  uri->path = path_segments;
+  return TRUE;
+}
+
+/**
+ * gst_uri_append_path:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @relative_path: Relative path to append to the end of the current path.
+ *
+ * Append a path onto the end of the path in the URI. The path is not
+ * normalized, call #gst_uri_normalize() to normalize the path.
+ *
+ * Returns: %TRUE if the path was appended successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_append_path (GstUri * uri, const gchar * relative_path)
+{
+  GList *rel_path_list;
+
+  if (!uri)
+    return relative_path == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+  if (!relative_path)
+    return TRUE;
+
+  if (uri->path) {
+    GList *last_elem = g_list_last (uri->path);
+    if (last_elem->data == NULL) {
+      uri->path = g_list_delete_link (uri->path, last_elem);
+    }
+  }
+  rel_path_list = _gst_uri_string_to_list (relative_path, "/", FALSE, FALSE);
+  /* if path was absolute, make it relative by removing initial NULL element */
+  if (rel_path_list && rel_path_list->data == NULL) {
+    rel_path_list = g_list_delete_link (rel_path_list, rel_path_list);
+  }
+  uri->path = g_list_concat (uri->path, rel_path_list);
+  return TRUE;
+}
+
+/**
+ * gst_uri_append_path_segment:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @path_segment: The path segment string to append to the URI path.
+ *
+ * Append a single path segment onto the end of the URI path.
+ *
+ * Returns: %TRUE if the path was appended successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_append_path_segment (GstUri * uri, const gchar * path_segment)
+{
+  if (!uri)
+    return path_segment == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+  if (!path_segment)
+    return TRUE;
+
+  /* if base path ends in a directory (i.e. last element is NULL), remove it */
+  if (uri->path && g_list_last (uri->path)->data == NULL) {
+    uri->path = g_list_delete_link (uri->path, g_list_last (uri->path));
+  }
+  uri->path = g_list_append (uri->path, g_strdup (path_segment));
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_query_string:
+ * @uri: (nullable): The #GstUri to get the query string from.
+ *
+ * Get a percent encoded URI query string from the @uri.
+ *
+ * Returns: (transfer full): A percent encoded query string. Use g_free() when
+ *          no longer needed.
+ *
+ * Since: 1.6
+ */
+gchar *
+gst_uri_get_query_string (const GstUri * uri)
+{
+  GHashTableIter iter;
+  gpointer key, value;
+  const gchar *sep = "";
+  gchar *escaped;
+  GString *ret;
+
+  if (!uri)
+    return NULL;
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  if (!uri->query)
+    return NULL;
+
+  ret = g_string_new (NULL);
+  g_hash_table_iter_init (&iter, uri->query);
+  while (g_hash_table_iter_next (&iter, &key, &value)) {
+    g_string_append (ret, sep);
+    escaped = _gst_uri_escape_http_query_element (key);
+    g_string_append (ret, escaped);
+    g_free (escaped);
+    if (value) {
+      escaped = _gst_uri_escape_http_query_element (value);
+      g_string_append_printf (ret, "=%s", escaped);
+      g_free (escaped);
+    }
+    sep = "&";
+  }
+
+  return g_string_free (ret, FALSE);
+}
+
+/**
+ * gst_uri_set_query_string:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @query: The new percent encoded query string to use to populate the query
+ *        table, or use %NULL to unset the query table.
+ *
+ * Sets or unsets the query table in the URI.
+ *
+ * Returns: %TRUE if the query table was set successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_query_string (GstUri * uri, const gchar * query)
+{
+  if (!uri)
+    return query == NULL;
+
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  if (uri->query)
+    g_hash_table_unref (uri->query);
+  uri->query = _gst_uri_string_to_table (query, "&", "=", TRUE, TRUE);
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_get_query_table:
+ * @uri: (nullable): The #GstUri to get the query table from.
+ *
+ * Get the query table from the URI. Keys and values in the table are freed
+ * with g_free when they are deleted. A value may be %NULL to indicate that
+ * the key should appear in the query string in the URI, but does not have a
+ * value. Free the returned #GHashTable with #g_hash_table_unref() when it is
+ * no longer required. Modifying this hash table will modify the query in the
+ * URI.
+ *
+ * Returns: (transfer full)(element-type gchar* gchar*): The query hash table
+ *          from the URI.
+ *
+ * Since: 1.6
+ */
+GHashTable *
+gst_uri_get_query_table (const GstUri * uri)
+{
+  if (!uri)
+    return NULL;
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  if (!uri->query)
+    return NULL;
+
+  return g_hash_table_ref (uri->query);
+}
+
+/**
+ * gst_uri_set_query_table:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @query_table: (transfer none)(nullable)(element-type gchar* gchar*): The new
+ *               query table to use.
+ *
+ * Set the query table to use in the URI. The old table is unreferenced and a
+ * reference to the new one is used instead. A value if %NULL for @query_table
+ * will remove the query string from the URI.
+ *
+ * Returns: %TRUE if the new table was sucessfully used for the query table.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_query_table (GstUri * uri, GHashTable * query_table)
+{
+  GHashTable *old_table = NULL;
+
+  if (!uri)
+    return query_table == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  old_table = uri->query;
+  if (query_table)
+    uri->query = g_hash_table_ref (query_table);
+  else
+    uri->query = NULL;
+  if (old_table)
+    g_hash_table_unref (old_table);
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_set_query_value:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @query_key: (transfer none): The key for the query entry.
+ * @query_value: (transfer none)(nullable): The value for the key.
+ *
+ * This inserts or replaces a key in the query table. A @query_value of %NULL
+ * indicates that the key has no associated value, but will still be present in
+ * the query string.
+ *
+ * Returns: %TRUE if the query table was sucessfully updated.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_query_value (GstUri * uri, const gchar * query_key,
+    const gchar * query_value)
+{
+  if (!uri)
+    return FALSE;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  if (!uri->query) {
+    uri->query = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
+        g_free);
+  }
+  g_hash_table_insert (uri->query, g_strdup (query_key),
+      g_strdup (query_value));
+
+  return TRUE;
+}
+
+/**
+ * gst_uri_remove_query_key:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @query_key: The key to remove.
+ *
+ * Remove an entry from the query table by key.
+ *
+ * Returns: %TRUE if the key existed in the table and was removed.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_remove_query_key (GstUri * uri, const gchar * query_key)
+{
+  gboolean result;
+
+  if (!uri)
+    return FALSE;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+  if (!uri->query)
+    return FALSE;
+
+  result = g_hash_table_remove (uri->query, query_key);
+  /* if this was the last query entry, remove the query string completely */
+  if (result && g_hash_table_size (uri->query) == 0) {
+    g_hash_table_unref (uri->query);
+    uri->query = NULL;
+  }
+  return result;
+}
+
+/**
+ * gst_uri_query_has_key:
+ * @uri: (nullable): The #GstUri to examine.
+ * @query_key: The key to lookup.
+ *
+ * Check if there is a query table entry for the @query_key key.
+ *
+ * Returns: %TRUE if @query_key exists in the URI query table.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_query_has_key (const GstUri * uri, const gchar * query_key)
+{
+  if (!uri)
+    return FALSE;
+  g_return_val_if_fail (GST_IS_URI (uri), FALSE);
+  if (!uri->query)
+    return FALSE;
+
+  return g_hash_table_contains (uri->query, query_key);
+}
+
+/**
+ * gst_uri_get_query_value:
+ * @uri: (nullable): The #GstUri to examine.
+ * @query_key: The key to lookup.
+ *
+ * Get the value associated with the @query_key key. Will return %NULL if the
+ * key has no value or if the key does not exist in the URI query table. Because
+ * %NULL is returned for both missing keys and keys with no value, you should
+ * use gst_uri_query_has_key() to determine if a key is present in the URI
+ * query.
+ *
+ * Returns: The value for the given key, or %NULL if not found.
+ *
+ * Since: 1.6
+ */
+const gchar *
+gst_uri_get_query_value (const GstUri * uri, const gchar * query_key)
+{
+  if (!uri)
+    return NULL;
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  if (!uri->query)
+    return NULL;
+
+  return g_hash_table_lookup (uri->query, query_key);
+}
+
+/**
+ * gst_uri_get_query_keys:
+ * @uri: (nullable): The #GstUri to examine.
+ *
+ * Get a list of the query keys from the URI.
+ *
+ * Returns: (transfer container)(element-type gchar*): A list of keys from
+ *          the URI query. Free the list with g_list_free().
+ *
+ * Since: 1.6
+ */
+GList *
+gst_uri_get_query_keys (const GstUri * uri)
+{
+  if (!uri)
+    return NULL;
+  g_return_val_if_fail (GST_IS_URI (uri), NULL);
+  if (!uri->query)
+    return NULL;
+
+  return g_hash_table_get_keys (uri->query);
+}
+
+/**
+ * gst_uri_get_fragment:
+ * @uri: (nullable): This #GstUri object.
+ *
+ * Get the fragment name from the URI or %NULL if it doesn't exist.
+ * If @uri is %NULL then returns %NULL.
+ *
+ * Returns: The host name from the #GstUri object or %NULL.
+ *
+ * Since: 1.6
+ */
+const gchar *
+gst_uri_get_fragment (const GstUri * uri)
+{
+  g_return_val_if_fail (uri == NULL || GST_IS_URI (uri), NULL);
+  return (uri ? uri->fragment : NULL);
+}
+
+/**
+ * gst_uri_set_fragment:
+ * @uri: (transfer none)(nullable): The #GstUri to modify.
+ * @fragment: (nullable): The fragment string to set.
+ *
+ * Sets the fragment string in the URI. Use a value of %NULL in @fragment to
+ * unset the fragment string.
+ *
+ * Returns: %TRUE if the fragment was set/unset successfully.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_uri_set_fragment (GstUri * uri, const gchar * fragment)
+{
+  if (!uri)
+    return fragment == NULL;
+  g_return_val_if_fail (GST_IS_URI (uri) && gst_uri_is_writable (uri), FALSE);
+
+  g_free (uri->fragment);
+  uri->fragment = g_strdup (fragment);
+  return TRUE;
+}
diff --git a/gst/gsturi.h b/gst/gsturi.h
index 8a4a9cc..64dc65b 100644
--- a/gst/gsturi.h
+++ b/gst/gsturi.h
@@ -1,8 +1,10 @@
 /* GStreamer
  * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
  *                    2000 Wim Taymans <wtay@chello.be>
+ *                    2014 David Waring, British Broadcasting Corporation
+ *                             <david.waring@rd.bbc.co.uk>
  *
- * gsturi.h: Header for uri to element mappings
+ * gsturi.h: Header for uri to element mappings and URI manipulation.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -25,7 +27,11 @@
 #define __GST_URI_H__
 
 #include <glib.h>
+#include <glib-object.h>
 #include <gst/gstelement.h>
+#include <gst/gstconfig.h>
+
+#include "gstminiobject.h"
 
 G_BEGIN_DECLS
 
@@ -151,6 +157,159 @@
                                                      const gchar   * uri,
                                                      GError       ** error);
 
+/*
+ * GstUri Type macros.
+ */
+#define GST_TYPE_URI        (gst_uri_get_type ())
+#define GST_IS_URI(obj)	    (GST_IS_MINI_OBJECT_TYPE (obj, GST_TYPE_URI))
+#define GST_URI_CAST(obj)   ((GstUri *)(obj))
+#define GST_URI_CONST_CAST(obj) ((const GstUri *)(obj))
+#define GST_URI(obj)        (GST_URI_CAST(obj))
+
+/**
+ * GstUri:
+ *
+ * This is a private structure that holds the various parts of a parsed URI.
+ */
+struct _GstUri;
+typedef struct _GstUri GstUri;
+
+/**
+ * GST_URI_NO_PORT:
+ *
+ * Value for #GstUri<!-- -->.port to indicate no port number.
+ */
+#define GST_URI_NO_PORT 0
+
+/* used by GST_TYPE_URI */
+GType gst_uri_get_type (void);
+
+/*
+ * Method definitions.
+ */
+
+GstUri * gst_uri_new                   (const gchar * scheme,
+                                        const gchar * userinfo,
+                                        const gchar * host,
+                                        guint port,
+                                        const gchar * path,
+                                        const gchar * query,
+                                        const gchar * fragment) G_GNUC_MALLOC;
+GstUri * gst_uri_new_with_base         (GstUri * base,
+                                        const gchar * scheme,
+                                        const gchar * userinfo,
+                                        const gchar * host,
+                                        guint port,
+                                        const gchar * path,
+                                        const gchar * query,
+                                        const gchar * fragment) G_GNUC_MALLOC;
+GstUri * gst_uri_from_string           (const gchar * uri) G_GNUC_MALLOC;
+GstUri * gst_uri_from_string_with_base (GstUri * base,
+                                        const gchar * uri) G_GNUC_MALLOC;
+gboolean gst_uri_equal                 (const GstUri * first,
+                                        const GstUri * second);
+GstUri * gst_uri_join                  (GstUri * base_uri,
+                                        GstUri * ref_uri);
+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);
+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);
+const gchar * gst_uri_get_scheme       (const GstUri * uri);
+gboolean gst_uri_set_scheme            (GstUri * uri, const gchar * scheme);
+const gchar * gst_uri_get_userinfo     (const GstUri * uri);
+gboolean gst_uri_set_userinfo          (GstUri * uri, const gchar * userinfo);
+const gchar * gst_uri_get_host         (const GstUri * uri);
+gboolean gst_uri_set_host              (GstUri * uri, const gchar * host);
+guint gst_uri_get_port                 (const GstUri * uri);
+gboolean gst_uri_set_port              (GstUri * uri, guint port);
+gchar * gst_uri_get_path               (const GstUri * uri);
+gboolean gst_uri_set_path              (GstUri * uri, const gchar * path);
+gchar * gst_uri_get_path_string        (const GstUri * uri);
+gboolean gst_uri_set_path_string       (GstUri * uri, const gchar * path);
+GList * gst_uri_get_path_segments      (const GstUri * uri);
+gboolean gst_uri_set_path_segments     (GstUri * uri, GList * path_segments);
+gboolean gst_uri_append_path           (GstUri * uri,
+                                        const gchar * relative_path);
+gboolean gst_uri_append_path_segment   (GstUri * uri,
+                                        const gchar * path_segment);
+gchar * gst_uri_get_query_string       (const GstUri * uri);
+gboolean gst_uri_set_query_string      (GstUri * uri, const gchar * query);
+GHashTable * gst_uri_get_query_table   (const GstUri * uri);
+gboolean gst_uri_set_query_table       (GstUri * uri,
+                                        GHashTable * query_table);
+gboolean gst_uri_set_query_value       (GstUri * uri, const gchar * query_key,
+                                        const gchar * query_value);
+gboolean gst_uri_remove_query_key      (GstUri * uri, const gchar * query_key);
+gboolean gst_uri_query_has_key         (const GstUri * uri,
+                                        const gchar * query_key);
+const gchar * gst_uri_get_query_value  (const GstUri * uri,
+                                        const gchar * query_key);
+GList * gst_uri_get_query_keys         (const GstUri * uri);
+const gchar * gst_uri_get_fragment     (const GstUri * uri);
+gboolean gst_uri_set_fragment          (GstUri * uri, const gchar * fragment);
+
+/**
+ * gst_uri_copy:
+ * @uri: This #GstUri object.
+ *
+ * Create a new #GstUri object with the same data as this #GstUri object.
+ * If @uri is %NULL then returns %NULL.
+ *
+ * Returns: (transfer full): A new #GstUri object which is a copy of this
+ *          #GstUri or %NULL.
+ */
+#ifdef _FOOL_GTK_DOC_
+G_INLINE_FUNC GstUri * gst_uri_copy (const GstUri * uri);
+#endif
+
+static inline GstUri *
+gst_uri_copy (const GstUri * uri)
+{
+  return GST_URI_CAST (gst_mini_object_copy (GST_MINI_OBJECT_CONST_CAST (uri)));
+}
+
+/**
+ * gst_uri_ref:
+ * @uri: (transfer none): This #GstUri object.
+ *
+ * Add a reference to this #GstUri object. See gst_mini_object_ref() for further
+ * info.
+ *
+ * Returns: This object with the reference count incremented.
+ */
+#ifdef _FOOL_GTK_DOC_
+G_INLINE_FUNC GstUri * gst_uri_ref (GstUri * uri);
+#endif
+
+static inline GstUri *
+gst_uri_ref (GstUri * uri)
+{
+  return GST_URI_CAST (gst_mini_object_ref (GST_MINI_OBJECT_CAST (uri)));
+}
+
+/**
+ * gst_uri_unref:
+ * @uri: (transfer full): This #GstUri object.
+ *
+ * Decrement the reference count to this #GstUri object.
+ *
+ * If the reference count drops to 0 then finalize this object.
+ *
+ * See gst_mini_object_unref() for further info.
+ */
+#ifdef _FOOL_GTK_DOC_
+G_INLINE_FUNC void gst_uri_unref (GstUri * uri);
+#endif
+
+static inline void
+gst_uri_unref (GstUri * uri)
+{
+  gst_mini_object_unref (GST_MINI_OBJECT_CAST (uri));
+}
+
 G_END_DECLS
 
 #endif /* __GST_URI_H__ */
diff --git a/gst/gstutils.c b/gst/gstutils.c
index 2aacbdc..076de1c 100644
--- a/gst/gstutils.c
+++ b/gst/gstutils.c
@@ -924,11 +924,6 @@
 static gboolean
 gst_pad_check_link (GstPad * srcpad, GstPad * sinkpad)
 {
-  /* FIXME This function is gross.  It's almost a direct copy of
-   * gst_pad_link_filtered().  Any decent programmer would attempt
-   * to merge the two functions, which I will do some day. --ds
-   */
-
   /* generic checks */
   g_return_val_if_fail (GST_IS_PAD (srcpad), FALSE);
   g_return_val_if_fail (GST_IS_PAD (sinkpad), FALSE);
@@ -936,7 +931,6 @@
   GST_CAT_INFO (GST_CAT_PADS, "trying to link %s:%s and %s:%s",
       GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad));
 
-  /* FIXME: shouldn't we convert this to g_return_val_if_fail? */
   if (GST_PAD_PEER (srcpad) != NULL) {
     GST_CAT_INFO (GST_CAT_PADS, "Source pad %s:%s has a peer, failed",
         GST_DEBUG_PAD_NAME (srcpad));
@@ -1105,8 +1099,13 @@
 
   /* try to create a new one */
   /* requesting is a little crazy, we need a template. Let's create one */
-  /* FIXME: why not gst_pad_get_pad_template (pad); */
   templcaps = gst_pad_query_caps (pad, NULL);
+  if (caps) {
+    GstCaps *inter = gst_caps_intersect (templcaps, caps);
+
+    gst_caps_unref (templcaps);
+    templcaps = inter;
+  }
   templ = gst_pad_template_new ((gchar *) GST_PAD_NAME (pad),
       GST_PAD_DIRECTION (pad), GST_PAD_ALWAYS, templcaps);
   gst_caps_unref (templcaps);
@@ -1452,8 +1451,24 @@
   /* we need to setup some ghost pads */
   root = find_common_root (e1, e2);
   if (!root) {
-    g_warning ("Trying to connect elements that don't share a common "
-        "ancestor: %s and %s", GST_ELEMENT_NAME (e1), GST_ELEMENT_NAME (e2));
+    if (GST_OBJECT_PARENT (e1) == NULL)
+      g_warning ("Trying to link elements %s and %s that don't share a common "
+          "ancestor: %s hasn't been added to a bin or pipeline, but %s is in %s",
+          GST_ELEMENT_NAME (e1), GST_ELEMENT_NAME (e2),
+          GST_ELEMENT_NAME (e1), GST_ELEMENT_NAME (e2),
+          GST_ELEMENT_NAME (GST_OBJECT_PARENT (e2)));
+    else if (GST_OBJECT_PARENT (e2) == NULL)
+      g_warning ("Trying to link elements %s and %s that don't share a common "
+          "ancestor: %s hasn't been added to a bin or pipeline, and %s is in %s",
+          GST_ELEMENT_NAME (e1), GST_ELEMENT_NAME (e2),
+          GST_ELEMENT_NAME (e2), GST_ELEMENT_NAME (e1),
+          GST_ELEMENT_NAME (GST_OBJECT_PARENT (e1)));
+    else
+      g_warning ("Trying to link elements %s and %s that don't share a common "
+          "ancestor: %s is in %s, and %s is in %s",
+          GST_ELEMENT_NAME (e1), GST_ELEMENT_NAME (e2),
+          GST_ELEMENT_NAME (e1), GST_ELEMENT_NAME (GST_OBJECT_PARENT (e1)),
+          GST_ELEMENT_NAME (e2), GST_ELEMENT_NAME (GST_OBJECT_PARENT (e2)));
     return FALSE;
   }
 
@@ -1503,6 +1518,16 @@
   return ret;
 }
 
+static void
+release_and_unref_pad (GstElement * element, GstPad * pad, gboolean requestpad)
+{
+  if (pad) {
+    if (requestpad)
+      gst_element_release_request_pad (element, pad);
+    gst_object_unref (pad);
+  }
+}
+
 /**
  * gst_element_link_pads_full:
  * @src: a #GstElement containing the source pad.
@@ -1534,6 +1559,7 @@
   GstPad *srcpad, *destpad;
   GstPadTemplate *srctempl, *desttempl;
   GstElementClass *srcclass, *destclass;
+  gboolean srcrequest, destrequest;
 
   /* checks */
   g_return_val_if_fail (GST_IS_ELEMENT (src), FALSE);
@@ -1544,11 +1570,16 @@
       srcpadname ? srcpadname : "(any)", GST_ELEMENT_NAME (dest),
       destpadname ? destpadname : "(any)");
 
+  srcrequest = FALSE;
+  destrequest = FALSE;
+
   /* get a src pad */
   if (srcpadname) {
     /* name specified, look it up */
-    if (!(srcpad = gst_element_get_static_pad (src, srcpadname)))
-      srcpad = gst_element_get_request_pad (src, srcpadname);
+    if (!(srcpad = gst_element_get_static_pad (src, srcpadname))) {
+      if ((srcpad = gst_element_get_request_pad (src, srcpadname)))
+        srcrequest = TRUE;
+    }
     if (!srcpad) {
       GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "no pad %s:%s",
           GST_ELEMENT_NAME (src), srcpadname);
@@ -1557,13 +1588,15 @@
       if (!(GST_PAD_DIRECTION (srcpad) == GST_PAD_SRC)) {
         GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "pad %s:%s is no src pad",
             GST_DEBUG_PAD_NAME (srcpad));
-        gst_object_unref (srcpad);
+        release_and_unref_pad (src, srcpad, srcrequest);
         return FALSE;
       }
       if (GST_PAD_PEER (srcpad) != NULL) {
         GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS,
             "pad %s:%s is already linked to %s:%s", GST_DEBUG_PAD_NAME (srcpad),
             GST_DEBUG_PAD_NAME (GST_PAD_PEER (srcpad)));
+        /* already linked request pads look like static pads, so the request pad
+         * was never requested a second time above, so no need to release it */
         gst_object_unref (srcpad);
         return FALSE;
       }
@@ -1582,17 +1615,21 @@
   /* get a destination pad */
   if (destpadname) {
     /* name specified, look it up */
-    if (!(destpad = gst_element_get_static_pad (dest, destpadname)))
-      destpad = gst_element_get_request_pad (dest, destpadname);
+    if (!(destpad = gst_element_get_static_pad (dest, destpadname))) {
+      if ((destpad = gst_element_get_request_pad (dest, destpadname)))
+        destrequest = TRUE;
+    }
     if (!destpad) {
       GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "no pad %s:%s",
           GST_ELEMENT_NAME (dest), destpadname);
+      release_and_unref_pad (src, srcpad, srcrequest);
       return FALSE;
     } else {
       if (!(GST_PAD_DIRECTION (destpad) == GST_PAD_SINK)) {
         GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "pad %s:%s is no sink pad",
             GST_DEBUG_PAD_NAME (destpad));
-        gst_object_unref (destpad);
+        release_and_unref_pad (src, srcpad, srcrequest);
+        release_and_unref_pad (dest, destpad, destrequest);
         return FALSE;
       }
       if (GST_PAD_PEER (destpad) != NULL) {
@@ -1600,6 +1637,9 @@
             "pad %s:%s is already linked to %s:%s",
             GST_DEBUG_PAD_NAME (destpad),
             GST_DEBUG_PAD_NAME (GST_PAD_PEER (destpad)));
+        release_and_unref_pad (src, srcpad, srcrequest);
+        /* already linked request pads look like static pads, so the request pad
+         * was never requested a second time above, so no need to release it */
         gst_object_unref (destpad);
         return FALSE;
       }
@@ -1621,9 +1661,13 @@
     /* two explicitly specified pads */
     result = pad_link_maybe_ghosting (srcpad, destpad, flags);
 
-    gst_object_unref (srcpad);
-    gst_object_unref (destpad);
-
+    if (result) {
+      gst_object_unref (srcpad);
+      gst_object_unref (destpad);
+    } else {
+      release_and_unref_pad (src, srcpad, srcrequest);
+      release_and_unref_pad (dest, destpad, destrequest);
+    }
     return result;
   }
 
@@ -1637,6 +1681,7 @@
           GST_DEBUG_PAD_NAME (srcpad));
       if ((GST_PAD_DIRECTION (srcpad) == GST_PAD_SRC) &&
           (GST_PAD_PEER (srcpad) == NULL)) {
+        gboolean temprequest = FALSE;
         GstPad *temp;
 
         if (destpadname) {
@@ -1644,6 +1689,11 @@
           gst_object_ref (temp);
         } else {
           temp = gst_element_get_compatible_pad (dest, srcpad, NULL);
+          if (temp && GST_PAD_PAD_TEMPLATE (temp)
+              && GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (temp)) ==
+              GST_PAD_REQUEST) {
+            temprequest = TRUE;
+          }
         }
 
         if (temp && pad_link_maybe_ghosting (srcpad, temp, flags)) {
@@ -1657,6 +1707,8 @@
         }
 
         if (temp) {
+          if (temprequest)
+            gst_element_release_request_pad (dest, temp);
           gst_object_unref (temp);
         }
       }
@@ -1674,13 +1726,16 @@
   if (srcpadname) {
     GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "no link possible from %s:%s to %s",
         GST_DEBUG_PAD_NAME (srcpad), GST_ELEMENT_NAME (dest));
+    /* no need to release any request pad as both src- and destpadname must be
+     * set to end up here, but this case has already been taken care of above */
     if (destpad)
       gst_object_unref (destpad);
     destpad = NULL;
   }
-  if (srcpad)
-    gst_object_unref (srcpad);
-  srcpad = NULL;
+  if (srcpad) {
+    release_and_unref_pad (src, srcpad, srcrequest);
+    srcpad = NULL;
+  }
 
   if (destpad) {
     /* loop through the existing pads in the destination */
@@ -1690,6 +1745,13 @@
       if ((GST_PAD_DIRECTION (destpad) == GST_PAD_SINK) &&
           (GST_PAD_PEER (destpad) == NULL)) {
         GstPad *temp = gst_element_get_compatible_pad (src, destpad, NULL);
+        gboolean temprequest = FALSE;
+
+        if (temp && GST_PAD_PAD_TEMPLATE (temp)
+            && GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (temp)) ==
+            GST_PAD_REQUEST) {
+          temprequest = TRUE;
+        }
 
         if (temp && pad_link_maybe_ghosting (temp, destpad, flags)) {
           GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "linked pad %s:%s to pad %s:%s",
@@ -1698,9 +1760,8 @@
           gst_object_unref (destpad);
           return TRUE;
         }
-        if (temp) {
-          gst_object_unref (temp);
-        }
+
+        release_and_unref_pad (src, temp, temprequest);
       }
       if (destpads) {
         destpads = g_list_next (destpads);
@@ -1716,11 +1777,15 @@
   if (destpadname) {
     GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "no link possible from %s to %s:%s",
         GST_ELEMENT_NAME (src), GST_DEBUG_PAD_NAME (destpad));
-    gst_object_unref (destpad);
+    release_and_unref_pad (dest, destpad, destrequest);
     return FALSE;
   } else {
-    if (destpad)
+    /* no need to release any request pad as the case of unset destpatname and
+     * destpad being a requst pad has already been taken care of when looking
+     * though the destination pads above */
+    if (destpad) {
       gst_object_unref (destpad);
+    }
     destpad = NULL;
   }
 
@@ -1763,10 +1828,14 @@
                 return TRUE;
               }
               /* it failed, so we release the request pads */
-              if (srcpad)
+              if (srcpad) {
                 gst_element_release_request_pad (src, srcpad);
-              if (destpad)
+                gst_object_unref (srcpad);
+              }
+              if (destpad) {
                 gst_element_release_request_pad (dest, destpad);
+                gst_object_unref (destpad);
+              }
             }
             gst_caps_unref (srccaps);
             gst_caps_unref (destcaps);
@@ -3004,6 +3073,58 @@
   return pad;
 }
 
+static void
+gst_bin_sync_children_states_foreach (const GValue * value, gpointer user_data)
+{
+  gboolean *success = user_data;
+  GstElement *element = g_value_get_object (value);
+
+  if (gst_element_is_locked_state (element)) {
+    *success = TRUE;
+  } else {
+    *success = *success && gst_element_sync_state_with_parent (element);
+
+    if (GST_IS_BIN (element))
+      *success = *success
+          && gst_bin_sync_children_states (GST_BIN_CAST (element));
+  }
+}
+
+/**
+ * gst_bin_sync_children_states:
+ * @bin: a #GstBin
+ *
+ * Synchronizes the state of every child of @bin with the state
+ * of @bin. See also gst_element_sync_state_with_parent().
+ *
+ * Returns: %TRUE if syncing the state was successful for all children,
+ *  otherwise %FALSE.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_bin_sync_children_states (GstBin * bin)
+{
+  GstIterator *it;
+  GstIteratorResult res = GST_ITERATOR_OK;
+  gboolean success = TRUE;
+
+  it = gst_bin_iterate_sorted (bin);
+
+  do {
+    if (res == GST_ITERATOR_RESYNC) {
+      success = TRUE;
+      gst_iterator_resync (it);
+    }
+    res =
+        gst_iterator_foreach (it, gst_bin_sync_children_states_foreach,
+        &success);
+  } while (res == GST_ITERATOR_RESYNC);
+  gst_iterator_free (it);
+
+  return success;
+}
+
 /**
  * gst_parse_bin_from_description:
  * @bin_description: command line describing the bin
@@ -3621,15 +3742,17 @@
    * here is for source elements */
   if (!upstream_stream_id) {
     GstQuery *query;
+    gchar *uri = NULL;
 
     /* Try to generate one from the URI query and
      * if it fails take a random number instead */
     query = gst_query_new_uri ();
     if (gst_element_query (parent, query)) {
-      GChecksum *cs;
-      gchar *uri;
-
       gst_query_parse_uri (query, &uri);
+    }
+
+    if (uri) {
+      GChecksum *cs;
 
       /* And then generate an SHA256 sum of the URI */
       cs = g_checksum_new (G_CHECKSUM_SHA256);
diff --git a/gst/gstutils.h b/gst/gstutils.h
index a935883..186f439 100644
--- a/gst/gstutils.h
+++ b/gst/gstutils.h
@@ -983,6 +983,8 @@
 void                    gst_bin_remove_many             (GstBin *bin, GstElement *element_1, ...) G_GNUC_NULL_TERMINATED;
 GstPad *                gst_bin_find_unlinked_pad       (GstBin *bin, GstPadDirection direction);
 
+gboolean                gst_bin_sync_children_states    (GstBin *bin);
+
 /* parse utility functions */
 GstElement *            gst_parse_bin_from_description      (const gchar     * bin_description,
                                                              gboolean          ghost_unlinked_pads,
diff --git a/gst/gstvalue.c b/gst/gstvalue.c
index 964431c..37a59bf 100644
--- a/gst/gstvalue.c
+++ b/gst/gstvalue.c
@@ -116,6 +116,14 @@
   GstValueSubtractFunc func;
 };
 
+struct _GstFlagSetClass
+{
+  GTypeClass parent;
+  GType flags_type;             /* Type of the GFlags this flagset carries (can be 0) */
+};
+
+typedef struct _GstFlagSetClass GstFlagSetClass;
+
 #define FUNDAMENTAL_TYPE_ID_MAX \
     (G_TYPE_FUNDAMENTAL_MAX >> G_TYPE_FUNDAMENTAL_SHIFT)
 #define FUNDAMENTAL_TYPE_ID(type) \
@@ -839,7 +847,7 @@
 
 /* Do an unordered compare of the contents of a list */
 static gint
-gst_value_compare_list (const GValue * value1, const GValue * value2)
+gst_value_compare_value_list (const GValue * value1, const GValue * value2)
 {
   guint i, j;
   GArray *array1 = value1->data[0].v_pointer;
@@ -871,7 +879,7 @@
           continue;
         v2 = &g_array_index (array2, GValue, j);
         if (gst_value_compare_with_func (v1, v2, compare) == GST_VALUE_EQUAL) {
-          /* mark item as removed now that we found it in array2 and 
+          /* mark item as removed now that we found it in array2 and
            * decrement the number of remaining items in array2. */
           removed[j] = 1;
           to_remove--;
@@ -894,7 +902,7 @@
 
 /* Perform an ordered comparison of the contents of an array */
 static gint
-gst_value_compare_array (const GValue * value1, const GValue * value2)
+gst_value_compare_value_array (const GValue * value1, const GValue * value2)
 {
   guint i;
   GArray *array1 = value1->data[0].v_pointer;
@@ -917,26 +925,26 @@
 }
 
 static gchar *
-gst_value_serialize_list (const GValue * value)
+gst_value_serialize_value_list (const GValue * value)
 {
   return gst_value_serialize_any_list (value, "{ ", " }");
 }
 
 static gboolean
-gst_value_deserialize_list (GValue * dest, const gchar * s)
+gst_value_deserialize_value_list (GValue * dest, const gchar * s)
 {
   g_warning ("gst_value_deserialize_list: unimplemented");
   return FALSE;
 }
 
 static gchar *
-gst_value_serialize_array (const GValue * value)
+gst_value_serialize_value_array (const GValue * value)
 {
   return gst_value_serialize_any_list (value, "< ", " >");
 }
 
 static gboolean
-gst_value_deserialize_array (GValue * dest, const gchar * s)
+gst_value_deserialize_value_array (GValue * dest, const gchar * s)
 {
   g_warning ("gst_value_deserialize_array: unimplemented");
   return FALSE;
@@ -2086,6 +2094,18 @@
   return FALSE;
 }
 
+static gboolean
+gst_value_compare_structure (const GValue * value1, const GValue * value2)
+{
+  GstStructure *structure1 = GST_STRUCTURE (g_value_get_boxed (value1));
+  GstStructure *structure2 = GST_STRUCTURE (g_value_get_boxed (value2));
+
+  if (gst_structure_is_equal (structure1, structure2))
+    return GST_VALUE_EQUAL;
+
+  return GST_VALUE_UNORDERED;
+}
+
 /*******************
  * GstCapsFeatures *
  *******************/
@@ -2159,6 +2179,16 @@
 /**************
  * GstTagList *
  **************/
+static gint
+gst_value_compare_tag_list (const GValue * value1, const GValue * value2)
+{
+  GstTagList *taglist1 = GST_TAG_LIST (g_value_get_boxed (value1));
+  GstTagList *taglist2 = GST_TAG_LIST (g_value_get_boxed (value2));
+
+  if (gst_tag_list_is_equal (taglist1, taglist2))
+    return GST_VALUE_EQUAL;
+  return GST_VALUE_UNORDERED;
+}
 
 static gboolean
 gst_value_deserialize_tag_list (GValue * dest, const gchar * s)
@@ -2415,7 +2445,7 @@
   GValue bval = G_VALUE_INIT, sval = G_VALUE_INIT;
   GstStructure *info;
   GstSample *sample;
-  GstCaps *caps;
+  GstCaps *caps = NULL;
   gboolean ret = FALSE;
   gchar **fields;
   gsize outlen;
@@ -2441,8 +2471,6 @@
     caps = gst_caps_from_string (fields[1]);
     if (caps == NULL)
       goto fail;
-  } else {
-    caps = NULL;
   }
 
   if (strcmp (fields[2], "None") != 0) {
@@ -2469,13 +2497,11 @@
 
   g_value_take_boxed (dest, sample);
 
-  if (caps)
-    gst_caps_unref (caps);
-
   ret = TRUE;
 
 fail:
-
+  if (caps)
+    gst_caps_unref (caps);
   g_value_unset (&bval);
   g_value_unset (&sval);
 
@@ -2679,18 +2705,6 @@
   return ret;                                                           \
 }
 
-#define REGISTER_SERIALIZATION(_gtype, _type)                           \
-G_STMT_START {                                                          \
-  static const GstValueTable gst_value = {                              \
-    _gtype,                                                             \
-    gst_value_compare_ ## _type,                                        \
-    gst_value_serialize_ ## _type,                                      \
-    gst_value_deserialize_ ## _type,                                    \
-  };                                                                    \
-                                                                        \
-  gst_value_register (&gst_value);                                      \
-} G_STMT_END
-
 CREATE_SERIALIZATION (int, INT);
 CREATE_SERIALIZATION (int64, INT64);
 CREATE_SERIALIZATION (long, LONG);
@@ -2699,7 +2713,7 @@
 CREATE_USERIALIZATION (uint64, UINT64);
 CREATE_USERIALIZATION (ulong, ULONG);
 
-/* FIXME 0.11: remove this again, plugins shouldn't have uchar properties */
+/* FIXME 2.0: remove this again, plugins shouldn't have uchar properties */
 #ifndef G_MAXUCHAR
 #define G_MAXUCHAR 255
 #endif
@@ -3014,12 +3028,13 @@
   if (G_UNLIKELY (strcmp (s, "NULL") == 0)) {
     g_value_set_string (dest, NULL);
     return TRUE;
-  } else if (G_LIKELY (*s != '"')) {
+  } else if (G_LIKELY (*s != '"' || s[strlen (s) - 1] != '"')) {
     if (!g_utf8_validate (s, -1, NULL))
       return FALSE;
     g_value_set_string (dest, s);
     return TRUE;
   } else {
+    /* strings delimited with double quotes should be unwrapped */
     gchar *str = gst_string_unwrap (s);
     if (G_UNLIKELY (!str))
       return FALSE;
@@ -3147,7 +3162,7 @@
 
 /* we just compare the value here */
 static gint
-gst_value_compare_flags (const GValue * value1, const GValue * value2)
+gst_value_compare_gflags (const GValue * value1, const GValue * value2)
 {
   guint fl1, fl2;
   GFlagsClass *klass1 =
@@ -3171,7 +3186,7 @@
 
 /* the different flags are serialized separated with a + */
 static gchar *
-gst_value_serialize_flags (const GValue * value)
+gst_value_serialize_gflags (const GValue * value)
 {
   guint flags;
   GFlagsValue *fl;
@@ -3212,46 +3227,96 @@
 }
 
 static gboolean
-gst_value_deserialize_flags (GValue * dest, const gchar * s)
+gst_value_gflags_str_to_flags (GFlagsClass * klass, const gchar * s,
+    guint * out_flags, guint * out_mask)
 {
   GFlagsValue *fl;
-  gchar *endptr = NULL;
-  GFlagsClass *klass = (GFlagsClass *) g_type_class_ref (G_VALUE_TYPE (dest));
-  gchar **split;
-  guint flags;
-  gint i;
+  gchar delimiter;
+  const gchar *pos = NULL;
+  const gchar *next;
+  gchar *cur_str, *endptr;
+
+  guint flags = 0;
+  guint mask = 0;
+  guint val;
 
   g_return_val_if_fail (klass, FALSE);
 
-  /* split into parts delimited with + */
-  split = g_strsplit (s, "+", 0);
+  /* split into parts delimited with + or / and
+   * compose the set of flags and mask. */
+  pos = s;
 
-  flags = 0;
-  i = 0;
-  /* loop over each part */
-  while (split[i]) {
-    if (!(fl = g_flags_get_value_by_name (klass, split[i]))) {
-      if (!(fl = g_flags_get_value_by_nick (klass, split[i]))) {
-        gint val = strtol (split[i], &endptr, 0);
+  if (*pos == '\0')
+    goto done;                  /* Empty string, nothing to do */
 
-        /* just or numeric value */
-        if (endptr && *endptr == '\0') {
-          flags |= val;
-        }
-      }
-    }
-    if (fl) {
-      flags |= fl->value;
-    }
-    i++;
+  /* As a special case if the first char isn't a delimiter, assume
+   * it's a '+' - for GFlags strings, which don't start with a
+   * delimiter, while GFlagSet always will */
+  if (*pos == '/' || *pos == '+') {
+    delimiter = *pos;
+    pos++;
+  } else {
+    delimiter = '+';
   }
-  g_strfreev (split);
-  g_type_class_unref (klass);
-  g_value_set_flags (dest, flags);
+
+  do {
+    /* Find the next delimiter */
+    next = pos;
+    while (*next != '\0' && *next != '+' && *next != '/')
+      next++;
+    cur_str = g_strndup (pos, next - pos);
+
+    if ((fl = g_flags_get_value_by_name (klass, cur_str)))
+      val = fl->value;
+    else if ((fl = g_flags_get_value_by_nick (klass, cur_str)))
+      val = fl->value;
+    else {
+      val = strtoul (cur_str, &endptr, 0);
+      /* direct numeric value */
+      if (endptr == NULL || *endptr != '\0')
+        val = 0;                /* Invalid numeric, ignore it */
+    }
+    g_free (cur_str);
+
+    if (val) {
+      mask |= val;
+      if (delimiter == '+')
+        flags |= val;
+    }
+
+    /* Advance to the next delimiter */
+    pos = next;
+    delimiter = *pos;
+    pos++;
+  } while (delimiter != '\0');
+
+done:
+  if (out_flags)
+    *out_flags = flags;
+  if (out_mask)
+    *out_mask = mask;
 
   return TRUE;
 }
 
+
+static gboolean
+gst_value_deserialize_gflags (GValue * dest, const gchar * s)
+{
+  GFlagsClass *klass = (GFlagsClass *) g_type_class_ref (G_VALUE_TYPE (dest));
+  gboolean res = FALSE;
+  guint flags = 0;
+
+  if (gst_value_gflags_str_to_flags (klass, s, &flags, NULL)) {
+    g_value_set_flags (dest, flags);
+    res = TRUE;
+  }
+
+  g_type_class_unref (klass);
+
+  return res;
+}
+
 /****************
  * subset *
  ****************/
@@ -3318,6 +3383,31 @@
   return TRUE;
 }
 
+/* A flag set is a subset of another if the superset allows the
+ * flags of the subset */
+static gboolean
+gst_value_is_subset_flagset_flagset (const GValue * value1,
+    const GValue * value2)
+{
+  guint f1, f2;
+  guint m1, m2;
+
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (value1), FALSE);
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (value2), FALSE);
+
+  f1 = value1->data[0].v_uint;
+  f2 = value2->data[0].v_uint;
+
+  m1 = value1->data[1].v_uint;
+  m2 = value2->data[1].v_uint;
+
+  /* Not a subset if masked bits of superset disagree */
+  if ((f1 & m1) != (f2 & (m1 & m2)))
+    return FALSE;
+
+  return TRUE;
+}
+
 /**
  * gst_value_is_subset:
  * @value1: a #GValue
@@ -3339,6 +3429,9 @@
   } else if (GST_VALUE_HOLDS_INT64_RANGE (value1)
       && GST_VALUE_HOLDS_INT64_RANGE (value2)) {
     return gst_value_is_subset_int64_range_int64_range (value1, value2);
+  } else if (GST_VALUE_HOLDS_FLAG_SET (value1) &&
+      GST_VALUE_HOLDS_FLAG_SET (value2)) {
+    return gst_value_is_subset_flagset_flagset (value1, value2);
   }
 
   /*
@@ -3504,6 +3597,40 @@
   return FALSE;
 }
 
+static gboolean
+gst_value_union_flagset_flagset (GValue * dest, const GValue * src1,
+    const GValue * src2)
+{
+  /* We can union 2 flag sets where they do not disagree on
+   * required (masked) flag bits */
+  guint64 f1, f2;
+  guint64 m1, m2;
+
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (src1), FALSE);
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (src2), FALSE);
+
+  f1 = src1->data[0].v_uint;
+  f2 = src2->data[0].v_uint;
+
+  m1 = src1->data[1].v_uint;
+  m2 = src2->data[1].v_uint;
+
+  /* Can't union if masked bits disagree */
+  if ((f1 & (m1 & m2)) != (f2 & (m1 & m2)))
+    return FALSE;
+
+  if (dest) {
+    g_value_init (dest, GST_TYPE_FLAG_SET);
+    /* Copy masked bits from src2 to src1 */
+    f1 &= ~m2;
+    f1 |= (f2 & m2);
+    m1 |= m2;
+    gst_value_set_flagset (dest, f1, m1);
+  }
+
+  return TRUE;
+}
+
 /****************
  * intersection *
  ****************/
@@ -3829,6 +3956,60 @@
   return FALSE;
 }
 
+/* Two flagsets intersect if the masked bits in both
+ * flagsets are exactly equal */
+static gboolean
+gst_value_intersect_flagset_flagset (GValue * dest,
+    const GValue * src1, const GValue * src2)
+{
+  guint f1, f2;
+  guint m1, m2;
+  GType type1, type2, flagset_type;
+
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (src1), FALSE);
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (src2), FALSE);
+
+  f1 = src1->data[0].v_uint;
+  f2 = src2->data[0].v_uint;
+
+  m1 = src1->data[1].v_uint;
+  m2 = src2->data[1].v_uint;
+
+  /* Don't intersect if masked bits disagree */
+  if ((f1 & (m1 & m2)) != (f2 & (m1 & m2)))
+    return FALSE;
+
+  /* Allow intersection with the generic FlagSet type, on one
+   * side, but not 2 different subtypes - that makes no sense */
+  type1 = G_VALUE_TYPE (src1);
+  type2 = G_VALUE_TYPE (src2);
+  flagset_type = GST_TYPE_FLAG_SET;
+
+  if (type1 != type2 && type1 != flagset_type && type2 != flagset_type)
+    return FALSE;
+
+  if (dest) {
+    GType dest_type;
+
+    /* Prefer an output type that matches a sub-type,
+     * rather than the generic type */
+    if (type1 != flagset_type)
+      dest_type = type1;
+    else
+      dest_type = type2;
+
+    g_value_init (dest, dest_type);
+
+    /* The compatible set is all the bits from src1 that it
+     * cares about and all the bits from src2 that it cares
+     * about. */
+    dest->data[0].v_uint = (f1 & m1) | (f2 & m2);
+    dest->data[1].v_uint = m1 | m2;
+  }
+
+  return TRUE;
+}
+
 /***************
  * subtraction *
  ***************/
@@ -4612,7 +4793,7 @@
  *
  * Compares @value1 and @value2 using the @compare function. Works like
  * gst_value_compare() but allows to save time determining the compare function
- * a multiple times. 
+ * a multiple times.
  *
  * Returns: comparison result
  */
@@ -4836,6 +5017,14 @@
       return intersect_info->func (dest, value2, value1);
     }
   }
+
+  /* Failed to find a direct intersection, check if these are
+   * GstFlagSet sub-types. */
+  if (G_UNLIKELY (GST_VALUE_HOLDS_FLAG_SET (value1) &&
+          GST_VALUE_HOLDS_FLAG_SET (value2))) {
+    return gst_value_intersect_flagset_flagset (dest, value1, value2);
+  }
+
   return FALSE;
 }
 
@@ -5184,6 +5373,9 @@
         return FALSE;
     }
     return TRUE;
+  } else if (GST_VALUE_HOLDS_FLAG_SET (value)) {
+    /* Flagsets are only fixed if there are no 'don't care' bits */
+    return (gst_value_get_flagset_mask (value) == GST_FLAG_SET_MASK_EXACT);
   }
   return gst_type_is_fixed (type);
 }
@@ -5249,6 +5441,16 @@
       g_value_unset (dest);
 
     return res;
+  } else if (GST_VALUE_HOLDS_FLAG_SET (src)) {
+    guint flags;
+
+    if (gst_value_get_flagset_mask (src) == GST_FLAG_SET_MASK_EXACT)
+      return FALSE;             /* Already fixed */
+
+    flags = gst_value_get_flagset_flags (src);
+    g_value_init (dest, G_VALUE_TYPE (src));
+    gst_value_set_flagset (dest, flags, GST_FLAG_SET_MASK_EXACT);
+    return TRUE;
   } else {
     return FALSE;
   }
@@ -5840,6 +6042,7 @@
   if (G_UNLIKELY (dest == NULL || !GST_VALUE_HOLDS_BITMASK (dest)))
     return FALSE;
 
+  errno = 0;
   val = g_ascii_strtoull (s, &endptr, 16);
   if (val == G_MAXUINT64 && (errno == ERANGE || errno == EINVAL))
     return FALSE;
@@ -5894,6 +6097,272 @@
   return GST_VALUE_UNORDERED;
 }
 
+/************
+ * flagset *
+ ************/
+
+/* helper functions */
+static void
+gst_value_init_flagset (GValue * value)
+{
+  value->data[0].v_uint = 0;
+  value->data[1].v_uint = 0;
+}
+
+static void
+gst_value_copy_flagset (const GValue * src_value, GValue * dest_value)
+{
+  dest_value->data[0].v_uint = src_value->data[0].v_uint;
+  dest_value->data[1].v_uint = src_value->data[1].v_uint;
+}
+
+static gchar *
+gst_value_collect_flagset (GValue * value, guint n_collect_values,
+    GTypeCValue * collect_values, guint collect_flags)
+{
+  if (n_collect_values != 2)
+    return g_strdup_printf ("not enough value locations for `%s' passed",
+        G_VALUE_TYPE_NAME (value));
+
+  gst_value_set_flagset (value,
+      (guint) collect_values[0].v_int, (guint) collect_values[1].v_int);
+
+  return NULL;
+}
+
+static gchar *
+gst_value_lcopy_flagset (const GValue * value, guint n_collect_values,
+    GTypeCValue * collect_values, guint collect_flags)
+{
+  guint *flags = collect_values[0].v_pointer;
+  guint *mask = collect_values[1].v_pointer;
+
+  *flags = value->data[0].v_uint;
+  *mask = value->data[1].v_uint;
+
+  return NULL;
+}
+
+/**
+ * gst_value_set_flagset:
+ * @value: a GValue initialized to %GST_TYPE_FLAG_SET
+ * @flags: The value of the flags set or unset
+ * @mask: The mask indicate which flags bits must match for comparisons
+ *
+ * Sets @value to the flags and mask values provided in @flags and @mask.
+ * The @flags value indicates the values of flags, the @mask represents
+ * which bits in the flag value have been set, and which are "don't care"
+ *
+ * Since: 1.6
+ */
+void
+gst_value_set_flagset (GValue * value, guint flags, guint mask)
+{
+  g_return_if_fail (GST_VALUE_HOLDS_FLAG_SET (value));
+
+  /* Normalise and only keep flags mentioned in the mask */
+  value->data[0].v_uint = flags & mask;
+  value->data[1].v_uint = mask;
+}
+
+/**
+ * gst_value_get_flagset_flags:
+ * @value: a GValue initialized to #GST_TYPE_FLAG_SET
+ *
+ * Retrieve the flags field of a GstFlagSet @value.
+ *
+ * Returns: the flags field of the flagset instance.
+ *
+ * Since: 1.6
+ */
+guint
+gst_value_get_flagset_flags (const GValue * value)
+{
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (value), 0);
+
+  return value->data[0].v_uint;
+}
+
+/**
+ * gst_value_get_flagset_mask:
+ * @value: a GValue initialized to #GST_TYPE_FLAG_SET
+ *
+ * Retrieve the mask field of a GstFlagSet @value.
+ *
+ * Returns: the mask field of the flagset instance.
+ *
+ * Since: 1.6
+ */
+guint
+gst_value_get_flagset_mask (const GValue * value)
+{
+  g_return_val_if_fail (GST_VALUE_HOLDS_FLAG_SET (value), 1);
+
+  return value->data[1].v_uint;
+}
+
+static gchar *
+gst_value_serialize_flagset (const GValue * value)
+{
+  guint flags = value->data[0].v_uint;
+  guint mask = value->data[1].v_uint;
+  GstFlagSetClass *set_klass =
+      (GstFlagSetClass *) g_type_class_ref (G_VALUE_TYPE (value));
+  gchar *result;
+
+  result = g_strdup_printf ("%x:%x", flags, mask);
+
+  /* If this flag set class has an associated GFlags GType, and some
+   * bits in the mask, serialize the bits in human-readable form to
+   * aid debugging */
+  if (mask && set_klass->flags_type) {
+    GFlagsClass *flags_klass =
+        (GFlagsClass *) (g_type_class_ref (set_klass->flags_type));
+    GFlagsValue *fl;
+    gchar *tmp;
+    gboolean first = TRUE;
+
+    g_return_val_if_fail (flags_klass, NULL);
+
+    /* some bits in the mask are set, so serialize one by one, according
+     * to whether that bit is set or cleared in the flags value */
+    while (mask) {
+      fl = g_flags_get_first_value (flags_klass, mask);
+      if (fl == NULL) {
+        /* No more bits match in the flags mask - time to stop */
+        mask = 0;
+        break;
+      }
+
+      tmp = g_strconcat (result,
+          first ? ":" : "",
+          (flags & fl->value) ? "+" : "/", fl->value_nick, NULL);
+      g_free (result);
+      result = tmp;
+      first = FALSE;
+
+      /* clear flag */
+      mask &= ~fl->value;
+    }
+    g_type_class_unref (flags_klass);
+
+  }
+  g_type_class_unref (set_klass);
+
+  return result;
+}
+
+static gboolean
+gst_value_deserialize_flagset (GValue * dest, const gchar * s)
+{
+  gboolean res = FALSE;
+  guint flags, mask;
+  gchar *cur, *next;
+
+  if (G_UNLIKELY (s == NULL))
+    return FALSE;
+
+  if (G_UNLIKELY (dest == NULL || !GST_VALUE_HOLDS_FLAG_SET (dest)))
+    return FALSE;
+
+  /* Flagset strings look like %x:%x - hex flags : hex bitmask,
+   * 32-bit each, or like a concatenated list of flag nicks,
+   * with either '+' or '/' in front. The first form
+   * may optionally be followed by ':' and a set of text flag descriptions
+   * for easier debugging */
+
+  /* Try and interpret as hex form first, as it's the most efficient */
+  /* Read the flags first */
+  flags = strtoul (s, &next, 16);
+  if (G_UNLIKELY ((flags == 0 && errno == EINVAL) || s == next))
+    goto try_as_flags_string;
+  /* Next char should be a colon */
+  if (next[0] == ':')
+    next++;
+
+  /* Read the mask */
+  cur = next;
+  mask = strtoul (cur, &next, 16);
+  if (G_UNLIKELY ((mask == 0 && errno == EINVAL) || cur == next))
+    goto try_as_flags_string;
+
+  /* Next char should be NULL terminator, or a ':' */
+  if (G_UNLIKELY (next[0] != 0 && next[0] != ':'))
+    goto try_as_flags_string;
+
+  res = TRUE;
+
+try_as_flags_string:
+
+  if (!res) {
+    const gchar *set_class = g_type_name (G_VALUE_TYPE (dest));
+    GFlagsClass *flags_klass = NULL;
+    const gchar *end;
+
+    if (g_str_equal (set_class, "GstFlagSet"))
+      goto done;                /* There's no hope to parse a generic flag set */
+
+    /* Flags class is the FlagSet class with 'Set' removed from the end */
+    end = g_strrstr (set_class, "Set");
+
+    if (end != NULL) {
+      gchar *class_name = g_strndup (set_class, end - set_class);
+      GType flags_type = g_type_from_name (class_name);
+
+      g_free (class_name);
+
+      if (flags_type != 0)
+        flags_klass = g_type_class_ref (flags_type);
+    }
+
+    if (flags_klass) {
+      res = gst_value_gflags_str_to_flags (flags_klass, s, &flags, &mask);
+      g_type_class_unref (flags_klass);
+    }
+  }
+
+  if (res)
+    gst_value_set_flagset (dest, flags, mask);
+done:
+  return res;
+
+}
+
+static void
+gst_value_transform_flagset_string (const GValue * src_value,
+    GValue * dest_value)
+{
+  dest_value->data[0].v_pointer = gst_value_serialize_flagset (src_value);
+}
+
+static void
+gst_value_transform_string_flagset (const GValue * src_value,
+    GValue * dest_value)
+{
+  if (!gst_value_deserialize_flagset (dest_value, src_value->data[0].v_pointer)) {
+    /* If the deserialize fails, ensure we leave the flags in a
+     * valid, if incorrect, state */
+    gst_value_set_flagset (dest_value, 0, 0);
+  }
+}
+
+static gint
+gst_value_compare_flagset (const GValue * value1, const GValue * value2)
+{
+  guint v1, v2;
+  guint m1, m2;
+
+  v1 = value1->data[0].v_uint;
+  v2 = value2->data[0].v_uint;
+
+  m1 = value1->data[1].v_uint;
+  m2 = value2->data[1].v_uint;
+
+  if (v1 == v2 && m1 == m2)
+    return GST_VALUE_EQUAL;
+
+  return GST_VALUE_UNORDERED;
+}
 
 /***********************
  * GstAllocationParams *
@@ -5959,23 +6428,14 @@
 }
 
 static GTypeInfo _info = {
-  0,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  0,
-  0,
-  NULL,
-  NULL,
+  0, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL,
 };
 
 static GTypeFundamentalInfo _finfo = {
   0
 };
 
-#define FUNC_VALUE_GET_TYPE(type, name)                         \
+#define FUNC_VALUE_GET_TYPE_CLASSED(type, name, csize, flags)   \
 GType _gst_ ## type ## _type = 0;                               \
                                                                 \
 GType gst_ ## type ## _get_type (void)                          \
@@ -5984,26 +6444,29 @@
                                                                 \
   if (g_once_init_enter (&gst_ ## type ## _type)) {             \
     GType _type;                                                \
+    _info.class_size = csize;                                   \
+    _finfo.type_flags = flags;                                  \
     _info.value_table = & _gst_ ## type ## _value_table;        \
     _type = g_type_register_fundamental (                       \
         g_type_fundamental_next (),                             \
         name, &_info, &_finfo, 0);                              \
-    _gst_ ## type ## _type = _type;                              \
+    _gst_ ## type ## _type = _type;                             \
     g_once_init_leave(&gst_ ## type ## _type, _type);           \
   }                                                             \
                                                                 \
   return gst_ ## type ## _type;                                 \
 }
 
+#define FUNC_VALUE_GET_TYPE(type, name) \
+  FUNC_VALUE_GET_TYPE_CLASSED(type, name, 0, 0)
+
 static const GTypeValueTable _gst_int_range_value_table = {
   gst_value_init_int_range,
   NULL,
   gst_value_copy_int_range,
   NULL,
   (char *) "ii",
-  gst_value_collect_int_range,
-  (char *) "pp",
-  gst_value_lcopy_int_range
+  gst_value_collect_int_range, (char *) "pp", gst_value_lcopy_int_range
 };
 
 FUNC_VALUE_GET_TYPE (int_range, "GstIntRange");
@@ -6015,8 +6478,7 @@
   NULL,
   (char *) "qq",
   gst_value_collect_int64_range,
-  (char *) "pp",
-  gst_value_lcopy_int64_range
+  (char *) "pp", gst_value_lcopy_int64_range
 };
 
 FUNC_VALUE_GET_TYPE (int64_range, "GstInt64Range");
@@ -6028,8 +6490,7 @@
   NULL,
   (char *) "dd",
   gst_value_collect_double_range,
-  (char *) "pp",
-  gst_value_lcopy_double_range
+  (char *) "pp", gst_value_lcopy_double_range
 };
 
 FUNC_VALUE_GET_TYPE (double_range, "GstDoubleRange");
@@ -6041,8 +6502,7 @@
   NULL,
   (char *) "iiii",
   gst_value_collect_fraction_range,
-  (char *) "pppp",
-  gst_value_lcopy_fraction_range
+  (char *) "pppp", gst_value_lcopy_fraction_range
 };
 
 FUNC_VALUE_GET_TYPE (fraction_range, "GstFractionRange");
@@ -6054,8 +6514,7 @@
   gst_value_list_or_array_peek_pointer,
   (char *) "p",
   gst_value_collect_list_or_array,
-  (char *) "p",
-  gst_value_lcopy_list_or_array
+  (char *) "p", gst_value_lcopy_list_or_array
 };
 
 FUNC_VALUE_GET_TYPE (value_list, "GstValueList");
@@ -6067,8 +6526,7 @@
   gst_value_list_or_array_peek_pointer,
   (char *) "p",
   gst_value_collect_list_or_array,
-  (char *) "p",
-  gst_value_lcopy_list_or_array
+  (char *) "p", gst_value_lcopy_list_or_array
 };
 
 FUNC_VALUE_GET_TYPE (value_array, "GstValueArray");
@@ -6079,9 +6537,7 @@
   gst_value_copy_fraction,
   NULL,
   (char *) "ii",
-  gst_value_collect_fraction,
-  (char *) "pp",
-  gst_value_lcopy_fraction
+  gst_value_collect_fraction, (char *) "pp", gst_value_lcopy_fraction
 };
 
 FUNC_VALUE_GET_TYPE (fraction, "GstFraction");
@@ -6092,13 +6548,23 @@
   gst_value_copy_bitmask,
   NULL,
   (char *) "q",
-  gst_value_collect_bitmask,
-  (char *) "p",
-  gst_value_lcopy_bitmask
+  gst_value_collect_bitmask, (char *) "p", gst_value_lcopy_bitmask
 };
 
 FUNC_VALUE_GET_TYPE (bitmask, "GstBitmask");
 
+static const GTypeValueTable _gst_flagset_value_table = {
+  gst_value_init_flagset,
+  NULL,
+  gst_value_copy_flagset,
+  NULL,
+  (char *) "ii",
+  gst_value_collect_flagset, (char *) "pp", gst_value_lcopy_flagset
+};
+
+FUNC_VALUE_GET_TYPE_CLASSED (flagset, "GstFlagSet",
+    sizeof (GstFlagSetClass), G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_DERIVABLE);
+
 GType
 gst_g_thread_get_type (void)
 {
@@ -6110,8 +6576,7 @@
   if (g_once_init_enter (&type_id)) {
     GType tmp =
         g_boxed_type_register_static (g_intern_static_string ("GstGThread"),
-        (GBoxedCopyFunc) g_thread_ref,
-        (GBoxedFreeFunc) g_thread_unref);
+        (GBoxedCopyFunc) g_thread_ref, (GBoxedFreeFunc) g_thread_unref);
     g_once_init_leave (&type_id, tmp);
   }
 
@@ -6119,268 +6584,108 @@
 #endif
 }
 
+#define SERIAL_VTABLE(t,c,s,d) { t, c, s, d }
+
+#define REGISTER_SERIALIZATION_CONST(_gtype, _type)                     \
+G_STMT_START {                                                          \
+  static const GstValueTable gst_value =                                \
+    SERIAL_VTABLE (_gtype, gst_value_compare_ ## _type,                 \
+    gst_value_serialize_ ## _type, gst_value_deserialize_ ## _type);    \
+  gst_value_register (&gst_value);                                      \
+} G_STMT_END
+
+#define REGISTER_SERIALIZATION(_gtype, _type)                           \
+G_STMT_START {                                                          \
+  static GstValueTable gst_value =                                      \
+    SERIAL_VTABLE (0, gst_value_compare_ ## _type,                      \
+    gst_value_serialize_ ## _type, gst_value_deserialize_ ## _type);    \
+  gst_value.type = _gtype;                                              \
+  gst_value_register (&gst_value);                                      \
+} G_STMT_END
+
+#define REGISTER_SERIALIZATION_NO_COMPARE(_gtype, _type)                \
+G_STMT_START {                                                          \
+  static GstValueTable gst_value =                                      \
+    SERIAL_VTABLE (0, NULL,                                             \
+    gst_value_serialize_ ## _type, gst_value_deserialize_ ## _type);    \
+  gst_value.type = _gtype;                                              \
+  gst_value_register (&gst_value);                                      \
+} G_STMT_END
+
+#define REGISTER_SERIALIZATION_COMPARE_ONLY(_gtype, _type)              \
+G_STMT_START {                                                          \
+  static GstValueTable gst_value =                                      \
+    SERIAL_VTABLE (0, gst_value_compare_ ## _type,                      \
+        NULL, NULL);                                                    \
+  gst_value.type = _gtype;                                              \
+  gst_value_register (&gst_value);                                      \
+} G_STMT_END
+
+/* These initial sizes are used for the tables
+ * below, and save a couple of reallocs at startup */
+static const gint GST_VALUE_TABLE_DEFAULT_SIZE = 33;
+static const gint GST_VALUE_UNION_TABLE_DEFAULT_SIZE = 3;
+static const gint GST_VALUE_INTERSECT_TABLE_DEFAULT_SIZE = 10;
+static const gint GST_VALUE_SUBTRACT_TABLE_DEFAULT_SIZE = 12;
+
 void
 _priv_gst_value_initialize (void)
 {
-  gst_value_table = g_array_new (FALSE, FALSE, sizeof (GstValueTable));
+  gst_value_table =
+      g_array_sized_new (FALSE, FALSE, sizeof (GstValueTable),
+      GST_VALUE_TABLE_DEFAULT_SIZE);
   gst_value_hash = g_hash_table_new (NULL, NULL);
-  gst_value_union_funcs = g_array_new (FALSE, FALSE,
-      sizeof (GstValueUnionInfo));
-  gst_value_intersect_funcs = g_array_new (FALSE, FALSE,
-      sizeof (GstValueIntersectInfo));
-  gst_value_subtract_funcs = g_array_new (FALSE, FALSE,
-      sizeof (GstValueSubtractInfo));
+  gst_value_union_funcs = g_array_sized_new (FALSE, FALSE,
+      sizeof (GstValueUnionInfo), GST_VALUE_UNION_TABLE_DEFAULT_SIZE);
+  gst_value_intersect_funcs = g_array_sized_new (FALSE, FALSE,
+      sizeof (GstValueIntersectInfo), GST_VALUE_INTERSECT_TABLE_DEFAULT_SIZE);
+  gst_value_subtract_funcs = g_array_sized_new (FALSE, FALSE,
+      sizeof (GstValueSubtractInfo), GST_VALUE_SUBTRACT_TABLE_DEFAULT_SIZE);
 
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_int_range,
-      gst_value_serialize_int_range,
-      gst_value_deserialize_int_range,
-    };
+  REGISTER_SERIALIZATION (gst_int_range_get_type (), int_range);
+  REGISTER_SERIALIZATION (gst_int64_range_get_type (), int64_range);
+  REGISTER_SERIALIZATION (gst_double_range_get_type (), double_range);
+  REGISTER_SERIALIZATION (gst_fraction_range_get_type (), fraction_range);
+  REGISTER_SERIALIZATION (gst_value_list_get_type (), value_list);
+  REGISTER_SERIALIZATION (gst_value_array_get_type (), value_array);
+  REGISTER_SERIALIZATION (gst_buffer_get_type (), buffer);
+  REGISTER_SERIALIZATION (gst_sample_get_type (), sample);
+  REGISTER_SERIALIZATION (gst_fraction_get_type (), fraction);
+  REGISTER_SERIALIZATION (gst_caps_get_type (), caps);
+  REGISTER_SERIALIZATION (gst_tag_list_get_type (), tag_list);
+  REGISTER_SERIALIZATION (G_TYPE_DATE, date);
+  REGISTER_SERIALIZATION (gst_date_time_get_type (), date_time);
+  REGISTER_SERIALIZATION (gst_bitmask_get_type (), bitmask);
+  REGISTER_SERIALIZATION (gst_structure_get_type (), structure);
+  REGISTER_SERIALIZATION (gst_flagset_get_type (), flagset);
 
-    gst_value.type = gst_int_range_get_type ();
-    gst_value_register (&gst_value);
-  }
+  REGISTER_SERIALIZATION_NO_COMPARE (gst_segment_get_type (), segment);
+  REGISTER_SERIALIZATION_NO_COMPARE (gst_caps_features_get_type (),
+      caps_features);
 
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_int64_range,
-      gst_value_serialize_int64_range,
-      gst_value_deserialize_int64_range,
-    };
+  REGISTER_SERIALIZATION_COMPARE_ONLY (gst_allocation_params_get_type (),
+      allocation_params);
+  REGISTER_SERIALIZATION_COMPARE_ONLY (G_TYPE_OBJECT, object);
 
-    gst_value.type = gst_int64_range_get_type ();
-    gst_value_register (&gst_value);
-  }
+  REGISTER_SERIALIZATION_CONST (G_TYPE_DOUBLE, double);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_FLOAT, float);
 
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_double_range,
-      gst_value_serialize_double_range,
-      gst_value_deserialize_double_range,
-    };
+  REGISTER_SERIALIZATION_CONST (G_TYPE_STRING, string);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_BOOLEAN, boolean);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_ENUM, enum);
 
-    gst_value.type = gst_double_range_get_type ();
-    gst_value_register (&gst_value);
-  }
+  REGISTER_SERIALIZATION_CONST (G_TYPE_FLAGS, gflags);
 
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_fraction_range,
-      gst_value_serialize_fraction_range,
-      gst_value_deserialize_fraction_range,
-    };
+  REGISTER_SERIALIZATION_CONST (G_TYPE_INT, int);
 
-    gst_value.type = gst_fraction_range_get_type ();
-    gst_value_register (&gst_value);
-  }
+  REGISTER_SERIALIZATION_CONST (G_TYPE_INT64, int64);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_LONG, long);
 
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_list,
-      gst_value_serialize_list,
-      gst_value_deserialize_list,
-    };
+  REGISTER_SERIALIZATION_CONST (G_TYPE_UINT, uint);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_UINT64, uint64);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_ULONG, ulong);
 
-    gst_value.type = gst_value_list_get_type ();
-    gst_value_register (&gst_value);
-  }
-
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_array,
-      gst_value_serialize_array,
-      gst_value_deserialize_array,
-    };
-
-    gst_value.type = gst_value_array_get_type ();
-    gst_value_register (&gst_value);
-  }
-
-  {
-#if 0
-    static const GTypeValueTable value_table = {
-      gst_value_init_buffer,
-      NULL,
-      gst_value_copy_buffer,
-      NULL,
-      "i",
-      NULL,                     /*gst_value_collect_buffer, */
-      "p",
-      NULL                      /*gst_value_lcopy_buffer */
-    };
-#endif
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_buffer,
-      gst_value_serialize_buffer,
-      gst_value_deserialize_buffer,
-    };
-
-    gst_value.type = GST_TYPE_BUFFER;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_sample,
-      gst_value_serialize_sample,
-      gst_value_deserialize_sample,
-    };
-
-    gst_value.type = GST_TYPE_SAMPLE;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_fraction,
-      gst_value_serialize_fraction,
-      gst_value_deserialize_fraction,
-    };
-
-    gst_value.type = gst_fraction_get_type ();
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_caps,
-      gst_value_serialize_caps,
-      gst_value_deserialize_caps,
-    };
-
-    gst_value.type = GST_TYPE_CAPS;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      NULL,
-      gst_value_serialize_segment,
-      gst_value_deserialize_segment,
-    };
-
-    gst_value.type = GST_TYPE_SEGMENT;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      NULL,
-      gst_value_serialize_structure,
-      gst_value_deserialize_structure,
-    };
-
-    gst_value.type = GST_TYPE_STRUCTURE;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      NULL,
-      gst_value_serialize_caps_features,
-      gst_value_deserialize_caps_features,
-    };
-
-    gst_value.type = GST_TYPE_CAPS_FEATURES;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      NULL,
-      gst_value_serialize_tag_list,
-      gst_value_deserialize_tag_list,
-    };
-
-    gst_value.type = GST_TYPE_TAG_LIST;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_date,
-      gst_value_serialize_date,
-      gst_value_deserialize_date,
-    };
-
-    gst_value.type = G_TYPE_DATE;
-    gst_value_register (&gst_value);
-  }
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_date_time,
-      gst_value_serialize_date_time,
-      gst_value_deserialize_date_time,
-    };
-
-    gst_value.type = gst_date_time_get_type ();
-    gst_value_register (&gst_value);
-  }
-
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_bitmask,
-      gst_value_serialize_bitmask,
-      gst_value_deserialize_bitmask,
-    };
-
-    gst_value.type = gst_bitmask_get_type ();
-    gst_value_register (&gst_value);
-  }
-
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_allocation_params,
-      NULL,
-      NULL,
-    };
-
-    gst_value.type = gst_allocation_params_get_type ();
-    gst_value_register (&gst_value);
-  }
-
-  {
-    static GstValueTable gst_value = {
-      0,
-      gst_value_compare_object,
-      NULL,
-      NULL,
-    };
-
-    gst_value.type = G_TYPE_OBJECT;
-    gst_value_register (&gst_value);
-  }
-
-  REGISTER_SERIALIZATION (G_TYPE_DOUBLE, double);
-  REGISTER_SERIALIZATION (G_TYPE_FLOAT, float);
-
-  REGISTER_SERIALIZATION (G_TYPE_STRING, string);
-  REGISTER_SERIALIZATION (G_TYPE_BOOLEAN, boolean);
-  REGISTER_SERIALIZATION (G_TYPE_ENUM, enum);
-
-  REGISTER_SERIALIZATION (G_TYPE_FLAGS, flags);
-
-  REGISTER_SERIALIZATION (G_TYPE_INT, int);
-
-  REGISTER_SERIALIZATION (G_TYPE_INT64, int64);
-  REGISTER_SERIALIZATION (G_TYPE_LONG, long);
-
-  REGISTER_SERIALIZATION (G_TYPE_UINT, uint);
-  REGISTER_SERIALIZATION (G_TYPE_UINT64, uint64);
-  REGISTER_SERIALIZATION (G_TYPE_ULONG, ulong);
-
-  REGISTER_SERIALIZATION (G_TYPE_UCHAR, uchar);
+  REGISTER_SERIALIZATION_CONST (G_TYPE_UCHAR, uchar);
 
   g_value_register_transform_func (GST_TYPE_INT_RANGE, G_TYPE_STRING,
       gst_value_transform_int_range_string);
@@ -6421,25 +6726,32 @@
   g_value_register_transform_func (G_TYPE_STRING, GST_TYPE_BITMASK,
       gst_value_transform_string_bitmask);
 
+  g_value_register_transform_func (GST_TYPE_FLAG_SET, G_TYPE_STRING,
+      gst_value_transform_flagset_string);
+  g_value_register_transform_func (G_TYPE_STRING, GST_TYPE_FLAG_SET,
+      gst_value_transform_string_flagset);
+
   gst_value_register_intersect_func (G_TYPE_INT, GST_TYPE_INT_RANGE,
       gst_value_intersect_int_int_range);
   gst_value_register_intersect_func (GST_TYPE_INT_RANGE, GST_TYPE_INT_RANGE,
       gst_value_intersect_int_range_int_range);
   gst_value_register_intersect_func (G_TYPE_INT64, GST_TYPE_INT64_RANGE,
       gst_value_intersect_int64_int64_range);
-  gst_value_register_intersect_func (GST_TYPE_INT64_RANGE, GST_TYPE_INT64_RANGE,
-      gst_value_intersect_int64_range_int64_range);
+  gst_value_register_intersect_func (GST_TYPE_INT64_RANGE,
+      GST_TYPE_INT64_RANGE, gst_value_intersect_int64_range_int64_range);
   gst_value_register_intersect_func (G_TYPE_DOUBLE, GST_TYPE_DOUBLE_RANGE,
       gst_value_intersect_double_double_range);
   gst_value_register_intersect_func (GST_TYPE_DOUBLE_RANGE,
       GST_TYPE_DOUBLE_RANGE, gst_value_intersect_double_range_double_range);
-  gst_value_register_intersect_func (GST_TYPE_ARRAY,
-      GST_TYPE_ARRAY, gst_value_intersect_array);
-  gst_value_register_intersect_func (GST_TYPE_FRACTION, GST_TYPE_FRACTION_RANGE,
-      gst_value_intersect_fraction_fraction_range);
+  gst_value_register_intersect_func (GST_TYPE_ARRAY, GST_TYPE_ARRAY,
+      gst_value_intersect_array);
+  gst_value_register_intersect_func (GST_TYPE_FRACTION,
+      GST_TYPE_FRACTION_RANGE, gst_value_intersect_fraction_fraction_range);
   gst_value_register_intersect_func (GST_TYPE_FRACTION_RANGE,
       GST_TYPE_FRACTION_RANGE,
       gst_value_intersect_fraction_range_fraction_range);
+  gst_value_register_intersect_func (GST_TYPE_FLAG_SET, GST_TYPE_FLAG_SET,
+      gst_value_intersect_flagset_flagset);
 
   gst_value_register_subtract_func (G_TYPE_INT, GST_TYPE_INT_RANGE,
       gst_value_subtract_int_int_range);
@@ -6451,18 +6763,18 @@
       gst_value_subtract_int64_int64_range);
   gst_value_register_subtract_func (GST_TYPE_INT64_RANGE, G_TYPE_INT64,
       gst_value_subtract_int64_range_int64);
-  gst_value_register_subtract_func (GST_TYPE_INT64_RANGE, GST_TYPE_INT64_RANGE,
-      gst_value_subtract_int64_range_int64_range);
+  gst_value_register_subtract_func (GST_TYPE_INT64_RANGE,
+      GST_TYPE_INT64_RANGE, gst_value_subtract_int64_range_int64_range);
   gst_value_register_subtract_func (G_TYPE_DOUBLE, GST_TYPE_DOUBLE_RANGE,
       gst_value_subtract_double_double_range);
   gst_value_register_subtract_func (GST_TYPE_DOUBLE_RANGE, G_TYPE_DOUBLE,
       gst_value_subtract_double_range_double);
   gst_value_register_subtract_func (GST_TYPE_DOUBLE_RANGE,
       GST_TYPE_DOUBLE_RANGE, gst_value_subtract_double_range_double_range);
-  gst_value_register_subtract_func (GST_TYPE_FRACTION, GST_TYPE_FRACTION_RANGE,
-      gst_value_subtract_fraction_fraction_range);
-  gst_value_register_subtract_func (GST_TYPE_FRACTION_RANGE, GST_TYPE_FRACTION,
-      gst_value_subtract_fraction_range_fraction);
+  gst_value_register_subtract_func (GST_TYPE_FRACTION,
+      GST_TYPE_FRACTION_RANGE, gst_value_subtract_fraction_fraction_range);
+  gst_value_register_subtract_func (GST_TYPE_FRACTION_RANGE,
+      GST_TYPE_FRACTION, gst_value_subtract_fraction_range_fraction);
   gst_value_register_subtract_func (GST_TYPE_FRACTION_RANGE,
       GST_TYPE_FRACTION_RANGE,
       gst_value_subtract_fraction_range_fraction_range);
@@ -6478,6 +6790,33 @@
       gst_value_union_int_int_range);
   gst_value_register_union_func (GST_TYPE_INT_RANGE, GST_TYPE_INT_RANGE,
       gst_value_union_int_range_int_range);
+  gst_value_register_union_func (GST_TYPE_FLAG_SET, GST_TYPE_FLAG_SET,
+      gst_value_union_flagset_flagset);
+
+#if GST_VERSION_NANO == 1
+  /* If building from git master, check starting array sizes matched actual size
+   * so we can keep the defines in sync and save a few reallocs on startup */
+  if (gst_value_table->len != GST_VALUE_TABLE_DEFAULT_SIZE) {
+    GST_ERROR ("Wrong initial gst_value_table size. "
+        "Please set GST_VALUE_TABLE_DEFAULT_SIZE to %u in gstvalue.c",
+        gst_value_table->len);
+  }
+  if (gst_value_union_funcs->len != GST_VALUE_UNION_TABLE_DEFAULT_SIZE) {
+    GST_ERROR ("Wrong initial gst_value_union_funcs table size. "
+        "Please set GST_VALUE_UNION_TABLE_DEFAULT_SIZE to %u in gstvalue.c",
+        gst_value_union_funcs->len);
+  }
+  if (gst_value_intersect_funcs->len != GST_VALUE_INTERSECT_TABLE_DEFAULT_SIZE) {
+    GST_ERROR ("Wrong initial gst_value_intersect_funcs table size. "
+        "Please set GST_VALUE_INTERSECT_TABLE_DEFAULT_SIZE to %u in gstvalue.c",
+        gst_value_intersect_funcs->len);
+  }
+  if (gst_value_subtract_funcs->len != GST_VALUE_SUBTRACT_TABLE_DEFAULT_SIZE) {
+    GST_ERROR ("Wrong initial gst_value_subtract_funcs table size. "
+        "Please set GST_VALUE_SUBTRACT_TABLE_DEFAULT_SIZE to %u in gstvalue.c",
+        gst_value_subtract_funcs->len);
+  }
+#endif
 
 #if 0
   /* Implement these if needed */
@@ -6487,3 +6826,43 @@
       GST_TYPE_FRACTION_RANGE, gst_value_union_fraction_range_fraction_range);
 #endif
 }
+
+static void
+gst_flagset_class_init (gpointer g_class, gpointer class_data)
+{
+  GstFlagSetClass *f_class = (GstFlagSetClass *) (g_class);
+  f_class->flags_type = (GType) GPOINTER_TO_SIZE (class_data);
+}
+
+/**
+ * gst_flagset_register:
+ * @flags_type: a #GType of a #G_TYPE_FLAGS type.
+ *
+ * Create a new sub-class of #GST_TYPE_FLAG_SET
+ * which will pretty-print the human-readable flags
+ * when serializing, for easier debugging.
+ *
+ * Since: 1.6
+ */
+GType
+gst_flagset_register (GType flags_type)
+{
+  GTypeInfo info = {
+    sizeof (GstFlagSetClass),
+    NULL, NULL,
+    (GClassInitFunc) gst_flagset_class_init,
+    NULL, GSIZE_TO_POINTER (flags_type), 0, 0, NULL, NULL
+  };
+  GType t;
+  gchar *class_name;
+
+  g_return_val_if_fail (G_TYPE_IS_FLAGS (flags_type), 0);
+
+  class_name = g_strdup_printf ("%sSet", g_type_name (flags_type));
+
+  t = g_type_register_static (GST_TYPE_FLAG_SET,
+      g_intern_string (class_name), &info, 0);
+  g_free (class_name);
+
+  return t;
+}
diff --git a/gst/gstvalue.h b/gst/gstvalue.h
index de01abc..d45d5f8 100644
--- a/gst/gstvalue.h
+++ b/gst/gstvalue.h
@@ -80,12 +80,14 @@
  * Can be used together with #GST_FOURCC_FORMAT to properly output a
  * #guint32 fourcc value in a printf()-style text message.
  */
-#define GST_FOURCC_ARGS(fourcc) \
-        ((gchar) ((fourcc)     &0xff)), \
-        ((gchar) (((fourcc)>>8 )&0xff)), \
-        ((gchar) (((fourcc)>>16)&0xff)), \
-        ((gchar) (((fourcc)>>24)&0xff))
 
+#define __GST_PRINT_CHAR(c) \
+  g_ascii_isprint(c) ? (c) : '.'
+#define GST_FOURCC_ARGS(fourcc)               \
+  __GST_PRINT_CHAR((fourcc) & 0xff),          \
+  __GST_PRINT_CHAR(((fourcc) >> 8) & 0xff),   \
+  __GST_PRINT_CHAR(((fourcc) >> 16) & 0xff),  \
+  __GST_PRINT_CHAR(((fourcc) >> 24) & 0xff)
 /**
  * GST_VALUE_HOLDS_INT_RANGE:
  * @x: the #GValue to check
@@ -198,6 +200,26 @@
  */
 #define GST_VALUE_HOLDS_BITMASK(x)      ((x) != NULL && G_VALUE_TYPE(x) == _gst_bitmask_type)
 
+/**
+ * GST_VALUE_HOLDS_FLAG_SET:
+ * @x: the #GValue to check
+ *
+ * Checks if the given #GValue contains a #GST_TYPE_FLAG_SET value.
+ *
+ * Since: 1.6
+ */
+#define GST_VALUE_HOLDS_FLAG_SET(x)     (G_TYPE_CHECK_VALUE_TYPE ((x), GST_TYPE_FLAG_SET))
+
+/*
+ * GST_FLAG_SET_MASK_EXACT:
+ * A mask value with all bits set, for use as a
+ * #GstFlagSet mask where all flag bits must match
+ * exactly
+ *
+ * Since: 1.6
+ */
+#define GST_FLAG_SET_MASK_EXACT ((guint)(-1))
+
 GST_EXPORT GType _gst_int_range_type;
 
 /**
@@ -298,6 +320,21 @@
 
 #define GST_TYPE_BITMASK                 (_gst_bitmask_type)
 
+GST_EXPORT GType _gst_flagset_type;
+
+/**
+ * GST_TYPE_FLAG_SET:
+ *
+ * a #GValue type that represents a 32-bit flag bitfield, with 32-bit
+ * mask indicating which of the bits in the field are explicitly set.
+ * Useful for negotiation.
+ *
+ * Returns: the #GType of GstFlags (which is not explicitly typed)
+ *
+ * Since: 1.6
+ */
+#define GST_TYPE_FLAG_SET                   (_gst_flagset_type)
+
 /**
  * GST_TYPE_G_THREAD:
  *
@@ -405,6 +442,7 @@
 GType gst_value_list_get_type (void);
 GType gst_value_array_get_type (void);
 GType gst_bitmask_get_type (void);
+GType gst_flagset_get_type (void);
 
 /* Hide this compatibility type from introspection */
 #ifndef __GI_SCANNER__
@@ -524,6 +562,10 @@
 guint64         gst_value_get_bitmask           (const GValue   *value);
 void            gst_value_set_bitmask           (GValue         *value,
                                                  guint64         bitmask);
+/* flagset */
+void            gst_value_set_flagset (GValue * value, guint flags, guint mask);
+guint           gst_value_get_flagset_flags (const GValue * value);
+guint           gst_value_get_flagset_mask (const GValue * value);
 
 /* compare */
 gint            gst_value_compare               (const GValue   *value1,
@@ -559,6 +601,9 @@
 gboolean        gst_value_fixate                (GValue         *dest,
                                                  const GValue   *src);
 
+/* Flagset registration wrapper */
+GType		gst_flagset_register (GType flags_type);
+
 G_END_DECLS
 
 #endif
diff --git a/gst/gstversion.h.in b/gst/gstversion.h.in
index 4ed2c92..a74c2d1 100644
--- a/gst/gstversion.h.in
+++ b/gst/gstversion.h.in
@@ -19,6 +19,12 @@
  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  * Boston, MA 02110-1301, USA.
  */
+
+#ifndef __GST_VERSION_H__
+#define __GST_VERSION_H__
+
+#include <glib.h>
+
 /**
  * SECTION:gstversion
  * @short_description: GStreamer version macros.
@@ -35,9 +41,6 @@
  * The version macros get defined by including "gst/gst.h".
  */
 
-#ifndef __GST_VERSION_H__
-#define __GST_VERSION_H__
-
 G_BEGIN_DECLS
 
 /**
diff --git a/gst/parse/Makefile.am b/gst/parse/Makefile.am
index a26d471..bb873aa 100644
--- a/gst/parse/Makefile.am
+++ b/gst/parse/Makefile.am
@@ -19,14 +19,6 @@
 
 noinst_HEADERS = types.h
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:STATIC libgstparse -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstparse_la_SOURCES) $(nodist_libgstparse_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstparse_la_CFLAGS) \
-	 -:LDFLAGS $(libgstparse_la_LIBADD) \
-	> $@
-
 grammar.tab.c grammar.tab.h: grammar.y
 	$(AM_V_GEN)$(BISON_PATH) -d -v -ppriv_gst_parse_yy $(srcdir)/grammar.y -o grammar.tab.c && \
 	mv grammar.tab.c grammar.tab_tmp.c && \
diff --git a/gst/parse/Makefile.in b/gst/parse/Makefile.in
index 517775a..ab17d32 100644
--- a/gst/parse/Makefile.in
+++ b/gst/parse/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = gst/parse
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(noinst_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,6 +130,8 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -201,6 +212,7 @@
   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@
@@ -212,7 +224,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -303,6 +320,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -314,9 +332,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -338,6 +358,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -399,8 +420,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -466,6 +489,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -513,7 +537,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/parse/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu gst/parse/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -803,14 +826,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:STATIC libgstparse -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstparse_la_SOURCES) $(nodist_libgstparse_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstparse_la_CFLAGS) \
-	 -:LDFLAGS $(libgstparse_la_LIBADD) \
-	> $@
 
 grammar.tab.c grammar.tab.h: grammar.y
 	$(AM_V_GEN)$(BISON_PATH) -d -v -ppriv_gst_parse_yy $(srcdir)/grammar.y -o grammar.tab.c && \
diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y
index 53ee15b..f75d9bf 100644
--- a/gst/parse/grammar.y
+++ b/gst/parse/grammar.y
@@ -390,7 +390,8 @@
   }
   pos++;
   while (g_ascii_isspace (*pos)) pos++;
-  if (*pos == '"') {
+  /* truncate a string if it is delimited with double quotes */
+  if (*pos == '"' && pos[strlen (pos) - 1] == '"') {
     pos++;
     pos[strlen (pos) - 1] = '\0';
   }
diff --git a/gst/printf/Makefile.in b/gst/printf/Makefile.in
index 092dcea..a93e9e4 100644
--- a/gst/printf/Makefile.in
+++ b/gst/printf/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,8 +90,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = gst/printf
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -90,6 +98,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -107,7 +116,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -120,6 +129,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -199,6 +209,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -210,7 +221,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -301,6 +317,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -312,9 +329,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -336,6 +355,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -397,8 +417,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -464,6 +486,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -521,7 +544,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/printf/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu gst/printf/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -842,6 +864,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/gst/printf/printf-parse.c b/gst/printf/printf-parse.c
index 5d60448..d045ae8 100644
--- a/gst/printf/printf-parse.c
+++ b/gst/printf/printf-parse.c
@@ -256,6 +256,10 @@
               cp += 3;
             }
 #endif
+            else if (cp[0] == 'I' && cp[1] == '3' && cp[2] == '2') {
+              //flags = 32;
+              cp += 3;
+            }
 #ifdef HAVE_INTMAX_T
             else if (*cp == 'j') {
               if (sizeof (intmax_t) > sizeof (long)) {
diff --git a/gst/printf/vasnprintf.c b/gst/printf/vasnprintf.c
index 7f3d9e2..a97404c 100644
--- a/gst/printf/vasnprintf.c
+++ b/gst/printf/vasnprintf.c
@@ -121,6 +121,11 @@
       digits = upper;
       negative = FALSE;
       break;
+    case 'u':
+      base = 10;
+      digits = lower;
+      negative = FALSE;
+      break;
     default:
       base = 10;
       digits = lower;
@@ -234,6 +239,11 @@
     argument *a;
 
     dp = &directives->dir[i];
+
+    /* %% has no arguments, for example */
+    if (dp->arg_index < 0)
+      continue;
+
     a = &arguments->arg[dp->arg_index];
 
     if (a->type == TYPE_POINTER_EXT) {
diff --git a/gstreamer.doap b/gstreamer.doap
index 4c3031f..9c47fa3 100644
--- a/gstreamer.doap
+++ b/gstreamer.doap
@@ -40,51 +40,41 @@
 
  <release>
   <Version>
-   <revision>1.4.5</revision>
-   <branch>1.4</branch>
+   <revision>1.5.91</revision>
+   <branch>1.5</branch>
    <name></name>
-   <created>2014-12-18</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.4.5.tar.xz" />
+   <created>2015-09-18</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.5.91.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.4.4</revision>
-   <branch>1.4</branch>
+   <revision>1.5.90</revision>
+   <branch>1.5</branch>
    <name></name>
-   <created>2014-11-06</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.4.4.tar.xz" />
+   <created>2015-08-19</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.5.90.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.4.3</revision>
-   <branch>1.4</branch>
+   <revision>1.5.2</revision>
+   <branch>1.5</branch>
    <name></name>
-   <created>2014-09-24</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.4.3.tar.xz" />
+   <created>2015-06-24</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.5.2.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.4.2</revision>
-   <branch>1.4</branch>
+   <revision>1.5.1</revision>
+   <branch>1.5</branch>
    <name></name>
-   <created>2014-09-19</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.4.2.tar.xz" />
-  </Version>
- </release>
-
- <release>
-  <Version>
-   <revision>1.4.1</revision>
-   <branch>1.4</branch>
-   <name></name>
-   <created>2014-08-27</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.4.1.tar.xz" />
+   <created>2015-06-07</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.5.1.tar.xz" />
   </Version>
  </release>
 
diff --git a/gstreamer.spec b/gstreamer.spec
index e97171b..fac5d48 100644
--- a/gstreamer.spec
+++ b/gstreamer.spec
@@ -4,7 +4,7 @@
 %define 	_glib2		2.32.0
 
 Name: 		%{gstreamer}
-Version: 	1.4.5
+Version: 	1.5.91
 Release: 	1
 Summary: 	GStreamer streaming media framework runtime
 
diff --git a/install-sh b/install-sh
index 377bb86..59990a1 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2014-09-12.12; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@
 # This script is compatible with the BSD install script, but was written
 # from scratch.
 
+tab='	'
 nl='
 '
-IFS=" ""	$nl"
+IFS=" $tab$nl"
 
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
 
-# Don't use :- since 4.3BSD and earlier shells don't like it.
 doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
 
 # Put in absolute file names if you don't have them in your path;
 # or use environment vars.
@@ -68,17 +64,6 @@
 rmprog=${RMPROG-rm}
 stripprog=${STRIPPROG-strip}
 
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
 posix_mkdir=
 
 # Desired mode of installed file.
@@ -97,7 +82,7 @@
 dst_arg=
 
 copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
 
 usage="\
 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@
     -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-	shift;;
+        shift;;
 
     --help) echo "$usage"; exit $?;;
 
     -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
 
     -o) chowncmd="$chownprog $2"
-	shift;;
+        shift;;
 
     -s) stripcmd=$stripprog;;
 
-    -t) dst_arg=$2
-	# Protect names problematic for 'test' and other utilities.
-	case $dst_arg in
-	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
-	esac
-	shift;;
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
 
-    -T) no_target_directory=true;;
+    -T) is_target_a_directory=never;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    --)	shift
-	break;;
+    --) shift
+        break;;
 
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
 
     *)  break;;
   esac
   shift
 done
 
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
   # When -d is used, all remaining arguments are directories to create.
   # When -t is used, the destination is already specified.
@@ -208,6 +204,15 @@
 fi
 
 if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
   do_exit='(exit $ret); exit $ret'
   trap "ret=129; $do_exit" 1
   trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@
 
     *[0-7])
       if test -z "$stripcmd"; then
-	u_plus_rw=
+        u_plus_rw=
       else
-	u_plus_rw='% 200'
+        u_plus_rw='% 200'
       fi
       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
     *)
       if test -z "$stripcmd"; then
-	u_plus_rw=
+        u_plus_rw=
       else
-	u_plus_rw=,u+rw
+        u_plus_rw=,u+rw
       fi
       cp_umask=$mode$u_plus_rw;;
   esac
@@ -269,41 +274,15 @@
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
       fi
       dstdir=$dst
       dst=$dstdir/`basename "$src"`
       dstdir_status=0
     else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
+      dstdir=`dirname "$dst"`
       test -d "$dstdir"
       dstdir_status=$?
     fi
@@ -314,74 +293,81 @@
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
 
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
 
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
 
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            # $RANDOM is not portable (e.g. dash);  use it when possible to
+            # lower collision chance
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
 
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
+            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
+            # create the $tmpdir first (and fail if unsuccessful) to make sure
+            # that nobody tries to guess the $tmpdir name.
+            if (umask $mkdir_umask &&
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
     esac
 
     if
       $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       )
     then :
     else
@@ -391,53 +377,51 @@
       # directory the slow way, step by step, checking for races as we go.
 
       case $dstdir in
-	/*) prefix='/';;
-	[-=\(\)!]*) prefix='./';;
-	*)  prefix='';;
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
       esac
 
-      eval "$initialize_posix_glob"
-
       oIFS=$IFS
       IFS=/
-      $posix_glob set -f
+      set -f
       set fnord $dstdir
       shift
-      $posix_glob set +f
+      set +f
       IFS=$oIFS
 
       prefixes=
 
       for d
       do
-	test X"$d" = X && continue
+        test X"$d" = X && continue
 
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
       done
 
       if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
       fi
     fi
   fi
@@ -472,15 +456,12 @@
 
     # If -C, don't bother to copy if it wouldn't change the file.
     if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
        set X $old && old=:$2:$4:$5:$6 &&
        set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
+       set +f &&
        test "$old" = "$new" &&
        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
     then
@@ -493,24 +474,24 @@
       # to itself, or perhaps because mv is so ancient that it does not
       # support -f.
       {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
 
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
       }
     fi || exit 1
 
diff --git a/libs/Makefile.am b/libs/Makefile.am
index c351b24..062cb55 100644
--- a/libs/Makefile.am
+++ b/libs/Makefile.am
@@ -1,6 +1 @@
 SUBDIRS = gst
-
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer \
-	 -:SUBDIR libs/gst \
-	> $@
diff --git a/libs/Makefile.in b/libs/Makefile.in
index b19c609..7c0f0e8 100644
--- a/libs/Makefile.in
+++ b/libs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = libs
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -177,6 +188,7 @@
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -213,7 +225,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -304,6 +321,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -315,9 +333,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -339,6 +359,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -400,8 +421,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -467,6 +490,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -495,7 +519,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -790,11 +813,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer \
-	 -:SUBDIR libs/gst \
-	> $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libs/gst/Makefile.am b/libs/gst/Makefile.am
index f1ae69c..c89aad1 100644
--- a/libs/gst/Makefile.am
+++ b/libs/gst/Makefile.am
@@ -14,9 +14,3 @@
 
 SUBDIRS = $(SUBDIRS_ALWAYS) $(SUBDIRS_CHECK) $(SUBDIRS_HELPERS)
 DIST_SUBDIRS = $(SUBDIRS_ALWAYS) check helpers
-
-Android.mk: Makefile.am
-	echo $(PWD)
-	androgenizer -:PROJECT gstreamer \
-	 -:SUBDIR $(patsubst %, libs/gst/%, $(SUBDIRS)) \
-	> $@
diff --git a/libs/gst/Makefile.in b/libs/gst/Makefile.in
index 6f9e86f..97d94e6 100644
--- a/libs/gst/Makefile.in
+++ b/libs/gst/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = libs/gst
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -176,6 +187,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -212,7 +224,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -303,6 +320,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -314,9 +332,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -338,6 +358,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -399,8 +420,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -466,6 +489,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -500,7 +524,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -795,12 +818,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
 
-Android.mk: Makefile.am
-	echo $(PWD)
-	androgenizer -:PROJECT gstreamer \
-	 -:SUBDIR $(patsubst %, libs/gst/%, $(SUBDIRS)) \
-	> $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libs/gst/base/Makefile.am b/libs/gst/base/Makefile.am
index 738e718..92424ab 100644
--- a/libs/gst/base/Makefile.am
+++ b/libs/gst/base/Makefile.am
@@ -57,18 +57,6 @@
 
 gcov: $(libgstbase_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstbase-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstbase_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstbase_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstbase_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstbase_@GST_API_VERSION@_la_LIBADD) \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst/base \
-	 -:HEADERS $(libgstbase_@GST_API_VERSION@include_HEADERS) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 if HAVE_INTROSPECTION
 BUILT_GIRSOURCES = GstBase-@GST_API_VERSION@.gir
 
@@ -76,7 +64,7 @@
 gir_sources=$(patsubst %,$(srcdir)/%, $(libgstbase_@GST_API_VERSION@_la_SOURCES))
 
 GstBase-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstbase-@GST_API_VERSION@.la
-	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 		$(INTROSPECTION_SCANNER) -v --namespace GstBase \
 		--nsversion=@GST_API_VERSION@ \
@@ -94,7 +82,7 @@
 		--libtool="${LIBTOOL}" \
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg-export gstreamer-base-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		--output $@ \
 		$(gir_headers) \
 		$(gir_sources)
diff --git a/libs/gst/base/Makefile.in b/libs/gst/base/Makefile.in
index 601edaf..a6f1742 100644
--- a/libs/gst/base/Makefile.in
+++ b/libs/gst/base/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,10 +93,6 @@
 target_triplet = @target@
 @HAVE_INTROSPECTION_TRUE@am__append_1 = $(BUILT_GIRSOURCES) $(typelibs_DATA)
 subdir = libs/gst/base
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp \
-	$(libgstbase_@GST_API_VERSION@include_HEADERS) \
-	$(noinst_HEADERS) README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -95,6 +101,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -112,7 +119,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -125,6 +132,9 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstbase_@GST_API_VERSION@include_HEADERS) \
+	$(noinst_HEADERS) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -249,6 +259,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -260,7 +271,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -351,6 +367,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -362,9 +379,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -386,6 +405,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -447,8 +467,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -514,6 +536,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -603,7 +626,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/base/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/base/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -1088,26 +1110,16 @@
 	uninstall-libgstbase_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
+
 
 %.c.gcov: .libs/libgstbase_@GST_API_VERSION@_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
 
 gcov: $(libgstbase_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstbase-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstbase_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstbase_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstbase_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstbase_@GST_API_VERSION@_la_LIBADD) \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst/base \
-	 -:HEADERS $(libgstbase_@GST_API_VERSION@include_HEADERS) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 @HAVE_INTROSPECTION_TRUE@GstBase-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstbase-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 @HAVE_INTROSPECTION_TRUE@		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_SCANNER) -v --namespace GstBase \
 @HAVE_INTROSPECTION_TRUE@		--nsversion=@GST_API_VERSION@ \
@@ -1125,7 +1137,7 @@
 @HAVE_INTROSPECTION_TRUE@		--libtool="${LIBTOOL}" \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-base-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
 @HAVE_INTROSPECTION_TRUE@		$(gir_sources)
diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c
index fc1582b..3661db4 100644
--- a/libs/gst/base/gstadapter.c
+++ b/libs/gst/base/gstadapter.c
@@ -132,6 +132,7 @@
   GSList *buflist_end;
   gsize size;
   gsize skip;
+  guint count;
 
   /* we keep state of assembled pieces */
   gpointer assembled_data;
@@ -233,6 +234,7 @@
   g_slist_free (adapter->buflist);
   adapter->buflist = NULL;
   adapter->buflist_end = NULL;
+  adapter->count = 0;
   adapter->size = 0;
   adapter->skip = 0;
   adapter->assembled_len = 0;
@@ -346,6 +348,7 @@
     adapter->buflist_end = g_slist_append (adapter->buflist_end, buf);
     adapter->buflist_end = g_slist_next (adapter->buflist_end);
   }
+  ++adapter->count;
 }
 
 #if 0
@@ -549,7 +552,7 @@
 }
 
 /**
- * gst_adapter_copy_bytes:
+ * gst_adapter_copy_bytes: (rename-to gst_adapter_copy)
  * @adapter: a #GstAdapter
  * @offset: the bytes offset in the adapter to start from
  * @size: the number of bytes to copy
@@ -561,8 +564,6 @@
  *
  * Returns: (transfer full): A new #GBytes structure containing the copied data.
  *
- * Rename to: gst_adapter_copy
- *
  * Since: 1.4
  */
 GBytes *
@@ -609,6 +610,7 @@
 
     gst_buffer_unref (cur);
     g = g_slist_delete_link (g, g);
+    --adapter->count;
 
     if (G_UNLIKELY (g == NULL)) {
       GST_LOG_OBJECT (adapter, "adapter empty now");
@@ -653,9 +655,9 @@
   gst_adapter_flush_unchecked (adapter, flush);
 }
 
-/* internal function, nbytes should be flushed after calling this function */
+/* internal function, nbytes should be flushed if needed after calling this function */
 static guint8 *
-gst_adapter_take_internal (GstAdapter * adapter, gsize nbytes)
+gst_adapter_get_internal (GstAdapter * adapter, gsize nbytes)
 {
   guint8 *data;
   gsize toreuse, tocopy;
@@ -725,7 +727,7 @@
   if (G_UNLIKELY (nbytes > adapter->size))
     return NULL;
 
-  data = gst_adapter_take_internal (adapter, nbytes);
+  data = gst_adapter_get_internal (adapter, nbytes);
 
   gst_adapter_flush_unchecked (adapter, nbytes);
 
@@ -733,6 +735,80 @@
 }
 
 /**
+ * gst_adapter_get_buffer_fast:
+ * @adapter:  a #GstAdapter
+ * @nbytes: the number of bytes to get
+ *
+ * Returns a #GstBuffer containing the first @nbytes of the @adapter, but
+ * does not flush them from the adapter. See gst_adapter_take_buffer_fast()
+ * for details.
+ *
+ * Caller owns a reference to the returned buffer. gst_buffer_unref() after
+ * usage.
+ *
+ * Free-function: gst_buffer_unref
+ *
+ * Returns: (transfer full) (nullable): a #GstBuffer containing the first
+ *     @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
+ *     gst_buffer_unref() when no longer needed.
+ *
+ * Since: 1.6
+ */
+GstBuffer *
+gst_adapter_get_buffer_fast (GstAdapter * adapter, gsize nbytes)
+{
+  GstBuffer *buffer = NULL;
+  GstBuffer *cur;
+  GSList *item;
+  gsize skip;
+  gsize left = nbytes;
+
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
+  g_return_val_if_fail (nbytes > 0, NULL);
+
+  GST_LOG_OBJECT (adapter, "getting buffer of %" G_GSIZE_FORMAT " bytes",
+      nbytes);
+
+  /* we don't have enough data, return NULL. This is unlikely
+   * as one usually does an _available() first instead of grabbing a
+   * random size. */
+  if (G_UNLIKELY (nbytes > adapter->size))
+    return NULL;
+
+  skip = adapter->skip;
+  cur = adapter->buflist->data;
+
+  if (skip == 0 && gst_buffer_get_size (cur) == nbytes) {
+    GST_LOG_OBJECT (adapter, "providing buffer of %" G_GSIZE_FORMAT " bytes"
+        " as head buffer", nbytes);
+    buffer = gst_buffer_ref (cur);
+    goto done;
+  }
+
+  for (item = adapter->buflist; item && left > 0; item = item->next) {
+    gsize size, cur_size;
+
+    cur = item->data;
+    cur_size = gst_buffer_get_size (cur);
+    size = MIN (cur_size - skip, left);
+
+    GST_LOG_OBJECT (adapter, "appending %" G_GSIZE_FORMAT " bytes"
+        " via region copy", size);
+    if (buffer)
+      gst_buffer_copy_into (buffer, cur,
+          GST_BUFFER_COPY_MEMORY | GST_BUFFER_COPY_META, skip, size);
+    else
+      buffer = gst_buffer_copy_region (cur, GST_BUFFER_COPY_ALL, skip, size);
+    skip = 0;
+    left -= size;
+  }
+
+done:
+
+  return buffer;
+}
+
+/**
  * gst_adapter_take_buffer_fast:
  * @adapter:  a #GstAdapter
  * @nbytes: the number of bytes to take
@@ -750,6 +826,9 @@
  * The caller needs to explicitly set or unset flags that should be set or
  * unset.
  *
+ * This will also copy over all GstMeta of the input buffers except
+ * for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
+ *
  * This function can return buffer up to the return value of
  * gst_adapter_available() without making copies if possible.
  *
@@ -764,76 +843,56 @@
  *
  * Since: 1.2
  */
-
 GstBuffer *
 gst_adapter_take_buffer_fast (GstAdapter * adapter, gsize nbytes)
 {
-  GstBuffer *buffer = NULL;
-  GstBuffer *cur;
-  GSList *item;
-  gsize skip;
-  gsize left = nbytes;
+  GstBuffer *buffer;
 
   g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
   g_return_val_if_fail (nbytes > 0, NULL);
 
-  GST_LOG_OBJECT (adapter, "taking buffer of %" G_GSIZE_FORMAT " bytes",
-      nbytes);
-
-  /* we don't have enough data, return NULL. This is unlikely
-   * as one usually does an _available() first instead of grabbing a
-   * random size. */
-  if (G_UNLIKELY (nbytes > adapter->size))
-    return NULL;
-
-  skip = adapter->skip;
-  cur = adapter->buflist->data;
-
-  if (skip == 0 && gst_buffer_get_size (cur) == nbytes) {
-    GST_LOG_OBJECT (adapter, "providing buffer of %" G_GSIZE_FORMAT " bytes"
-        " as head buffer", nbytes);
-    buffer = gst_buffer_ref (cur);
-    goto done;
-  }
-
-  for (item = adapter->buflist; item && left > 0; item = item->next) {
-    gsize size;
-
-    cur = item->data;
-    size = MIN (gst_buffer_get_size (cur) - skip, left);
-
-    GST_LOG_OBJECT (adapter, "appending %" G_GSIZE_FORMAT " bytes"
-        " via region copy", size);
-    if (buffer)
-      gst_buffer_copy_into (buffer, cur, GST_BUFFER_COPY_MEMORY, skip, size);
-    else
-      buffer = gst_buffer_copy_region (cur, GST_BUFFER_COPY_ALL, skip, size);
-    skip = 0;
-    left -= size;
-  }
-
-done:
-  gst_adapter_flush_unchecked (adapter, nbytes);
+  buffer = gst_adapter_get_buffer_fast (adapter, nbytes);
+  if (buffer)
+    gst_adapter_flush_unchecked (adapter, nbytes);
 
   return buffer;
 }
 
+static gboolean
+foreach_metadata (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data)
+{
+  GstBuffer *outbuf = user_data;
+  const GstMetaInfo *info = (*meta)->info;
+  gboolean do_copy = FALSE;
+
+  if (gst_meta_api_type_has_tag (info->api, _gst_meta_tag_memory)) {
+    /* never call the transform_meta with memory specific metadata */
+    GST_DEBUG ("not copying memory specific metadata %s",
+        g_type_name (info->api));
+    do_copy = FALSE;
+  } else {
+    do_copy = TRUE;
+    GST_DEBUG ("copying metadata %s", g_type_name (info->api));
+  }
+
+  if (do_copy) {
+    GstMetaTransformCopy copy_data = { FALSE, 0, -1 };
+    GST_DEBUG ("copy metadata %s", g_type_name (info->api));
+    /* simply copy then */
+    info->transform_func (outbuf, *meta, inbuf,
+        _gst_meta_transform_copy, &copy_data);
+  }
+  return TRUE;
+}
+
 /**
- * gst_adapter_take_buffer:
+ * gst_adapter_get_buffer:
  * @adapter: a #GstAdapter
- * @nbytes: the number of bytes to take
+ * @nbytes: the number of bytes to get
  *
- * Returns a #GstBuffer containing the first @nbytes bytes of the
- * @adapter. The returned bytes will be flushed from the adapter.
- * This function is potentially more performant than
- * gst_adapter_take() since it can reuse the memory in pushed buffers
- * by subbuffering or merging. This function will always return a
- * buffer with a single memory region.
- *
- * Note that no assumptions should be made as to whether certain buffer
- * flags such as the DISCONT flag are set on the returned buffer, or not.
- * The caller needs to explicitly set or unset flags that should be set or
- * unset.
+ * Returns a #GstBuffer containing the first @nbytes of the @adapter, but
+ * does not flush them from the adapter. See gst_adapter_take_buffer()
+ * for details.
  *
  * Caller owns a reference to the returned buffer. gst_buffer_unref() after
  * usage.
@@ -843,9 +902,11 @@
  * Returns: (transfer full) (nullable): a #GstBuffer containing the first
  *     @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
  *     gst_buffer_unref() when no longer needed.
+ *
+ * Since: 1.6
  */
 GstBuffer *
-gst_adapter_take_buffer (GstAdapter * adapter, gsize nbytes)
+gst_adapter_get_buffer (GstAdapter * adapter, gsize nbytes)
 {
   GstBuffer *buffer;
   GstBuffer *cur;
@@ -855,7 +916,7 @@
   g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
   g_return_val_if_fail (nbytes > 0, NULL);
 
-  GST_LOG_OBJECT (adapter, "taking buffer of %" G_GSIZE_FORMAT " bytes",
+  GST_LOG_OBJECT (adapter, "getting buffer of %" G_GSIZE_FORMAT " bytes",
       nbytes);
 
   /* we don't have enough data, return NULL. This is unlikely
@@ -894,12 +955,71 @@
   }
 #endif
 
-  data = gst_adapter_take_internal (adapter, nbytes);
+  data = gst_adapter_get_internal (adapter, nbytes);
 
   buffer = gst_buffer_new_wrapped (data, nbytes);
 
+  {
+    GSList *g;
+    GstBuffer *cur;
+    gsize read_offset = 0;
+
+    g = adapter->buflist;
+    while (g && read_offset < nbytes + adapter->skip) {
+      cur = g->data;
+
+      gst_buffer_foreach_meta (cur, foreach_metadata, buffer);
+      read_offset += gst_buffer_get_size (cur);
+
+      g = g_slist_next (g);
+    }
+  }
+
 done:
-  gst_adapter_flush_unchecked (adapter, nbytes);
+
+  return buffer;
+}
+
+/**
+ * gst_adapter_take_buffer:
+ * @adapter: a #GstAdapter
+ * @nbytes: the number of bytes to take
+ *
+ * Returns a #GstBuffer containing the first @nbytes bytes of the
+ * @adapter. The returned bytes will be flushed from the adapter.
+ * This function is potentially more performant than
+ * gst_adapter_take() since it can reuse the memory in pushed buffers
+ * by subbuffering or merging. This function will always return a
+ * buffer with a single memory region.
+ *
+ * Note that no assumptions should be made as to whether certain buffer
+ * flags such as the DISCONT flag are set on the returned buffer, or not.
+ * The caller needs to explicitly set or unset flags that should be set or
+ * unset.
+ *
+ * Since 1.6 this will also copy over all GstMeta of the input buffers except
+ * for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
+ *
+ * Caller owns a reference to the returned buffer. gst_buffer_unref() after
+ * usage.
+ *
+ * Free-function: gst_buffer_unref
+ *
+ * Returns: (transfer full) (nullable): a #GstBuffer containing the first
+ *     @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
+ *     gst_buffer_unref() when no longer needed.
+ */
+GstBuffer *
+gst_adapter_take_buffer (GstAdapter * adapter, gsize nbytes)
+{
+  GstBuffer *buffer;
+
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
+  g_return_val_if_fail (nbytes > 0, NULL);
+
+  buffer = gst_adapter_get_buffer (adapter, nbytes);
+  if (buffer)
+    gst_adapter_flush_unchecked (adapter, nbytes);
 
   return buffer;
 }
@@ -926,7 +1046,7 @@
 {
   GQueue queue = G_QUEUE_INIT;
   GstBuffer *cur;
-  gsize hsize, skip;
+  gsize hsize, skip, cur_size;
 
   g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
   g_return_val_if_fail (nbytes <= adapter->size, NULL);
@@ -936,7 +1056,8 @@
   while (nbytes > 0) {
     cur = adapter->buflist->data;
     skip = adapter->skip;
-    hsize = MIN (nbytes, gst_buffer_get_size (cur) - skip);
+    cur_size = gst_buffer_get_size (cur);
+    hsize = MIN (nbytes, cur_size - skip);
 
     cur = gst_adapter_take_buffer (adapter, hsize);
 
@@ -948,6 +1069,189 @@
 }
 
 /**
+ * gst_adapter_get_list:
+ * @adapter: a #GstAdapter
+ * @nbytes: the number of bytes to get
+ *
+ * Returns a #GList of buffers containing the first @nbytes bytes of the
+ * @adapter, but does not flush them from the adapter. See
+ * gst_adapter_take_list() for details.
+ *
+ * Caller owns returned list and contained buffers. gst_buffer_unref() each
+ * buffer in the list before freeing the list after usage.
+ *
+ * Returns: (element-type Gst.Buffer) (transfer full) (nullable): a #GList of
+ *     buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
+ *     bytes are not available
+ *
+ * Since: 1.6
+ */
+GList *
+gst_adapter_get_list (GstAdapter * adapter, gsize nbytes)
+{
+  GQueue queue = G_QUEUE_INIT;
+  GstBuffer *cur, *buffer;
+  gsize hsize, skip, cur_size;
+  GSList *g = NULL;
+
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
+  g_return_val_if_fail (nbytes <= adapter->size, NULL);
+
+  GST_LOG_OBJECT (adapter, "getting %" G_GSIZE_FORMAT " bytes", nbytes);
+
+  g = adapter->buflist;
+  skip = adapter->skip;
+
+  while (nbytes > 0) {
+    cur = g->data;
+    cur_size = gst_buffer_get_size (cur);
+    hsize = MIN (nbytes, cur_size - skip);
+
+    if (skip == 0 && cur_size == hsize) {
+      GST_LOG_OBJECT (adapter,
+          "inserting a buffer of %" G_GSIZE_FORMAT " bytes", hsize);
+      buffer = gst_buffer_ref (cur);
+    } else {
+      GST_LOG_OBJECT (adapter, "inserting a buffer of %" G_GSIZE_FORMAT " bytes"
+          " via region copy", hsize);
+      buffer = gst_buffer_copy_region (cur, GST_BUFFER_COPY_ALL, skip, hsize);
+    }
+
+    g_queue_push_tail (&queue, buffer);
+
+    nbytes -= hsize;
+    skip = 0;
+    g = g_slist_next (g);
+  }
+
+  return queue.head;
+}
+
+/**
+ * gst_adapter_take_buffer_list:
+ * @adapter: a #GstAdapter
+ * @nbytes: the number of bytes to take
+ *
+ * Returns a #GstBufferList of buffers containing the first @nbytes bytes of
+ * the @adapter. The returned bytes will be flushed from the adapter.
+ * When the caller can deal with individual buffers, this function is more
+ * performant because no memory should be copied.
+ *
+ * Caller owns the returned list. Call gst_buffer_list_unref() to free
+ * the list after usage.
+ *
+ * Returns: (transfer full) (nullable): a #GstBufferList of buffers containing
+ *     the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
+ *     available
+ *
+ * Since: 1.6
+ */
+GstBufferList *
+gst_adapter_take_buffer_list (GstAdapter * adapter, gsize nbytes)
+{
+  GstBufferList *buffer_list;
+  GstBuffer *cur;
+  gsize hsize, skip, cur_size;
+  guint n_bufs;
+
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
+
+  if (nbytes > adapter->size)
+    return NULL;
+
+  GST_LOG_OBJECT (adapter, "taking %" G_GSIZE_FORMAT " bytes", nbytes);
+
+  /* try to create buffer list with sufficient size, so no resize is done later */
+  if (adapter->count < 64)
+    n_bufs = adapter->count;
+  else
+    n_bufs = (adapter->count * nbytes * 1.2 / adapter->size) + 1;
+
+  buffer_list = gst_buffer_list_new_sized (n_bufs);
+
+  while (nbytes > 0) {
+    cur = adapter->buflist->data;
+    skip = adapter->skip;
+    cur_size = gst_buffer_get_size (cur);
+    hsize = MIN (nbytes, cur_size - skip);
+
+    gst_buffer_list_add (buffer_list, gst_adapter_take_buffer (adapter, hsize));
+    nbytes -= hsize;
+  }
+  return buffer_list;
+}
+
+/**
+ * gst_adapter_get_buffer_list:
+ * @adapter: a #GstAdapter
+ * @nbytes: the number of bytes to get
+ *
+ * Returns a #GstBufferList of buffers containing the first @nbytes bytes of
+ * the @adapter but does not flush them from the adapter. See
+ * gst_adapter_take_buffer_list() for details.
+ *
+ * Caller owns the returned list. Call gst_buffer_list_unref() to free
+ * the list after usage.
+ *
+ * Returns: (transfer full) (nullable): a #GstBufferList of buffers containing
+ *     the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
+ *     available
+ *
+ * Since: 1.6
+ */
+GstBufferList *
+gst_adapter_get_buffer_list (GstAdapter * adapter, gsize nbytes)
+{
+  GstBufferList *buffer_list;
+  GstBuffer *cur, *buffer;
+  gsize hsize, skip, cur_size;
+  guint n_bufs;
+  GSList *g = NULL;
+
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), NULL);
+
+  if (nbytes > adapter->size)
+    return NULL;
+
+  GST_LOG_OBJECT (adapter, "getting %" G_GSIZE_FORMAT " bytes", nbytes);
+
+  /* try to create buffer list with sufficient size, so no resize is done later */
+  if (adapter->count < 64)
+    n_bufs = adapter->count;
+  else
+    n_bufs = (adapter->count * nbytes * 1.2 / adapter->size) + 1;
+
+  buffer_list = gst_buffer_list_new_sized (n_bufs);
+
+  g = adapter->buflist;
+  skip = adapter->skip;
+
+  while (nbytes > 0) {
+    cur = g->data;
+    cur_size = gst_buffer_get_size (cur);
+    hsize = MIN (nbytes, cur_size - skip);
+
+    if (skip == 0 && cur_size == hsize) {
+      GST_LOG_OBJECT (adapter,
+          "inserting a buffer of %" G_GSIZE_FORMAT " bytes", hsize);
+      buffer = gst_buffer_ref (cur);
+    } else {
+      GST_LOG_OBJECT (adapter, "inserting a buffer of %" G_GSIZE_FORMAT " bytes"
+          " via region copy", hsize);
+      buffer = gst_buffer_copy_region (cur, GST_BUFFER_COPY_ALL, skip, hsize);
+    }
+
+    gst_buffer_list_add (buffer_list, buffer);
+
+    nbytes -= hsize;
+    skip = 0;
+    g = g_slist_next (g);
+  }
+
+  return buffer_list;
+}
+
+/**
  * gst_adapter_available:
  * @adapter: a #GstAdapter
  *
diff --git a/libs/gst/base/gstadapter.h b/libs/gst/base/gstadapter.h
index f82fbfb..a5cfb68 100644
--- a/libs/gst/base/gstadapter.h
+++ b/libs/gst/base/gstadapter.h
@@ -63,6 +63,11 @@
 GstBuffer*              gst_adapter_take_buffer         (GstAdapter *adapter, gsize nbytes);
 GList*                  gst_adapter_take_list           (GstAdapter *adapter, gsize nbytes);
 GstBuffer *             gst_adapter_take_buffer_fast    (GstAdapter *adapter, gsize nbytes);
+GstBufferList *         gst_adapter_take_buffer_list    (GstAdapter *adapter, gsize nbytes);
+GstBuffer*              gst_adapter_get_buffer          (GstAdapter *adapter, gsize nbytes);
+GList*                  gst_adapter_get_list            (GstAdapter *adapter, gsize nbytes);
+GstBuffer *             gst_adapter_get_buffer_fast     (GstAdapter *adapter, gsize nbytes);
+GstBufferList *         gst_adapter_get_buffer_list     (GstAdapter *adapter, gsize nbytes);
 gsize                   gst_adapter_available           (GstAdapter *adapter);
 gsize                   gst_adapter_available_fast      (GstAdapter *adapter);
 
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
index 57e78bb..80334fb 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -262,6 +262,7 @@
   gboolean discont;
   gboolean flushing;
   gboolean drain;
+  gboolean saw_gaps;
 
   gint64 offset;
   gint64 sync_offset;
@@ -285,6 +286,7 @@
   gboolean post_min_bitrate;
   gboolean post_avg_bitrate;
   gboolean post_max_bitrate;
+
   guint min_bitrate;
   guint avg_bitrate;
   guint max_bitrate;
@@ -350,8 +352,20 @@
   GList *detect_buffers;
   guint detect_buffers_size;
 
+  /* True when no buffers have been received yet */
+  gboolean first_buffer;
+
   /* if TRUE, a STREAM_START event needs to be pushed */
   gboolean push_stream_start;
+
+  /* When we need to skip more data than we have currently */
+  guint skip;
+
+  /* Tag handling (stream tags only, global tags are passed through as-is) */
+  GstTagList *upstream_tags;
+  GstTagList *parser_tags;
+  GstTagMergeMode parser_tags_merge_mode;
+  gboolean tags_changed;
 };
 
 typedef struct _GstBaseParseSeek
@@ -425,7 +439,8 @@
     GstObject * parent, GstPadMode mode, gboolean active);
 static gboolean gst_base_parse_handle_seek (GstBaseParse * parse,
     GstEvent * event);
-static void gst_base_parse_handle_tag (GstBaseParse * parse, GstEvent * event);
+static void gst_base_parse_set_upstream_tags (GstBaseParse * parse,
+    GstTagList * taglist);
 
 static void gst_base_parse_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -462,9 +477,6 @@
 
 static void gst_base_parse_drain (GstBaseParse * parse);
 
-static void gst_base_parse_post_bitrates (GstBaseParse * parse,
-    gboolean post_min, gboolean post_avg, gboolean post_max);
-
 static gint64 gst_base_parse_find_offset (GstBaseParse * parse,
     GstClockTime time, gboolean before, GstClockTime * _ts);
 static GstFlowReturn gst_base_parse_locate_time (GstBaseParse * parse,
@@ -523,16 +535,6 @@
 
   g_object_unref (parse->priv->adapter);
 
-  if (parse->priv->cache) {
-    gst_buffer_unref (parse->priv->cache);
-    parse->priv->cache = NULL;
-  }
-
-  g_list_foreach (parse->priv->pending_events, (GFunc) gst_mini_object_unref,
-      NULL);
-  g_list_free (parse->priv->pending_events);
-  parse->priv->pending_events = NULL;
-
   if (parse->priv->index) {
     gst_object_unref (parse->priv->index);
     parse->priv->index = NULL;
@@ -647,6 +649,10 @@
   GST_DEBUG_OBJECT (parse, "init ok");
 
   GST_OBJECT_FLAG_SET (parse, GST_ELEMENT_FLAG_INDEXABLE);
+
+  parse->priv->upstream_tags = NULL;
+  parse->priv->parser_tags = NULL;
+  parse->priv->parser_tags_merge_mode = GST_TAG_MERGE_APPEND;
 }
 
 static void
@@ -763,11 +769,8 @@
 }
 
 static inline void
-gst_base_parse_frame_update (GstBaseParse * parse, GstBaseParseFrame * frame,
-    GstBuffer * buf)
+gst_base_parse_update_flags (GstBaseParse * parse)
 {
-  gst_buffer_replace (&frame->buffer, buf);
-
   parse->flags = 0;
 
   /* set flags one by one for clarity */
@@ -779,6 +782,22 @@
     parse->flags |= GST_BASE_PARSE_FLAG_LOST_SYNC;
 }
 
+static inline void
+gst_base_parse_update_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+{
+  if (G_UNLIKELY (parse->priv->discont)) {
+    GST_DEBUG_OBJECT (parse, "marking DISCONT");
+    GST_BUFFER_FLAG_SET (frame->buffer, GST_BUFFER_FLAG_DISCONT);
+  }
+
+  if (parse->priv->prev_offset != parse->priv->offset || parse->priv->new_frame) {
+    GST_LOG_OBJECT (parse, "marking as new frame");
+    frame->flags |= GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME;
+  }
+
+  frame->offset = parse->priv->prev_offset = parse->priv->offset;
+}
+
 static void
 gst_base_parse_reset (GstBaseParse * parse)
 {
@@ -788,6 +807,7 @@
   parse->priv->min_frame_size = 1;
   parse->priv->discont = TRUE;
   parse->priv->flushing = FALSE;
+  parse->priv->saw_gaps = FALSE;
   parse->priv->offset = 0;
   parse->priv->sync_offset = 0;
   parse->priv->update_interval = -1;
@@ -812,9 +832,6 @@
   parse->priv->pts_interpolate = TRUE;
   parse->priv->infer_ts = TRUE;
   parse->priv->has_timing_info = FALSE;
-  parse->priv->post_min_bitrate = TRUE;
-  parse->priv->post_avg_bitrate = TRUE;
-  parse->priv->post_max_bitrate = TRUE;
   parse->priv->min_bitrate = G_MAXUINT;
   parse->priv->max_bitrate = 0;
   parse->priv->avg_bitrate = 0;
@@ -837,6 +854,8 @@
   parse->priv->last_pts = GST_CLOCK_TIME_NONE;
   parse->priv->last_offset = 0;
 
+  parse->priv->skip = 0;
+
   g_list_foreach (parse->priv->pending_events, (GFunc) gst_mini_object_unref,
       NULL);
   g_list_free (parse->priv->pending_events);
@@ -854,8 +873,18 @@
   if (parse->priv->adapter)
     gst_adapter_clear (parse->priv->adapter);
 
+  gst_base_parse_set_upstream_tags (parse, NULL);
+
+  if (parse->priv->parser_tags) {
+    gst_tag_list_unref (parse->priv->parser_tags);
+    parse->priv->parser_tags = NULL;
+  }
+  parse->priv->parser_tags_merge_mode = GST_TAG_MERGE_APPEND;
+
   parse->priv->new_frame = TRUE;
 
+  parse->priv->first_buffer = TRUE;
+
   g_list_foreach (parse->priv->detect_buffers, (GFunc) gst_buffer_unref, NULL);
   g_list_free (parse->priv->detect_buffers);
   parse->priv->detect_buffers = NULL;
@@ -863,6 +892,84 @@
   GST_OBJECT_UNLOCK (parse);
 }
 
+static gboolean
+gst_base_parse_check_bitrate_tag (GstBaseParse * parse, const gchar * tag)
+{
+  gboolean got_tag = FALSE;
+  guint n = 0;
+
+  if (parse->priv->upstream_tags != NULL)
+    got_tag = gst_tag_list_get_uint (parse->priv->upstream_tags, tag, &n);
+
+  if (!got_tag && parse->priv->parser_tags != NULL)
+    got_tag = gst_tag_list_get_uint (parse->priv->parser_tags, tag, &n);
+
+  return got_tag;
+}
+
+/* check if upstream or subclass tags contain bitrates already */
+static void
+gst_base_parse_check_bitrate_tags (GstBaseParse * parse)
+{
+  parse->priv->post_min_bitrate =
+      !gst_base_parse_check_bitrate_tag (parse, GST_TAG_MINIMUM_BITRATE);
+  parse->priv->post_avg_bitrate =
+      !gst_base_parse_check_bitrate_tag (parse, GST_TAG_BITRATE);
+  parse->priv->post_max_bitrate =
+      !gst_base_parse_check_bitrate_tag (parse, GST_TAG_MAXIMUM_BITRATE);
+}
+
+/* Queues new tag event with the current combined state of the stream tags
+ * (i.e. upstream tags merged with subclass tags and current baseparse tags) */
+static void
+gst_base_parse_queue_tag_event_update (GstBaseParse * parse)
+{
+  GstTagList *merged_tags;
+
+  GST_LOG_OBJECT (parse, "upstream : %" GST_PTR_FORMAT,
+      parse->priv->upstream_tags);
+  GST_LOG_OBJECT (parse, "parser   : %" GST_PTR_FORMAT,
+      parse->priv->parser_tags);
+  GST_LOG_OBJECT (parse, "mode     : %d", parse->priv->parser_tags_merge_mode);
+
+  merged_tags =
+      gst_tag_list_merge (parse->priv->upstream_tags, parse->priv->parser_tags,
+      parse->priv->parser_tags_merge_mode);
+
+  GST_DEBUG_OBJECT (parse, "merged   : %" GST_PTR_FORMAT, merged_tags);
+
+  if (merged_tags == NULL)
+    return;
+
+  if (gst_tag_list_is_empty (merged_tags)) {
+    gst_tag_list_unref (merged_tags);
+    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);
+  }
+
+  parse->priv->pending_events =
+      g_list_prepend (parse->priv->pending_events,
+      gst_event_new_tag (merged_tags));
+}
+
 /* gst_base_parse_parse_frame:
  * @parse: #GstBaseParse.
  * @buffer: #GstBuffer.
@@ -1122,9 +1229,24 @@
       parse->priv->prev_dts = GST_CLOCK_TIME_NONE;
       parse->priv->discont = TRUE;
       parse->priv->seen_keyframe = FALSE;
+      parse->priv->skip = 0;
       break;
     }
 
+    case GST_EVENT_SEGMENT_DONE:
+      /* need to drain now, rather than upon a new segment,
+       * since that would have SEGMENT_DONE come before potential
+       * delayed last part of the current segment */
+      GST_DEBUG_OBJECT (parse, "draining current segment");
+      if (parse->segment.rate > 0.0)
+        gst_base_parse_drain (parse);
+      else
+        gst_base_parse_finish_fragment (parse, FALSE);
+      /* Also forward event immediately, there might be no new data
+       * coming afterwards that would allow us to forward it later */
+      forward_immediate = TRUE;
+      break;
+
     case GST_EVENT_FLUSH_START:
       GST_OBJECT_LOCK (parse);
       parse->priv->flushing = TRUE;
@@ -1139,6 +1261,7 @@
       parse->priv->last_pts = GST_CLOCK_TIME_NONE;
       parse->priv->last_dts = GST_CLOCK_TIME_NONE;
       parse->priv->new_frame = TRUE;
+      parse->priv->skip = 0;
 
       forward_immediate = TRUE;
       break;
@@ -1150,17 +1273,21 @@
         gst_base_parse_finish_fragment (parse, TRUE);
 
       /* If we STILL have zero frames processed, fire an error */
-      if (parse->priv->framecount == 0) {
+      if (parse->priv->framecount == 0 && !parse->priv->saw_gaps &&
+          !parse->priv->first_buffer) {
         GST_ELEMENT_ERROR (parse, STREAM, WRONG_TYPE,
             ("No valid frames found before end of stream"), (NULL));
       }
+
+      if (!parse->priv->saw_gaps
+          && parse->priv->framecount < MIN_FRAMES_TO_POST_BITRATE) {
+        /* We've not posted bitrate tags yet - do so now */
+        gst_base_parse_queue_tag_event_update (parse);
+      }
+
       /* newsegment and other serialized events before eos */
       gst_base_parse_push_pending_events (parse);
 
-      if (parse->priv->framecount < MIN_FRAMES_TO_POST_BITRATE) {
-        /* We've not posted bitrate tags yet - do so now */
-        gst_base_parse_post_bitrates (parse, TRUE, TRUE, TRUE);
-      }
       forward_immediate = TRUE;
       break;
     case GST_EVENT_CUSTOM_DOWNSTREAM:{
@@ -1198,18 +1325,36 @@
       else
         gst_base_parse_finish_fragment (parse, TRUE);
       forward_immediate = TRUE;
+      parse->priv->saw_gaps = TRUE;
       break;
     }
     case GST_EVENT_TAG:
-      /* See if any bitrate tags were posted */
-      gst_base_parse_handle_tag (parse, event);
-      break;
+    {
+      GstTagList *tags = NULL;
 
+      gst_event_parse_tag (event, &tags);
+
+      /* We only care about stream tags here, global tags we just forward */
+      if (gst_tag_list_get_scope (tags) != GST_TAG_SCOPE_STREAM)
+        break;
+
+      gst_base_parse_set_upstream_tags (parse, tags);
+      gst_base_parse_queue_tag_event_update (parse);
+      parse->priv->tags_changed = FALSE;
+      gst_event_unref (event);
+      event = NULL;
+      ret = TRUE;
+      break;
+    }
     case GST_EVENT_STREAM_START:
+    {
       if (parse->priv->pad_mode != GST_PAD_MODE_PULL)
         forward_immediate = TRUE;
-      break;
 
+      gst_base_parse_set_upstream_tags (parse, NULL);
+      parse->priv->tags_changed = TRUE;
+      break;
+    }
     default:
       break;
   }
@@ -1229,10 +1374,8 @@
     if (!GST_EVENT_IS_SERIALIZED (event) || forward_immediate) {
       ret = gst_pad_push_event (parse->srcpad, event);
     } else {
-      // GST_VIDEO_DECODER_STREAM_LOCK (decoder);
       parse->priv->pending_events =
           g_list_prepend (parse->priv->pending_events, event);
-      // GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
       ret = TRUE;
     }
   }
@@ -1511,80 +1654,30 @@
 }
 
 static void
-gst_base_parse_update_duration (GstBaseParse * baseparse)
+gst_base_parse_update_duration (GstBaseParse * parse)
 {
-  GstPad *peer;
-  GstBaseParse *parse;
+  gint64 ptot, dest_value;
 
-  parse = GST_BASE_PARSE (baseparse);
+  if (!gst_pad_peer_query_duration (parse->sinkpad, GST_FORMAT_BYTES, &ptot))
+    return;
 
-  peer = gst_pad_get_peer (parse->sinkpad);
-  if (peer) {
-    gboolean qres = FALSE;
-    gint64 ptot, dest_value;
+  if (!gst_base_parse_convert (parse, GST_FORMAT_BYTES, ptot,
+          GST_FORMAT_TIME, &dest_value))
+    return;
 
-    qres = gst_pad_query_duration (peer, GST_FORMAT_BYTES, &ptot);
-    gst_object_unref (GST_OBJECT (peer));
-    if (qres) {
-      if (gst_base_parse_convert (parse, GST_FORMAT_BYTES, ptot,
-              GST_FORMAT_TIME, &dest_value)) {
+  /* inform if duration changed, but try to avoid spamming */
+  parse->priv->estimated_drift += dest_value - parse->priv->estimated_duration;
 
-        /* inform if duration changed, but try to avoid spamming */
-        parse->priv->estimated_drift +=
-            dest_value - parse->priv->estimated_duration;
+  parse->priv->estimated_duration = dest_value;
+  GST_LOG_OBJECT (parse,
+      "updated estimated duration to %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (dest_value));
 
-        parse->priv->estimated_duration = dest_value;
-        GST_LOG_OBJECT (parse,
-            "updated estimated duration to %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (dest_value));
-
-        if (parse->priv->estimated_drift > GST_SECOND ||
-            parse->priv->estimated_drift < -GST_SECOND) {
-          gst_element_post_message (GST_ELEMENT (parse),
-              gst_message_new_duration_changed (GST_OBJECT (parse)));
-          parse->priv->estimated_drift = 0;
-        }
-      }
-    }
-  }
-}
-
-static void
-gst_base_parse_post_bitrates (GstBaseParse * parse, gboolean post_min,
-    gboolean post_avg, gboolean post_max)
-{
-  GstTagList *taglist = NULL;
-
-  if (post_min && parse->priv->post_min_bitrate) {
-    taglist = gst_tag_list_new_empty ();
-
-    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE,
-        GST_TAG_MINIMUM_BITRATE, parse->priv->min_bitrate, NULL);
-  }
-
-  if (post_avg && parse->priv->post_avg_bitrate) {
-    if (taglist == NULL)
-      taglist = gst_tag_list_new_empty ();
-
-    parse->priv->posted_avg_bitrate = parse->priv->avg_bitrate;
-    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_BITRATE,
-        parse->priv->avg_bitrate, NULL);
-  }
-
-  if (post_max && parse->priv->post_max_bitrate) {
-    if (taglist == NULL)
-      taglist = gst_tag_list_new_empty ();
-
-    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE,
-        GST_TAG_MAXIMUM_BITRATE, parse->priv->max_bitrate, NULL);
-  }
-
-  GST_DEBUG_OBJECT (parse, "Updated bitrates. Min: %u, Avg: %u, Max: %u",
-      parse->priv->min_bitrate, parse->priv->avg_bitrate,
-      parse->priv->max_bitrate);
-
-  if (taglist != NULL) {
-    gst_pad_push_event (parse->srcpad, gst_event_new_tag (taglist));
+  if (parse->priv->estimated_drift > GST_SECOND ||
+      parse->priv->estimated_drift < -GST_SECOND) {
+    gst_element_post_message (GST_ELEMENT (parse),
+        gst_message_new_duration_changed (GST_OBJECT (parse)));
+    parse->priv->estimated_drift = 0;
   }
 }
 
@@ -1603,7 +1696,6 @@
 
   guint64 data_len, frame_dur;
   gint overhead, frame_bitrate, old_avg_bitrate;
-  gboolean update_min = FALSE, update_avg = FALSE, update_max = FALSE;
   GstBuffer *buffer = frame->buffer;
 
   overhead = frame->overhead;
@@ -1631,7 +1723,7 @@
     parse->priv->avg_bitrate = parse->priv->bitrate;
     /* spread this (confirmed) info ASAP */
     if (parse->priv->posted_avg_bitrate != parse->priv->avg_bitrate)
-      gst_base_parse_post_bitrates (parse, FALSE, TRUE, FALSE);
+      parse->priv->tags_changed = TRUE;
   }
 
   if (frame_dur)
@@ -1642,36 +1734,33 @@
   GST_LOG_OBJECT (parse, "frame bitrate %u, avg bitrate %u", frame_bitrate,
       parse->priv->avg_bitrate);
 
-  if (parse->priv->framecount < MIN_FRAMES_TO_POST_BITRATE) {
-    goto exit;
-  } else if (parse->priv->framecount == MIN_FRAMES_TO_POST_BITRATE) {
-    /* always post all at threshold time */
-    update_min = update_max = update_avg = TRUE;
-  }
+  if (parse->priv->framecount < MIN_FRAMES_TO_POST_BITRATE)
+    return;
+
+  if (parse->priv->framecount == MIN_FRAMES_TO_POST_BITRATE &&
+      (parse->priv->post_min_bitrate || parse->priv->post_avg_bitrate
+          || parse->priv->post_max_bitrate))
+    parse->priv->tags_changed = TRUE;
 
   if (G_LIKELY (parse->priv->framecount >= MIN_FRAMES_TO_POST_BITRATE)) {
     if (frame_bitrate < parse->priv->min_bitrate) {
       parse->priv->min_bitrate = frame_bitrate;
-      update_min = TRUE;
+      if (parse->priv->post_min_bitrate)
+        parse->priv->tags_changed = TRUE;
     }
 
     if (frame_bitrate > parse->priv->max_bitrate) {
       parse->priv->max_bitrate = frame_bitrate;
-      update_max = TRUE;
+      if (parse->priv->post_max_bitrate)
+        parse->priv->tags_changed = TRUE;
     }
 
     old_avg_bitrate = parse->priv->posted_avg_bitrate;
-    if ((gint) (old_avg_bitrate - parse->priv->avg_bitrate) > update_threshold
-        || (gint) (parse->priv->avg_bitrate - old_avg_bitrate) >
-        update_threshold)
-      update_avg = TRUE;
+    if (((gint) (old_avg_bitrate - parse->priv->avg_bitrate) > update_threshold
+            || (gint) (parse->priv->avg_bitrate - old_avg_bitrate) >
+            update_threshold) && parse->priv->post_avg_bitrate)
+      parse->priv->tags_changed = TRUE;
   }
-
-  if ((update_min || update_avg || update_max))
-    gst_base_parse_post_bitrates (parse, update_min, update_avg, update_max);
-
-exit:
-  return;
 }
 
 /**
@@ -1901,27 +1990,17 @@
       GST_BUFFER_OFFSET (buffer), GST_BUFFER_OFFSET (buffer),
       gst_buffer_get_size (buffer));
 
-  if (parse->priv->discont) {
-    GST_DEBUG_OBJECT (parse, "marking DISCONT");
-    GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
-    parse->priv->discont = FALSE;
-  }
-
   GST_BUFFER_OFFSET (buffer) = parse->priv->offset;
 
+  gst_base_parse_update_flags (parse);
+
   frame = gst_base_parse_frame_new (buffer, 0, 0);
-
-  /* also ensure to update state flags */
-  gst_base_parse_frame_update (parse, frame, buffer);
   gst_buffer_unref (buffer);
+  gst_base_parse_update_frame (parse, frame);
 
-  if (parse->priv->prev_offset != parse->priv->offset || parse->priv->new_frame) {
-    GST_LOG_OBJECT (parse, "marking as new frame");
-    parse->priv->new_frame = FALSE;
-    frame->flags |= GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME;
-  }
-
-  frame->offset = parse->priv->prev_offset = parse->priv->offset;
+  /* clear flags for next frame */
+  parse->priv->discont = FALSE;
+  parse->priv->new_frame = FALSE;
 
   /* use default handler to provide initial (upstream) metadata */
   gst_base_parse_parse_frame (parse, frame);
@@ -1990,7 +2069,20 @@
           g_slist_prepend (parse->priv->buffers_head, outbuf);
       outbuf = NULL;
     } else {
-      gst_adapter_flush (parse->priv->adapter, *skip);
+      /* If we're asked to skip more than is available in the adapter,
+         we need to remember what we need to skip for next iteration */
+      gsize av = gst_adapter_available (parse->priv->adapter);
+      GST_DEBUG ("Asked to skip %u (%" G_GSIZE_FORMAT " available)", *skip, av);
+      if (av >= *skip) {
+        gst_adapter_flush (parse->priv->adapter, *skip);
+      } else {
+        GST_DEBUG
+            ("This is more than available, flushing %" G_GSIZE_FORMAT
+            ", storing %u to skip", av, (guint) (*skip - av));
+        parse->priv->skip = *skip - av;
+        gst_adapter_flush (parse->priv->adapter, av);
+        *skip = av;
+      }
     }
     if (!parse->priv->discont)
       parse->priv->sync_offset = parse->priv->offset;
@@ -2204,6 +2296,11 @@
     gst_base_parse_check_media (parse);
   }
 
+  if (parse->priv->tags_changed) {
+    gst_base_parse_queue_tag_event_update (parse);
+    parse->priv->tags_changed = FALSE;
+  }
+
   /* Push pending events, including SEGMENT events */
   gst_base_parse_push_pending_events (parse);
 
@@ -2716,6 +2813,59 @@
 }
 
 static GstFlowReturn
+gst_base_parse_process_streamheader (GstBaseParse * parse)
+{
+  GstCaps *caps;
+  GstStructure *str;
+  const GValue *value;
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (parse));
+  if (caps == NULL)
+    goto notfound;
+
+  str = gst_caps_get_structure (caps, 0);
+  value = gst_structure_get_value (str, "streamheader");
+  if (value == NULL)
+    goto notfound;
+
+  GST_DEBUG_OBJECT (parse, "Found streamheader field on input caps");
+
+  if (GST_VALUE_HOLDS_ARRAY (value)) {
+    gint i;
+    gsize len = gst_value_array_get_size (value);
+
+    for (i = 0; i < len; i++) {
+      GstBuffer *buffer =
+          gst_value_get_buffer (gst_value_array_get_value (value, i));
+      ret =
+          gst_base_parse_chain (GST_BASE_PARSE_SINK_PAD (parse),
+          GST_OBJECT_CAST (parse), gst_buffer_ref (buffer));
+    }
+
+  } else if (GST_VALUE_HOLDS_BUFFER (value)) {
+    GstBuffer *buffer = gst_value_get_buffer (value);
+    ret =
+        gst_base_parse_chain (GST_BASE_PARSE_SINK_PAD (parse),
+        GST_OBJECT_CAST (parse), gst_buffer_ref (buffer));
+  }
+
+  gst_caps_unref (caps);
+
+  return ret;
+
+notfound:
+  {
+    if (caps) {
+      gst_caps_unref (caps);
+    }
+
+    GST_DEBUG_OBJECT (parse, "No streamheader on caps");
+    return GST_FLOW_OK;
+  }
+}
+
+static GstFlowReturn
 gst_base_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
 {
   GstBaseParseClass *bclass;
@@ -2725,12 +2875,49 @@
   GstBuffer *tmpbuf = NULL;
   guint fsize = 1;
   gint skip = -1;
-  const guint8 *data;
   guint min_size, av;
   GstClockTime pts, dts;
 
   parse = GST_BASE_PARSE (parent);
   bclass = GST_BASE_PARSE_GET_CLASS (parse);
+  GST_DEBUG_OBJECT (parent, "chain");
+
+  /* early out for speed, if we need to skip */
+  if (buffer && GST_BUFFER_IS_DISCONT (buffer))
+    parse->priv->skip = 0;
+  if (parse->priv->skip > 0) {
+    gsize bsize = gst_buffer_get_size (buffer);
+    GST_DEBUG ("Got %" G_GSIZE_FORMAT " buffer, need to skip %u", bsize,
+        parse->priv->skip);
+    if (parse->priv->skip >= bsize) {
+      parse->priv->skip -= bsize;
+      GST_DEBUG ("All the buffer is skipped");
+      parse->priv->offset += bsize;
+      parse->priv->sync_offset = parse->priv->offset;
+      return GST_FLOW_OK;
+    }
+    buffer = gst_buffer_make_writable (buffer);
+    gst_buffer_resize (buffer, parse->priv->skip, bsize - parse->priv->skip);
+    parse->priv->offset += parse->priv->skip;
+    GST_DEBUG ("Done skipping, we have %u left on this buffer",
+        (unsigned) (bsize - parse->priv->skip));
+    parse->priv->skip = 0;
+    parse->priv->discont = TRUE;
+  }
+
+  if (G_UNLIKELY (parse->priv->first_buffer)) {
+    parse->priv->first_buffer = FALSE;
+    if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_HEADER)) {
+      /* this stream has no header buffers, check if we just prepend the
+       * streamheader from caps to the stream */
+      GST_DEBUG_OBJECT (parse, "Looking for streamheader field on caps to "
+          "prepend to the stream");
+      gst_base_parse_process_streamheader (parse);
+    } else {
+      GST_DEBUG_OBJECT (parse, "Stream has header buffers, not prepending "
+          "streamheader from caps");
+    }
+  }
 
   if (parse->priv->detecting) {
     GstBuffer *detect_buf;
@@ -2825,13 +3012,17 @@
       gst_base_parse_frame_free (&frame);
       return ret;
     }
-    /* upstream feeding us in reverse playback;
-     * finish previous fragment and start new upon DISCONT */
-    if (parse->segment.rate < 0.0) {
-      if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))) {
+    if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))) {
+      /* upstream feeding us in reverse playback;
+       * finish previous fragment and start new upon DISCONT */
+      if (parse->segment.rate < 0.0) {
         GST_DEBUG_OBJECT (parse, "buffer starts new reverse playback fragment");
         ret = gst_base_parse_finish_fragment (parse, TRUE);
         gst_base_parse_start_fragment (parse);
+      } else {
+        /* discont in the stream, drain and mark discont for next output */
+        gst_base_parse_drain (parse);
+        parse->priv->discont = TRUE;
       }
     }
     gst_adapter_push (parse->priv->adapter, buffer);
@@ -2882,26 +3073,21 @@
       parse->priv->next_dts = pts;
 
     /* always pass all available data */
-    data = gst_adapter_map (parse->priv->adapter, av);
-    /* arrange for actual data to be copied if subclass tries to,
-     * since what is passed is tied to the adapter */
-    tmpbuf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY |
-        GST_MEMORY_FLAG_NO_SHARE, (gpointer) data, av, 0, av, NULL, NULL);
+    tmpbuf = gst_adapter_get_buffer (parse->priv->adapter, av);
 
     /* already inform subclass what timestamps we have planned,
      * at least if provided by time-based upstream */
     if (parse->priv->upstream_format == GST_FORMAT_TIME) {
+      tmpbuf = gst_buffer_make_writable (tmpbuf);
       GST_BUFFER_PTS (tmpbuf) = parse->priv->next_pts;
       GST_BUFFER_DTS (tmpbuf) = parse->priv->next_dts;
+      GST_BUFFER_DURATION (tmpbuf) = GST_CLOCK_TIME_NONE;
     }
 
     /* keep the adapter mapped, so keep track of what has to be flushed */
     ret = gst_base_parse_handle_buffer (parse, tmpbuf, &skip, &flush);
     tmpbuf = NULL;
 
-    /* probably already implicitly unmapped due to adapter operation,
-     * but for good measure ... */
-    gst_adapter_unmap (parse->priv->adapter);
     if (ret != GST_FLOW_OK && ret != GST_FLOW_NOT_LINKED) {
       goto done;
     }
@@ -3124,6 +3310,12 @@
     if (ret != GST_FLOW_OK)
       break;
 
+    /* If a large amount of data was requested to be skipped, _handle_buffer
+       might have set the priv->skip flag to an extra amount on top of skip.
+       In pull mode, we can just pull from the new offset directly. */
+    parse->priv->offset += parse->priv->skip;
+    parse->priv->skip = 0;
+
     /* something flushed means something happened,
      * and we should bail out of this loop so as not to occupy
      * the task thread indefinitely */
@@ -3194,8 +3386,6 @@
   }
 
   ret = gst_base_parse_scan_frame (parse, klass);
-  if (ret != GST_FLOW_OK)
-    goto done;
 
   /* eat expected eos signalling past segment in reverse playback */
   if (parse->segment.rate < 0.0 && ret == GST_FLOW_EOS &&
@@ -3205,9 +3395,12 @@
     gst_base_parse_finish_fragment (parse, FALSE);
     /* force previous fragment */
     parse->priv->offset = -1;
-    ret = GST_FLOW_OK;
+    goto eos;
   }
 
+  if (ret != GST_FLOW_OK)
+    goto done;
+
 done:
   if (ret == GST_FLOW_EOS)
     goto eos;
@@ -3265,6 +3458,9 @@
       push_eos = TRUE;
     }
     if (push_eos) {
+      if (parse->priv->estimated_duration <= 0) {
+        gst_base_parse_update_duration (parse);
+      }
       /* Push pending events, including SEGMENT events */
       gst_base_parse_push_pending_events (parse);
 
@@ -3635,6 +3831,9 @@
 gst_base_parse_set_latency (GstBaseParse * parse, GstClockTime min_latency,
     GstClockTime max_latency)
 {
+  g_return_if_fail (min_latency != GST_CLOCK_TIME_NONE);
+  g_return_if_fail (min_latency <= max_latency);
+
   GST_OBJECT_LOCK (parse);
   parse->priv->min_latency = min_latency;
   parse->priv->max_latency = max_latency;
@@ -3804,9 +4003,10 @@
 
         GST_OBJECT_LOCK (parse);
         /* add our latency */
-        if (min_latency != -1)
-          min_latency += parse->priv->min_latency;
-        if (max_latency != -1)
+        min_latency += parse->priv->min_latency;
+        if (max_latency == -1 || parse->priv->max_latency == -1)
+          max_latency = -1;
+        else
           max_latency += parse->priv->max_latency;
         GST_OBJECT_UNLOCK (parse);
 
@@ -4157,9 +4357,6 @@
   if (rate < 0.0 && parse->priv->pad_mode == GST_PAD_MODE_PUSH)
     goto negative_rate;
 
-  if (rate < 0.0 && parse->priv->pad_mode == GST_PAD_MODE_PULL)
-    goto negative_rate_pull_mode;
-
   if (start_type != GST_SEEK_TYPE_SET ||
       (stop_type != GST_SEEK_TYPE_SET && stop_type != GST_SEEK_TYPE_NONE))
     goto wrong_type;
@@ -4185,20 +4382,36 @@
     GST_DEBUG_OBJECT (parse, "accurate seek possible");
     accurate = TRUE;
   }
+
   if (accurate) {
-    GstClockTime startpos = seeksegment.position;
+    GstClockTime startpos;
+    if (rate >= 0)
+      startpos = seeksegment.position;
+    else
+      startpos = start;
 
     /* accurate requested, so ... seek a bit before target */
     if (startpos < parse->priv->lead_in_ts)
       startpos = 0;
     else
       startpos -= parse->priv->lead_in_ts;
+
+    if (seeksegment.stop == -1 && seeksegment.duration != -1)
+      seeksegment.stop = seeksegment.start + seeksegment.duration;
+
     seekpos = gst_base_parse_find_offset (parse, startpos, TRUE, &start_ts);
     seekstop = gst_base_parse_find_offset (parse, seeksegment.stop, FALSE,
         NULL);
   } else {
-    start_ts = seeksegment.position;
-    if (!gst_base_parse_convert (parse, format, seeksegment.position,
+    if (rate >= 0)
+      start_ts = seeksegment.position;
+    else
+      start_ts = start;
+
+    if (seeksegment.stop == -1 && seeksegment.duration != -1)
+      seeksegment.stop = seeksegment.start + seeksegment.duration;
+
+    if (!gst_base_parse_convert (parse, format, start_ts,
             GST_FORMAT_BYTES, &seekpos))
       goto convert_failed;
     if (!gst_base_parse_convert (parse, format, seeksegment.stop,
@@ -4362,12 +4575,6 @@
   return res;
 
   /* ERRORS */
-negative_rate_pull_mode:
-  {
-    GST_FIXME_OBJECT (parse, "negative playback in pull mode needs fixing");
-    res = FALSE;
-    goto done;
-  }
 negative_rate:
   {
     GST_DEBUG_OBJECT (parse, "negative playback rates delegated upstream.");
@@ -4395,33 +4602,23 @@
   }
 }
 
-/* Checks if bitrates are available from upstream tags so that we don't
- * override them later
- */
 static void
-gst_base_parse_handle_tag (GstBaseParse * parse, GstEvent * event)
+gst_base_parse_set_upstream_tags (GstBaseParse * parse, GstTagList * taglist)
 {
-  GstTagList *taglist = NULL;
-  guint tmp;
-
-  gst_event_parse_tag (event, &taglist);
-
-  /* We only care about stream tags here */
-  if (gst_tag_list_get_scope (taglist) != GST_TAG_SCOPE_STREAM)
+  if (taglist == parse->priv->upstream_tags)
     return;
 
-  if (gst_tag_list_get_uint (taglist, GST_TAG_MINIMUM_BITRATE, &tmp)) {
-    GST_DEBUG_OBJECT (parse, "upstream min bitrate %d", tmp);
-    parse->priv->post_min_bitrate = FALSE;
+  if (parse->priv->upstream_tags) {
+    gst_tag_list_unref (parse->priv->upstream_tags);
+    parse->priv->upstream_tags = NULL;
   }
-  if (gst_tag_list_get_uint (taglist, GST_TAG_BITRATE, &tmp)) {
-    GST_DEBUG_OBJECT (parse, "upstream avg bitrate %d", tmp);
-    parse->priv->post_avg_bitrate = FALSE;
-  }
-  if (gst_tag_list_get_uint (taglist, GST_TAG_MAXIMUM_BITRATE, &tmp)) {
-    GST_DEBUG_OBJECT (parse, "upstream max bitrate %d", tmp);
-    parse->priv->post_max_bitrate = FALSE;
-  }
+
+  GST_INFO_OBJECT (parse, "upstream tags: %" GST_PTR_FORMAT, taglist);
+
+  if (taglist != NULL)
+    parse->priv->upstream_tags = gst_tag_list_ref (taglist);
+
+  gst_base_parse_check_bitrate_tags (parse);
 }
 
 #if 0
@@ -4543,3 +4740,50 @@
   if (GST_CLOCK_TIME_IS_VALID (dts) && (parse->priv->prev_dts != dts))
     parse->priv->prev_dts = parse->priv->next_dts = dts;
 }
+
+/**
+ * gst_base_parse_merge_tags:
+ * @parse: a #GstBaseParse
+ * @tags: (allow-none): a #GstTagList to merge, or NULL to unset
+ *     previously-set tags
+ * @mode: the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE
+ *
+ * Sets the parser subclass's tags and how they should be merged with any
+ * upstream stream tags. This will override any tags previously-set
+ * with gst_base_parse_merge_tags().
+ *
+ * Note that this is provided for convenience, and the subclass is
+ * not required to use this and can still do tag handling on its own.
+ *
+ * Since: 1.6
+ */
+void
+gst_base_parse_merge_tags (GstBaseParse * parse, GstTagList * tags,
+    GstTagMergeMode mode)
+{
+  g_return_if_fail (GST_IS_BASE_PARSE (parse));
+  g_return_if_fail (tags == NULL || GST_IS_TAG_LIST (tags));
+  g_return_if_fail (tags == NULL || mode != GST_TAG_MERGE_UNDEFINED);
+
+  GST_OBJECT_LOCK (parse);
+
+  if (tags != parse->priv->parser_tags) {
+    if (parse->priv->parser_tags) {
+      gst_tag_list_unref (parse->priv->parser_tags);
+      parse->priv->parser_tags = NULL;
+      parse->priv->parser_tags_merge_mode = GST_TAG_MERGE_APPEND;
+    }
+    if (tags) {
+      parse->priv->parser_tags = gst_tag_list_ref (tags);
+      parse->priv->parser_tags_merge_mode = mode;
+    }
+
+    GST_DEBUG_OBJECT (parse, "setting parser tags to %" GST_PTR_FORMAT
+        " (mode %d)", tags, parse->priv->parser_tags_merge_mode);
+
+    gst_base_parse_check_bitrate_tags (parse);
+    parse->priv->tags_changed = TRUE;
+  }
+
+  GST_OBJECT_UNLOCK (parse);
+}
diff --git a/libs/gst/base/gstbaseparse.h b/libs/gst/base/gstbaseparse.h
index f84d973..94522cc 100644
--- a/libs/gst/base/gstbaseparse.h
+++ b/libs/gst/base/gstbaseparse.h
@@ -156,6 +156,7 @@
  * The opaque #GstBaseParse data structure.
  */
 struct _GstBaseParse {
+  /*< public >*/
   GstElement     element;
 
   /*< protected >*/
@@ -182,8 +183,10 @@
  * @stop:           Optional.
  *                  Called when the element stops processing.
  *                  Allows closing external resources.
- * @set_sink_caps:  allows the subclass to be notified of the actual caps set.
- * @get_sink_caps:  allows the subclass to do its own sink get caps if needed.
+ * @set_sink_caps:  Optional.
+ *                  Allows the subclass to be notified of the actual caps set.
+ * @get_sink_caps:  Optional.
+ *                  Allows the subclass to do its own sink get caps if needed.
  * @handle_frame:   Parses the input data into valid frames as defined by subclass
  *                  which should be passed to gst_base_parse_finish_frame().
  *                  The frame's input buffer is guaranteed writable,
@@ -222,8 +225,7 @@
  *                   parent to let the default handler run (Since 1.2)
  *
  * Subclasses can override any of the available virtual methods or not, as
- * needed. At minimum @check_valid_frame and @parse_frame needs to be
- * overridden.
+ * needed. At minimum @handle_frame needs to be overridden.
  */
 struct _GstBaseParseClass {
   GstElementClass parent_class;
@@ -343,6 +345,10 @@
 void            gst_base_parse_set_ts_at_offset (GstBaseParse *parse,
                                                  gsize offset);
 
+void            gst_base_parse_merge_tags       (GstBaseParse  * parse,
+                                                 GstTagList    * tags,
+                                                 GstTagMergeMode mode);
+
 G_END_DECLS
 
 #endif /* __GST_BASE_PARSE_H__ */
diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c
index de295a5..f5fea82 100644
--- a/libs/gst/base/gstbasesink.c
+++ b/libs/gst/base/gstbasesink.c
@@ -238,6 +238,7 @@
   gint enable_last_sample;      /* atomic */
   GstBuffer *last_buffer;
   GstCaps *last_caps;
+  GstBufferList *last_buffer_list;
 
   /* negotiated caps */
   GstCaps *caps;
@@ -492,7 +493,7 @@
    *
    * The amount of bytes to pull when operating in pull mode.
    */
-  /* FIXME 0.11: blocksize property should be int, otherwise min>max.. */
+  /* FIXME 2.0: blocksize property should be int, otherwise min>max.. */
   g_object_class_install_property (gobject_class, PROP_BLOCKSIZE,
       g_param_spec_uint ("blocksize", "Block size",
           "Size in bytes to pull per buffer (0 = default)", 0, G_MAXUINT,
@@ -916,7 +917,16 @@
   g_return_val_if_fail (GST_IS_BASE_SINK (sink), NULL);
 
   GST_OBJECT_LOCK (sink);
-  if (sink->priv->last_buffer) {
+  if (sink->priv->last_buffer_list) {
+    GstBuffer *first_buffer = NULL;
+
+    /* Set the first buffer in the list to last sample's buffer */
+    first_buffer = gst_buffer_list_get (sink->priv->last_buffer_list, 0);
+    res =
+        gst_sample_new (first_buffer, sink->priv->last_caps, &sink->segment,
+        NULL);
+    gst_sample_set_buffer_list (res, sink->priv->last_buffer_list);
+  } else if (sink->priv->last_buffer) {
     res = gst_sample_new (sink->priv->last_buffer,
         sink->priv->last_caps, &sink->segment, NULL);
   }
@@ -954,6 +964,32 @@
   }
 }
 
+/* with OBJECT_LOCK */
+static void
+gst_base_sink_set_last_buffer_list_unlocked (GstBaseSink * sink,
+    GstBufferList * buffer_list)
+{
+  GstBufferList *old;
+
+  old = sink->priv->last_buffer_list;
+  if (G_LIKELY (old != buffer_list)) {
+    GST_DEBUG_OBJECT (sink, "setting last buffer list to %p", buffer_list);
+    if (G_LIKELY (buffer_list))
+      gst_mini_object_ref (GST_MINI_OBJECT_CAST (buffer_list));
+    sink->priv->last_buffer_list = buffer_list;
+  } else {
+    old = NULL;
+  }
+
+  /* avoid unreffing with the lock because cleanup code might want to take the
+   * lock too */
+  if (G_LIKELY (old)) {
+    GST_OBJECT_UNLOCK (sink);
+    gst_mini_object_unref (GST_MINI_OBJECT_CAST (old));
+    GST_OBJECT_LOCK (sink);
+  }
+}
+
 static void
 gst_base_sink_set_last_buffer (GstBaseSink * sink, GstBuffer * buffer)
 {
@@ -965,6 +1001,18 @@
   GST_OBJECT_UNLOCK (sink);
 }
 
+static void
+gst_base_sink_set_last_buffer_list (GstBaseSink * sink,
+    GstBufferList * buffer_list)
+{
+  if (!g_atomic_int_get (&sink->priv->enable_last_sample))
+    return;
+
+  GST_OBJECT_LOCK (sink);
+  gst_base_sink_set_last_buffer_list_unlocked (sink, buffer_list);
+  GST_OBJECT_UNLOCK (sink);
+}
+
 /**
  * gst_base_sink_set_last_sample_enabled:
  * @sink: the sink
@@ -983,6 +1031,7 @@
           !enabled, enabled) && !enabled) {
     GST_OBJECT_LOCK (sink);
     gst_base_sink_set_last_buffer_unlocked (sink, NULL);
+    gst_base_sink_set_last_buffer_list_unlocked (sink, NULL);
     GST_OBJECT_UNLOCK (sink);
   }
 }
@@ -1086,8 +1135,7 @@
       }
       if (l) {
         /* we need to add the render delay if we are live */
-        if (min != -1)
-          min += render_delay;
+        min += render_delay;
         if (max != -1)
           max += render_delay;
       }
@@ -1192,7 +1240,7 @@
  * Set the number of bytes that the sink will pull when it is operating in pull
  * mode.
  */
-/* FIXME 0.11: blocksize property should be int, otherwise min>max.. */
+/* FIXME 2.0: blocksize property should be int, otherwise min>max.. */
 void
 gst_base_sink_set_blocksize (GstBaseSink * sink, guint blocksize)
 {
@@ -1213,7 +1261,7 @@
  *
  * Returns: the number of bytes @sink will pull in pull mode.
  */
-/* FIXME 0.11: blocksize property should be int, otherwise min>max.. */
+/* FIXME 2.0: blocksize property should be int, otherwise min>max.. */
 guint
 gst_base_sink_get_blocksize (GstBaseSink * sink)
 {
@@ -1381,7 +1429,7 @@
       g_value_set_int64 (value, gst_base_sink_get_ts_offset (sink));
       break;
     case PROP_LAST_SAMPLE:
-      gst_value_take_buffer (value, gst_base_sink_get_last_sample (sink));
+      gst_value_take_sample (value, gst_base_sink_get_last_sample (sink));
       break;
     case PROP_ENABLE_LAST_SAMPLE:
       g_value_set_boolean (value, gst_base_sink_is_last_sample_enabled (sink));
@@ -2207,13 +2255,17 @@
 
       if (GST_IS_BUFFER_LIST (obj)) {
         buf = gst_buffer_list_get (GST_BUFFER_LIST_CAST (obj), 0);
+        gst_base_sink_set_last_buffer (sink, buf);
+        gst_base_sink_set_last_buffer_list (sink, GST_BUFFER_LIST_CAST (obj));
         g_assert (NULL != buf);
       } else if (GST_IS_BUFFER (obj)) {
         buf = GST_BUFFER_CAST (obj);
         /* For buffer lists do not set last buffer for now */
         gst_base_sink_set_last_buffer (sink, buf);
-      } else
+        gst_base_sink_set_last_buffer_list (sink, NULL);
+      } else {
         buf = NULL;
+      }
 
       if (buf) {
         GST_DEBUG_OBJECT (sink, "preroll buffer %" GST_TIME_FORMAT,
@@ -2922,6 +2974,7 @@
     basesink->priv->have_latency = TRUE;
   }
   gst_base_sink_set_last_buffer (basesink, NULL);
+  gst_base_sink_set_last_buffer_list (basesink, NULL);
   GST_PAD_STREAM_UNLOCK (pad);
 }
 
@@ -3069,19 +3122,28 @@
     }
     case GST_EVENT_CAPS:
     {
-      GstCaps *caps;
+      GstCaps *caps, *current_caps;
 
       GST_DEBUG_OBJECT (basesink, "caps %p", event);
 
       gst_event_parse_caps (event, &caps);
-      if (bclass->set_caps)
-        result = bclass->set_caps (basesink, caps);
+      current_caps = gst_pad_get_current_caps (GST_BASE_SINK_PAD (basesink));
 
-      if (result) {
-        GST_OBJECT_LOCK (basesink);
-        gst_caps_replace (&basesink->priv->caps, caps);
-        GST_OBJECT_UNLOCK (basesink);
+      if (current_caps && gst_caps_is_equal (current_caps, caps)) {
+        GST_DEBUG_OBJECT (basesink,
+            "New caps equal to old ones: %" GST_PTR_FORMAT, caps);
+      } else {
+        if (bclass->set_caps)
+          result = bclass->set_caps (basesink, caps);
+
+        if (result) {
+          GST_OBJECT_LOCK (basesink);
+          gst_caps_replace (&basesink->priv->caps, caps);
+          GST_OBJECT_UNLOCK (basesink);
+        }
       }
+      if (current_caps)
+        gst_caps_unref (current_caps);
       break;
     }
     case GST_EVENT_SEGMENT:
@@ -3288,7 +3350,12 @@
     goto was_eos;
 
   if (is_list) {
-    sync_buf = gst_buffer_list_get (GST_BUFFER_LIST_CAST (obj), 0);
+    GstBufferList *buffer_list = GST_BUFFER_LIST_CAST (obj);
+
+    if (gst_buffer_list_length (buffer_list) == 0)
+      goto empty_list;
+
+    sync_buf = gst_buffer_list_get (buffer_list, 0);
     g_assert (NULL != sync_buf);
   } else {
     sync_buf = GST_BUFFER_CAST (obj);
@@ -3333,10 +3400,21 @@
   GST_DEBUG_OBJECT (basesink, "got times start: %" GST_TIME_FORMAT
       ", end: %" GST_TIME_FORMAT, GST_TIME_ARGS (start), GST_TIME_ARGS (end));
 
-  /* a dropped buffer does not participate in anything */
+  /* a dropped buffer does not participate in anything. Buffer can only be
+   * dropped if their PTS falls completly outside the segment, while we sync
+   * preferably on DTS */
   if (GST_CLOCK_TIME_IS_VALID (start) && (segment->format == GST_FORMAT_TIME)) {
+    GstClockTime pts = GST_BUFFER_PTS (sync_buf);
+    GstClockTime pts_end = GST_CLOCK_TIME_NONE;
+
+    if (!GST_CLOCK_TIME_IS_VALID (pts))
+      pts = start;
+
+    if (GST_CLOCK_TIME_IS_VALID (end))
+      pts_end = pts + (end - start);
+
     if (G_UNLIKELY (!gst_segment_clip (segment,
-                GST_FORMAT_TIME, start, end, NULL, NULL)))
+                GST_FORMAT_TIME, pts, pts_end, NULL, NULL)))
       goto out_of_segment;
   }
 
@@ -3356,10 +3434,28 @@
     if (G_UNLIKELY (stepped))
       goto dropped;
 
-    if (syncable && do_sync)
-      late =
-          gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
-          GST_CLOCK_EARLY, 0, FALSE);
+    if (syncable && do_sync && gst_base_sink_get_sync (basesink)) {
+      GstClock *clock;
+
+      GST_OBJECT_LOCK (basesink);
+      clock = GST_ELEMENT_CLOCK (basesink);
+      if (clock && GST_STATE (basesink) == GST_STATE_PLAYING) {
+        GstClockTime base_time;
+        GstClockTime stime;
+        GstClockTime now;
+
+        base_time = GST_ELEMENT_CAST (basesink)->base_time;
+        stime = base_time + gst_base_sink_adjust_time (basesink, rstart);
+        now = gst_clock_get_time (clock);
+        GST_OBJECT_UNLOCK (basesink);
+
+        late =
+            gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
+            GST_CLOCK_EARLY, GST_CLOCK_DIFF (stime, now), FALSE);
+      } else {
+        GST_OBJECT_UNLOCK (basesink);
+      }
+    }
 
     if (G_UNLIKELY (late))
       goto dropped;
@@ -3422,12 +3518,19 @@
   if (!is_list) {
     /* For buffer lists do not set last buffer for now. */
     gst_base_sink_set_last_buffer (basesink, GST_BUFFER_CAST (obj));
+    gst_base_sink_set_last_buffer_list (basesink, NULL);
 
     if (bclass->render)
       ret = bclass->render (basesink, GST_BUFFER_CAST (obj));
   } else {
+    GstBufferList *buffer_list = GST_BUFFER_LIST_CAST (obj);
+
     if (bclass->render_list)
-      ret = bclass->render_list (basesink, GST_BUFFER_LIST_CAST (obj));
+      ret = bclass->render_list (basesink, buffer_list);
+
+    /* Set the first buffer and buffer list to be included in last sample */
+    gst_base_sink_set_last_buffer (basesink, sync_buf);
+    gst_base_sink_set_last_buffer_list (basesink, buffer_list);
   }
 
   if (do_qos)
@@ -3470,6 +3573,12 @@
     gst_mini_object_unref (GST_MINI_OBJECT_CAST (obj));
     return GST_FLOW_EOS;
   }
+empty_list:
+  {
+    GST_DEBUG_OBJECT (basesink, "buffer list with no buffers");
+    gst_mini_object_unref (GST_MINI_OBJECT_CAST (obj));
+    return GST_FLOW_OK;
+  }
 out_of_segment:
   {
     GST_DEBUG_OBJECT (basesink, "dropping buffer, out of clipping segment");
@@ -3882,6 +3991,7 @@
     priv->eos_rtime = GST_CLOCK_TIME_NONE;
     priv->call_preroll = TRUE;
     gst_base_sink_set_last_buffer (sink, NULL);
+    gst_base_sink_set_last_buffer_list (sink, NULL);
     gst_base_sink_reset_qos (sink);
 
     if (sink->clock_id) {
@@ -4425,7 +4535,7 @@
 
   /* assume we will use the clock for getting the current position */
   with_clock = TRUE;
-  if (basesink->sync == FALSE)
+  if (!basesink->sync)
     with_clock = FALSE;
 
   /* and we need a clock */
@@ -4797,6 +4907,25 @@
   return res;
 }
 
+static void
+gst_base_sink_drain (GstBaseSink * basesink)
+{
+  GstBuffer *old;
+  GstBufferList *old_list;
+
+  GST_OBJECT_LOCK (basesink);
+  if ((old = basesink->priv->last_buffer))
+    basesink->priv->last_buffer = gst_buffer_copy_deep (old);
+
+  if ((old_list = basesink->priv->last_buffer_list))
+    basesink->priv->last_buffer_list = gst_buffer_list_copy_deep (old_list);
+  GST_OBJECT_UNLOCK (basesink);
+
+  if (old)
+    gst_buffer_unref (old);
+  if (old_list)
+    gst_mini_object_unref (GST_MINI_OBJECT_CAST (old_list));
+}
 
 static gboolean
 gst_base_sink_default_query (GstBaseSink * basesink, GstQuery * query)
@@ -4809,6 +4938,7 @@
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_ALLOCATION:
     {
+      gst_base_sink_drain (basesink);
       if (bclass->propose_allocation)
         res = bclass->propose_allocation (basesink, query);
       else
@@ -4845,17 +4975,15 @@
     }
     case GST_QUERY_DRAIN:
     {
-      GstBuffer *old;
-
-      GST_OBJECT_LOCK (basesink);
-      if ((old = basesink->priv->last_buffer))
-        basesink->priv->last_buffer = gst_buffer_copy (old);
-      GST_OBJECT_UNLOCK (basesink);
-      if (old)
-        gst_buffer_unref (old);
+      gst_base_sink_drain (basesink);
       res = TRUE;
       break;
     }
+    case GST_QUERY_POSITION:
+    {
+      res = default_element_query (GST_ELEMENT (basesink), query);
+      break;
+    }
     default:
       res =
           gst_pad_query_default (basesink->sinkpad, GST_OBJECT_CAST (basesink),
@@ -5007,11 +5135,6 @@
       if (bclass->unlock_stop)
         bclass->unlock_stop (basesink);
 
-      /* we need preroll again and we set the flag before unlocking the clockid
-       * because if the clockid is unlocked before a current buffer expired, we
-       * can use that buffer to preroll with */
-      basesink->need_preroll = TRUE;
-
       if (basesink->clock_id) {
         GST_DEBUG_OBJECT (basesink, "unschedule clock");
         gst_clock_id_unschedule (basesink->clock_id);
@@ -5022,6 +5145,7 @@
       if (!gst_base_sink_needs_preroll (basesink)) {
         GST_DEBUG_OBJECT (basesink, "PLAYING to PAUSED, we are prerolled");
         basesink->playing_async = FALSE;
+        basesink->need_preroll = FALSE;
       } else {
         if (GST_STATE_TARGET (GST_ELEMENT (basesink)) <= GST_STATE_READY) {
           GST_DEBUG_OBJECT (basesink, "element is <= READY");
@@ -5030,6 +5154,7 @@
           GST_DEBUG_OBJECT (basesink,
               "PLAYING to PAUSED, we are not prerolled");
           basesink->playing_async = TRUE;
+          basesink->need_preroll = TRUE;
           priv->commited = FALSE;
           priv->call_preroll = TRUE;
           if (priv->async_enabled) {
@@ -5064,6 +5189,7 @@
       GST_OBJECT_UNLOCK (basesink);
 
       gst_base_sink_set_last_buffer (basesink, NULL);
+      gst_base_sink_set_last_buffer_list (basesink, NULL);
       priv->call_preroll = FALSE;
 
       if (!priv->commited) {
@@ -5091,6 +5217,7 @@
         }
       }
       gst_base_sink_set_last_buffer (basesink, NULL);
+      gst_base_sink_set_last_buffer_list (basesink, NULL);
       priv->call_preroll = FALSE;
       break;
     default:
diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c
index b157a05..6ab4816 100644
--- a/libs/gst/base/gstbasesrc.c
+++ b/libs/gst/base/gstbasesrc.c
@@ -695,9 +695,9 @@
  * @max_latency: (out) (allow-none): the max latency of the source
  *
  * Query the source for the latency parameters. @live will be %TRUE when @src is
- * configured as a live source. @min_latency will be set to the difference
- * between the running time and the timestamp of the first buffer.
- * @max_latency is always the undefined value of -1.
+ * configured as a live source. @min_latency and @max_latency will be set
+ * to the difference between the running time and the timestamp of the first
+ * buffer.
  *
  * This function is mostly used by subclasses.
  *
@@ -726,11 +726,11 @@
   if (min_latency)
     *min_latency = min;
   if (max_latency)
-    *max_latency = -1;
+    *max_latency = min;
 
   GST_LOG_OBJECT (src, "latency: live %d, min %" GST_TIME_FORMAT
       ", max %" GST_TIME_FORMAT, src->is_live, GST_TIME_ARGS (min),
-      GST_TIME_ARGS (-1));
+      GST_TIME_ARGS (min));
   GST_OBJECT_UNLOCK (src);
 
   return TRUE;
@@ -895,7 +895,7 @@
 /**
  * gst_base_src_set_caps:
  * @src: a #GstBaseSrc
- * @caps: a #GstCaps
+ * @caps: (transfer none): a #GstCaps
  *
  * Set new caps on the basesrc source pad.
  *
@@ -906,16 +906,27 @@
 {
   GstBaseSrcClass *bclass;
   gboolean res = TRUE;
+  GstCaps *current_caps;
 
   bclass = GST_BASE_SRC_GET_CLASS (src);
 
   gst_base_src_send_stream_start (src);
 
-  if (bclass->set_caps)
-    res = bclass->set_caps (src, caps);
+  current_caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (src));
+  if (current_caps && gst_caps_is_equal (current_caps, caps)) {
+    GST_DEBUG_OBJECT (src, "New caps equal to old ones: %" GST_PTR_FORMAT,
+        caps);
+    res = TRUE;
+  } else {
+    if (bclass->set_caps)
+      res = bclass->set_caps (src, caps);
 
-  if (res)
-    res = gst_pad_push_event (src->srcpad, gst_event_new_caps (caps));
+    if (res)
+      res = gst_pad_push_event (src->srcpad, gst_event_new_caps (caps));
+  }
+
+  if (current_caps)
+    gst_caps_unref (current_caps);
 
   return res;
 }
@@ -1103,7 +1114,7 @@
             gst_base_src_seekable (src), 0, duration);
         res = TRUE;
       } else {
-        /* FIXME 0.11: return TRUE + seekable=FALSE for SEEKING query here */
+        /* FIXME 2.0: return TRUE + seekable=FALSE for SEEKING query here */
         /* Don't reply to the query to make up for demuxers which don't
          * handle the SEEKING query yet. Players like Totem will fall back
          * to the duration when the SEEKING query isn't answered. */
@@ -1695,12 +1706,6 @@
       gst_element_post_message (GST_ELEMENT (src), message);
     }
 
-    /* for deriving a stop position for the playback segment from the seek
-     * segment, we must take the duration when the stop is not set */
-    /* FIXME: This is never used below */
-    if ((stop = seeksegment.stop) == -1)
-      stop = seeksegment.duration;
-
     src->priv->segment_pending = TRUE;
     src->priv->segment_seqnum = seqnum;
   }
@@ -1789,6 +1794,12 @@
       GST_OBJECT_LOCK (src->srcpad);
       start = (GST_PAD_MODE (src->srcpad) == GST_PAD_MODE_PUSH);
       GST_OBJECT_UNLOCK (src->srcpad);
+
+      if (src->is_live) {
+        if (!src->live_running)
+          start = FALSE;
+      }
+
       if (start)
         gst_pad_start_task (src->srcpad, (GstTaskFunction) gst_base_src_loop,
             src->srcpad, NULL);
@@ -2227,7 +2238,7 @@
     if (!GST_CLOCK_TIME_IS_VALID (dts)) {
       if (do_timestamp) {
         dts = running_time;
-      } else {
+      } else if (!GST_CLOCK_TIME_IS_VALID (pts)) {
         if (GST_CLOCK_TIME_IS_VALID (basesrc->segment.start)) {
           dts = basesrc->segment.start;
         } else {
@@ -2310,20 +2321,18 @@
 {
   guint64 size, maxsize;
   GstBaseSrcClass *bclass;
-  GstFormat format;
   gint64 stop;
 
+  /* only operate if we are working with bytes */
+  if (src->segment.format != GST_FORMAT_BYTES)
+    return TRUE;
+
   bclass = GST_BASE_SRC_GET_CLASS (src);
 
-  format = src->segment.format;
   stop = src->segment.stop;
   /* get total file size */
   size = src->segment.duration;
 
-  /* only operate if we are working with bytes */
-  if (format != GST_FORMAT_BYTES)
-    return TRUE;
-
   /* 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))
@@ -2379,6 +2388,7 @@
   /* ERRORS */
 unexpected_length:
   {
+    GST_WARNING_OBJECT (src, "processing at or past EOS");
     return FALSE;
   }
 }
@@ -3068,7 +3078,7 @@
       /* If change are not acceptable, fallback to generic pool */
       if (!gst_buffer_pool_config_validate_params (config, outcaps, size, min,
               max)) {
-        GST_DEBUG_OBJECT (basesrc, "unsuported pool, making new pool");
+        GST_DEBUG_OBJECT (basesrc, "unsupported pool, making new pool");
 
         gst_object_unref (pool);
         pool = gst_buffer_pool_new ();
@@ -3099,6 +3109,7 @@
   GST_ELEMENT_ERROR (basesrc, RESOURCE, SETTINGS,
       ("Failed to configure the buffer pool"),
       ("Configuration is most likely invalid, please report this issue."));
+  gst_object_unref (pool);
   return FALSE;
 }
 
@@ -3849,7 +3860,7 @@
  * @src: a #GstBaseSrc
  *
  * Returns: (transfer full): the instance of the #GstBufferPool used
- * by the src; free it after use it
+ * by the src; unref it after usage.
  */
 GstBufferPool *
 gst_base_src_get_buffer_pool (GstBaseSrc * src)
@@ -3873,7 +3884,7 @@
  * Lets #GstBaseSrc sub-classes to know the memory @allocator
  * used by the base class and its @params.
  *
- * Unref the @allocator after use it.
+ * Unref the @allocator after usage.
  */
 void
 gst_base_src_get_allocator (GstBaseSrc * src,
diff --git a/libs/gst/base/gstbasesrc.h b/libs/gst/base/gstbasesrc.h
index 75de438..4ddfda9 100644
--- a/libs/gst/base/gstbasesrc.h
+++ b/libs/gst/base/gstbasesrc.h
@@ -127,7 +127,8 @@
  * @get_times: Given a buffer, return the start and stop time when it
  *    should be pushed out. The base class will sync on the clock using
  *    these times.
- * @get_size: Return the total size of the resource, in the configured format.
+ * @get_size: Return the total size of the resource, in the format set by
+ *     gst_base_src_set_format().
  * @is_seekable: Check if the source can seek
  * @prepare_seek_segment: Prepare the #GstSegment that will be passed to the
  *   #GstBaseSrcClass.do_seek() vmethod for executing a seek
@@ -190,7 +191,8 @@
   void          (*get_times)    (GstBaseSrc *src, GstBuffer *buffer,
                                  GstClockTime *start, GstClockTime *end);
 
-  /* get the total size of the resource in bytes */
+  /* get the total size of the resource in the format set by
+   * gst_base_src_set_format() */
   gboolean      (*get_size)     (GstBaseSrc *src, guint64 *size);
 
   /* check if the resource is seekable */
diff --git a/libs/gst/base/gstbasetransform.c b/libs/gst/base/gstbasetransform.c
index c20a613..7ef7bc9 100644
--- a/libs/gst/base/gstbasetransform.c
+++ b/libs/gst/base/gstbasetransform.c
@@ -26,7 +26,14 @@
  * @short_description: Base class for simple transform filters
  * @see_also: #GstBaseSrc, #GstBaseSink
  *
- * This base class is for filter elements that process data.
+ * This base class is for filter elements that process data. Elements
+ * that are suitable for implementation using #GstBaseTransform are ones
+ * where the size and caps of the output is known entirely from the input
+ * caps and buffer sizes. These include elements that directly transform
+ * one buffer into another, modify the contents of a buffer in-place, as
+ * well as elements that collate multiple input buffers into one output buffer,
+ * or that expand one input buffer into multiple output buffers. See below
+ * for more concrete use cases.
  *
  * It provides for:
  * <itemizedlist>
@@ -275,6 +282,10 @@
 static void gst_base_transform_class_init (GstBaseTransformClass * klass);
 static void gst_base_transform_init (GstBaseTransform * trans,
     GstBaseTransformClass * klass);
+static GstFlowReturn default_submit_input_buffer (GstBaseTransform * trans,
+    gboolean is_discont, GstBuffer * input);
+static GstFlowReturn default_generate_output (GstBaseTransform * trans,
+    GstBuffer ** outbuf);
 
 /* we can't use G_DEFINE_ABSTRACT_TYPE because we need the klass in the _init
  * method to get to the padtemplates */
@@ -418,6 +429,8 @@
   klass->prepare_output_buffer =
       GST_DEBUG_FUNCPTR (default_prepare_output_buffer);
   klass->copy_metadata = GST_DEBUG_FUNCPTR (default_copy_metadata);
+  klass->submit_input_buffer = GST_DEBUG_FUNCPTR (default_submit_input_buffer);
+  klass->generate_output = GST_DEBUG_FUNCPTR (default_generate_output);
 }
 
 static void
@@ -677,7 +690,7 @@
     GstCaps * filter)
 {
   GstPad *otherpad;
-  GstCaps *peercaps, *caps, *temp, *peerfilter = NULL;
+  GstCaps *peercaps = NULL, *caps, *temp, *peerfilter = NULL;
   GstCaps *templ, *otempl;
 
   otherpad = (pad == trans->srcpad) ? trans->sinkpad : trans->srcpad;
@@ -701,14 +714,26 @@
     GST_DEBUG_OBJECT (pad, "transformed  %" GST_PTR_FORMAT, peerfilter);
     gst_caps_unref (temp);
 
-    /* and filter against the template of the other pad */
-    GST_DEBUG_OBJECT (pad, "our template  %" GST_PTR_FORMAT, otempl);
-    /* We keep the caps sorted like the returned caps */
-    temp =
-        gst_caps_intersect_full (peerfilter, otempl, GST_CAPS_INTERSECT_FIRST);
-    GST_DEBUG_OBJECT (pad, "intersected %" GST_PTR_FORMAT, temp);
-    gst_caps_unref (peerfilter);
-    peerfilter = temp;
+    if (!gst_caps_is_empty (peerfilter)) {
+      /* and filter against the template of the other pad */
+      GST_DEBUG_OBJECT (pad, "our template  %" GST_PTR_FORMAT, otempl);
+      /* We keep the caps sorted like the returned caps */
+      temp =
+          gst_caps_intersect_full (peerfilter, otempl,
+          GST_CAPS_INTERSECT_FIRST);
+      GST_DEBUG_OBJECT (pad, "intersected %" GST_PTR_FORMAT, temp);
+      gst_caps_unref (peerfilter);
+      peerfilter = temp;
+    }
+  }
+
+  GST_DEBUG_OBJECT (pad, "peer filter caps %" GST_PTR_FORMAT, peerfilter);
+
+  if (peerfilter && gst_caps_is_empty (peerfilter)) {
+    GST_DEBUG_OBJECT (pad, "peer filter caps are empty");
+    caps = peerfilter;
+    peerfilter = NULL;
+    goto done;
   }
 
   /* query the peer with the transformed filter */
@@ -733,7 +758,7 @@
       GST_PAD_DIRECTION (otherpad), temp, filter);
   GST_DEBUG_OBJECT (pad, "transformed  %" GST_PTR_FORMAT, caps);
   gst_caps_unref (temp);
-  if (caps == NULL)
+  if (caps == NULL || gst_caps_is_empty (caps))
     goto done;
 
   if (peercaps) {
@@ -1109,7 +1134,7 @@
 
   /* The caps we can actually output is the intersection of the transformed
    * caps with the pad template for the pad */
-  if (othercaps) {
+  if (othercaps && !gst_caps_is_empty (othercaps)) {
     GstCaps *intersect, *templ_caps;
 
     templ_caps = gst_pad_get_pad_template_caps (otherpad);
@@ -1260,68 +1285,51 @@
 gst_base_transform_acceptcaps_default (GstBaseTransform * trans,
     GstPadDirection direction, GstCaps * caps)
 {
-#if 0
-  GstPad *otherpad;
-  GstCaps *othercaps = NULL;
-#endif
+  GstPad *pad, *otherpad;
+  GstCaps *templ, *otempl, *ocaps = NULL;
   gboolean ret = TRUE;
 
-#if 0
-  otherpad = (pad == trans->srcpad) ? trans->sinkpad : trans->srcpad;
+  pad =
+      (direction ==
+      GST_PAD_SINK) ? GST_BASE_TRANSFORM_SINK_PAD (trans) :
+      GST_BASE_TRANSFORM_SRC_PAD (trans);
+  otherpad =
+      (direction ==
+      GST_PAD_SINK) ? GST_BASE_TRANSFORM_SRC_PAD (trans) :
+      GST_BASE_TRANSFORM_SINK_PAD (trans);
 
-  /* we need fixed caps for the check, fall back to the default implementation
-   * if we don't */
-  if (!gst_caps_is_fixed (caps))
-#endif
-  {
-    GstCaps *allowed;
+  GST_DEBUG_OBJECT (trans, "accept caps %" GST_PTR_FORMAT, caps);
 
-    GST_DEBUG_OBJECT (trans, "accept caps %" GST_PTR_FORMAT, caps);
+  templ = gst_pad_get_pad_template_caps (pad);
+  otempl = gst_pad_get_pad_template_caps (otherpad);
 
-    /* get all the formats we can handle on this pad */
-    if (direction == GST_PAD_SRC)
-      allowed = gst_pad_query_caps (trans->srcpad, caps);
-    else
-      allowed = gst_pad_query_caps (trans->sinkpad, caps);
+  /* get all the formats we can handle on this pad */
+  GST_DEBUG_OBJECT (trans, "intersect with pad template: %" GST_PTR_FORMAT,
+      templ);
+  if (!gst_caps_can_intersect (caps, templ))
+    goto reject_caps;
 
-    if (!allowed) {
-      GST_DEBUG_OBJECT (trans, "gst_pad_query_caps() failed");
-      goto no_transform_possible;
-    }
-
-    GST_DEBUG_OBJECT (trans, "allowed caps %" GST_PTR_FORMAT, allowed);
-
-    /* intersect with the requested format */
-    ret = gst_caps_is_subset (caps, allowed);
-    gst_caps_unref (allowed);
-
-    if (!ret)
-      goto no_transform_possible;
-  }
-#if 0
-  else {
-    GST_DEBUG_OBJECT (pad, "accept caps %" GST_PTR_FORMAT, caps);
-
-    /* find best possible caps for the other pad as a way to see if we can
-     * transform this caps. */
-    othercaps = gst_base_transform_find_transform (trans, pad, caps, FALSE);
-    if (!othercaps || gst_caps_is_empty (othercaps))
-      goto no_transform_possible;
-
-    GST_DEBUG_OBJECT (pad, "we can transform to %" GST_PTR_FORMAT, othercaps);
-  }
-#endif
+  GST_DEBUG_OBJECT (trans, "trying to transform with filter: %"
+      GST_PTR_FORMAT " (the other pad template)", otempl);
+  ocaps = gst_base_transform_transform_caps (trans, direction, caps, otempl);
+  if (!ocaps || gst_caps_is_empty (ocaps))
+    goto no_transform_possible;
 
 done:
-#if 0
-  /* We know it's always NULL since we never use it */
-  if (othercaps)
-    gst_caps_unref (othercaps);
-#endif
-
+  GST_DEBUG_OBJECT (trans, "accept-caps result: %d", ret);
+  if (ocaps)
+    gst_caps_unref (ocaps);
+  gst_caps_unref (templ);
+  gst_caps_unref (otempl);
   return ret;
 
   /* ERRORS */
+reject_caps:
+  {
+    GST_DEBUG_OBJECT (trans, "caps can't intersect with the template");
+    ret = FALSE;
+    goto done;
+  }
 no_transform_possible:
   {
     GST_DEBUG_OBJECT (trans,
@@ -1342,7 +1350,7 @@
     GstCaps * incaps)
 {
   GstBaseTransformPrivate *priv = trans->priv;
-  GstCaps *outcaps, *prevcaps;
+  GstCaps *outcaps, *prev_incaps = NULL, *prev_outcaps = NULL;
   gboolean ret = TRUE;
 
   GST_DEBUG_OBJECT (pad, "have new caps %p %" GST_PTR_FORMAT, incaps, incaps);
@@ -1361,18 +1369,23 @@
     outcaps = gst_caps_ref (incaps);
   }
 
-  /* call configure now */
-  if (!(ret = gst_base_transform_configure_caps (trans, incaps, outcaps)))
-    goto failed_configure;
+  prev_incaps = gst_pad_get_current_caps (trans->sinkpad);
+  prev_outcaps = gst_pad_get_current_caps (trans->srcpad);
+  if (prev_incaps && prev_outcaps && gst_caps_is_equal (prev_incaps, incaps)
+      && gst_caps_is_equal (prev_outcaps, outcaps)) {
+    GST_DEBUG_OBJECT (trans,
+        "New caps equal to old ones: %" GST_PTR_FORMAT " -> %" GST_PTR_FORMAT,
+        incaps, outcaps);
+    ret = TRUE;
+  } else {
+    /* call configure now */
+    if (!(ret = gst_base_transform_configure_caps (trans, incaps, outcaps)))
+      goto failed_configure;
 
-  prevcaps = gst_pad_get_current_caps (trans->srcpad);
-
-  if (!prevcaps || !gst_caps_is_equal (outcaps, prevcaps))
-    /* let downstream know about our caps */
-    ret = gst_pad_set_caps (trans->srcpad, outcaps);
-
-  if (prevcaps)
-    gst_caps_unref (prevcaps);
+    if (!prev_outcaps || !gst_caps_is_equal (outcaps, prev_outcaps))
+      /* let downstream know about our caps */
+      ret = gst_pad_set_caps (trans->srcpad, outcaps);
+  }
 
   if (ret) {
     /* try to get a pool when needed */
@@ -1382,6 +1395,10 @@
 done:
   if (outcaps)
     gst_caps_unref (outcaps);
+  if (prev_incaps)
+    gst_caps_unref (prev_incaps);
+  if (prev_outcaps)
+    gst_caps_unref (prev_outcaps);
 
   GST_OBJECT_LOCK (trans);
   priv->negotiated = ret;
@@ -1435,6 +1452,37 @@
 }
 
 static gboolean
+gst_base_transform_reconfigure (GstBaseTransform * trans)
+{
+  gboolean reconfigure, ret = TRUE;
+
+  reconfigure = gst_pad_check_reconfigure (trans->srcpad);
+
+  if (G_UNLIKELY (reconfigure)) {
+    GstCaps *incaps;
+
+    GST_DEBUG_OBJECT (trans, "we had a pending reconfigure");
+
+    incaps = gst_pad_get_current_caps (trans->sinkpad);
+    if (incaps == NULL)
+      goto done;
+
+    /* if we need to reconfigure we pretend new caps arrived. This
+     * will reconfigure the transform with the new output format. */
+    if (!gst_base_transform_setcaps (trans, trans->sinkpad, incaps)) {
+      GST_ELEMENT_WARNING (trans, STREAM, FORMAT,
+          ("not negotiated"), ("not negotiated"));
+      ret = FALSE;
+    }
+
+    gst_caps_unref (incaps);
+  }
+
+done:
+  return ret;
+}
+
+static gboolean
 gst_base_transform_default_query (GstBaseTransform * trans,
     GstPadDirection direction, GstQuery * query)
 {
@@ -1462,6 +1510,10 @@
       if (direction != GST_PAD_SINK)
         goto done;
 
+      ret = gst_base_transform_reconfigure (trans);
+      if (G_UNLIKELY (!ret))
+        goto done;
+
       GST_OBJECT_LOCK (trans);
       if (!priv->negotiated && !priv->passthrough && (klass->set_caps != NULL)) {
         GST_DEBUG_OBJECT (trans,
@@ -1469,8 +1521,9 @@
         GST_OBJECT_UNLOCK (trans);
         goto done;
       }
-      if ((decide_query = trans->priv->query))
-        gst_query_ref (decide_query);
+
+      decide_query = trans->priv->query;
+      trans->priv->query = NULL;
       GST_OBJECT_UNLOCK (trans);
 
       GST_DEBUG_OBJECT (trans,
@@ -1483,8 +1536,16 @@
       else
         ret = FALSE;
 
-      if (decide_query)
-        gst_query_unref (decide_query);
+      if (decide_query) {
+        GST_OBJECT_LOCK (trans);
+
+        if (trans->priv->query == NULL)
+          trans->priv->query = decide_query;
+        else
+          gst_query_unref (decide_query);
+
+        GST_OBJECT_UNLOCK (trans);
+      }
 
       GST_DEBUG_OBJECT (trans, "ALLOCATION ret %d, %" GST_PTR_FORMAT, ret,
           query);
@@ -1700,12 +1761,7 @@
 
   klass = GST_BASE_TRANSFORM_GET_CLASS (trans);
 
-  if (GST_META_FLAG_IS_SET (*meta, GST_META_FLAG_POOLED)) {
-    /* never call the transform_meta with pool private metadata */
-    GST_DEBUG_OBJECT (trans, "not copying pooled metadata %s",
-        g_type_name (info->api));
-    do_copy = FALSE;
-  } else if (gst_meta_api_type_has_tag (info->api, _gst_meta_tag_memory)) {
+  if (gst_meta_api_type_has_tag (info->api, _gst_meta_tag_memory)) {
     /* never call the transform_meta with memory specific metadata */
     GST_DEBUG_OBJECT (trans, "not copying memory specific metadata %s",
         g_type_name (info->api));
@@ -1956,46 +2012,20 @@
   return ret;
 }
 
-/* perform a transform on @inbuf and put the result in @outbuf.
- *
- * This function is common to the push and pull-based operations.
- *
- * This function takes ownership of @inbuf */
+/* Takes the input buffer */
 static GstFlowReturn
-gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
-    GstBuffer ** outbuf)
+default_submit_input_buffer (GstBaseTransform * trans, gboolean is_discont,
+    GstBuffer * inbuf)
 {
-  GstBaseTransformClass *bclass;
+  GstBaseTransformClass *bclass = GST_BASE_TRANSFORM_GET_CLASS (trans);
   GstBaseTransformPrivate *priv = trans->priv;
   GstFlowReturn ret = GST_FLOW_OK;
-  gboolean want_in_place;
   GstClockTime running_time;
   GstClockTime timestamp;
-  gboolean reconfigure;
 
-  bclass = GST_BASE_TRANSFORM_GET_CLASS (trans);
+  if (G_UNLIKELY (!gst_base_transform_reconfigure (trans)))
+    goto not_negotiated;
 
-  reconfigure = gst_pad_check_reconfigure (trans->srcpad);
-
-  if (G_UNLIKELY (reconfigure)) {
-    GstCaps *incaps;
-
-    GST_DEBUG_OBJECT (trans, "we had a pending reconfigure");
-
-    incaps = gst_pad_get_current_caps (trans->sinkpad);
-    if (incaps == NULL)
-      goto no_reconfigure;
-
-    /* if we need to reconfigure we pretend new caps arrived. This
-     * will reconfigure the transform with the new output format. */
-    if (!gst_base_transform_setcaps (trans, trans->sinkpad, incaps)) {
-      gst_caps_unref (incaps);
-      goto not_negotiated;
-    }
-    gst_caps_unref (incaps);
-  }
-
-no_reconfigure:
   if (GST_BUFFER_OFFSET_IS_VALID (inbuf))
     GST_DEBUG_OBJECT (trans,
         "handling buffer %p of size %" G_GSIZE_FORMAT " and offset %"
@@ -2013,12 +2043,6 @@
   if (!priv->negotiated && !priv->passthrough && (bclass->set_caps != NULL))
     goto not_negotiated;
 
-  /* Set discont flag so we can mark the outgoing buffer */
-  if (GST_BUFFER_IS_DISCONT (inbuf)) {
-    GST_DEBUG_OBJECT (trans, "got DISCONT buffer %p", inbuf);
-    priv->discont = TRUE;
-  }
-
   /* can only do QoS if the segment is in TIME */
   if (trans->segment.format != GST_FORMAT_TIME)
     goto no_qos;
@@ -2072,11 +2096,49 @@
 
       /* mark discont for next buffer */
       priv->discont = TRUE;
+      ret = GST_BASE_TRANSFORM_FLOW_DROPPED;
       goto skip;
     }
   }
 
 no_qos:
+  /* Stash input buffer where the default generate_output
+   * function can find it */
+  if (trans->queued_buf)
+    gst_buffer_unref (trans->queued_buf);
+  trans->queued_buf = inbuf;
+  return ret;
+skip:
+  gst_buffer_unref (inbuf);
+  return ret;
+
+not_negotiated:
+  {
+    gst_buffer_unref (inbuf);
+    if (GST_PAD_IS_FLUSHING (trans->srcpad))
+      return GST_FLOW_FLUSHING;
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
+}
+
+static GstFlowReturn
+default_generate_output (GstBaseTransform * trans, GstBuffer ** outbuf)
+{
+  GstBaseTransformClass *bclass = GST_BASE_TRANSFORM_GET_CLASS (trans);
+  GstBaseTransformPrivate *priv = trans->priv;
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstBuffer *inbuf;
+  gboolean want_in_place;
+
+  /* Retrieve stashed input buffer, if the default submit_input_buffer
+   * was run. Takes ownership back from there */
+  inbuf = trans->queued_buf;
+  trans->queued_buf = NULL;
+
+  /* This default processing method needs one input buffer to feed to
+   * the transform functions, we can't do anything without it */
+  if (inbuf == NULL)
+    return GST_FLOW_OK;
 
   /* first try to allocate an output buffer based on the currently negotiated
    * format. outbuf will contain a buffer suitable for doing the configured
@@ -2120,7 +2182,6 @@
     }
   }
 
-skip:
   /* only unref input buffer if we allocated a new outbuf buffer. If we reused
    * the input buffer, no refcount is changed to keep the input buffer writable
    * when needed. */
@@ -2130,14 +2191,6 @@
   return ret;
 
   /* ERRORS */
-not_negotiated:
-  {
-    gst_buffer_unref (inbuf);
-    *outbuf = NULL;
-    GST_ELEMENT_WARNING (trans, STREAM, FORMAT,
-        ("not negotiated"), ("not negotiated"));
-    return GST_FLOW_NOT_NEGOTIATED;
-  }
 no_prepare:
   {
     gst_buffer_unref (inbuf);
@@ -2162,23 +2215,65 @@
 gst_base_transform_getrange (GstPad * pad, GstObject * parent, guint64 offset,
     guint length, GstBuffer ** buffer)
 {
-  GstBaseTransform *trans;
-  GstBaseTransformClass *klass;
+  GstBaseTransformClass *klass = GST_BASE_TRANSFORM_GET_CLASS (parent);
+  GstBaseTransform *trans = GST_BASE_TRANSFORM (parent);
+  GstBaseTransformPrivate *priv = trans->priv;
   GstFlowReturn ret;
   GstBuffer *inbuf = NULL;
+  GstBuffer *outbuf = NULL;
 
-  trans = GST_BASE_TRANSFORM (parent);
+  /* Try and generate a buffer, if the sub-class wants more data,
+   * pull some and repeat until a buffer (or error) is produced */
+  do {
+    ret = klass->generate_output (trans, &outbuf);
 
-  ret = gst_pad_pull_range (trans->sinkpad, offset, length, &inbuf);
-  if (G_UNLIKELY (ret != GST_FLOW_OK))
-    goto pull_error;
+    /* Consume the DROPPED return value and go get more data */
+    if (ret == GST_BASE_TRANSFORM_FLOW_DROPPED)
+      ret = GST_FLOW_OK;
 
-  klass = GST_BASE_TRANSFORM_GET_CLASS (trans);
-  if (klass->before_transform)
-    klass->before_transform (trans, inbuf);
+    if (ret != GST_FLOW_OK || outbuf != NULL)
+      break;
 
-  ret = gst_base_transform_handle_buffer (trans, inbuf, buffer);
+    /* No buffer generated, try and pull data */
+    ret = gst_pad_pull_range (trans->sinkpad, offset, length, &inbuf);
+    if (G_UNLIKELY (ret != GST_FLOW_OK))
+      goto pull_error;
 
+    if (klass->before_transform)
+      klass->before_transform (trans, inbuf);
+
+    /* Set discont flag so we can mark the next outgoing buffer */
+    if (GST_BUFFER_IS_DISCONT (inbuf)) {
+      GST_DEBUG_OBJECT (trans, "got DISCONT buffer %p", inbuf);
+      priv->discont = TRUE;
+    }
+
+    /* FIXME: Input offsets and lengths need to be translated, as per
+     * the FIXME above. For now, just advance somewhat */
+    offset += gst_buffer_get_size (inbuf);
+
+    ret = klass->submit_input_buffer (trans, priv->discont, inbuf);
+    if (ret != GST_FLOW_OK) {
+      if (ret == GST_BASE_TRANSFORM_FLOW_DROPPED)
+        ret = GST_FLOW_OK;
+      goto done;
+    }
+  } while (ret == GST_FLOW_OK && outbuf == NULL);
+
+  *buffer = outbuf;
+  if (outbuf) {
+    /* apply DISCONT flag if the buffer is not yet marked as such */
+    if (priv->discont) {
+      GST_DEBUG_OBJECT (trans, "we have a pending DISCONT");
+      if (!GST_BUFFER_IS_DISCONT (outbuf)) {
+        GST_DEBUG_OBJECT (trans, "marking DISCONT on output buffer");
+        outbuf = gst_buffer_make_writable (outbuf);
+        GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      }
+      priv->discont = FALSE;
+    }
+    priv->processed++;
+  }
 done:
   return ret;
 
@@ -2191,20 +2286,21 @@
   }
 }
 
+/* The flow of the chain function is the reverse of the
+ * getrange() function - we have data, feed it to the sub-class
+ * and then iterate, pushing buffers it generates until it either
+ * wants more data or returns an error */
 static GstFlowReturn
 gst_base_transform_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
 {
-  GstBaseTransform *trans;
-  GstBaseTransformClass *klass;
-  GstBaseTransformPrivate *priv;
+  GstBaseTransform *trans = GST_BASE_TRANSFORM (parent);
+  GstBaseTransformClass *klass = GST_BASE_TRANSFORM_GET_CLASS (trans);
+  GstBaseTransformPrivate *priv = trans->priv;
   GstFlowReturn ret;
   GstClockTime position = GST_CLOCK_TIME_NONE;
   GstClockTime timestamp, duration;
   GstBuffer *outbuf = NULL;
 
-  trans = GST_BASE_TRANSFORM (parent);
-  priv = trans->priv;
-
   timestamp = GST_BUFFER_TIMESTAMP (buffer);
   duration = GST_BUFFER_DURATION (buffer);
 
@@ -2216,54 +2312,68 @@
       position = timestamp;
   }
 
-  klass = GST_BASE_TRANSFORM_GET_CLASS (trans);
   if (klass->before_transform)
     klass->before_transform (trans, buffer);
 
-  /* protect transform method and concurrent buffer alloc */
-  ret = gst_base_transform_handle_buffer (trans, buffer, &outbuf);
-
-  /* outbuf can be NULL, this means a dropped buffer, if we have a buffer but
-   * GST_BASE_TRANSFORM_FLOW_DROPPED we will not push either. */
-  if (outbuf != NULL) {
-    if (ret == GST_FLOW_OK) {
-      GstClockTime position_out = GST_CLOCK_TIME_NONE;
-
-      /* Remember last stop position */
-      if (position != GST_CLOCK_TIME_NONE &&
-          trans->segment.format == GST_FORMAT_TIME)
-        trans->segment.position = position;
-
-      if (GST_BUFFER_TIMESTAMP_IS_VALID (outbuf)) {
-        position_out = GST_BUFFER_TIMESTAMP (outbuf);
-        if (GST_BUFFER_DURATION_IS_VALID (outbuf))
-          position_out += GST_BUFFER_DURATION (outbuf);
-      } else if (position != GST_CLOCK_TIME_NONE) {
-        position_out = position;
-      }
-      if (position_out != GST_CLOCK_TIME_NONE
-          && trans->segment.format == GST_FORMAT_TIME)
-        priv->position_out = position_out;
-
-      /* apply DISCONT flag if the buffer is not yet marked as such */
-      if (trans->priv->discont) {
-        GST_DEBUG_OBJECT (trans, "we have a pending DISCONT");
-        if (!GST_BUFFER_IS_DISCONT (outbuf)) {
-          GST_DEBUG_OBJECT (trans, "marking DISCONT on output buffer");
-          outbuf = gst_buffer_make_writable (outbuf);
-          GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
-        }
-        priv->discont = FALSE;
-      }
-      priv->processed++;
-
-      ret = gst_pad_push (trans->srcpad, outbuf);
-    } else {
-      GST_DEBUG_OBJECT (trans, "we got return %s", gst_flow_get_name (ret));
-      gst_buffer_unref (outbuf);
-    }
+  /* Set discont flag so we can mark the outgoing buffer */
+  if (GST_BUFFER_IS_DISCONT (buffer)) {
+    GST_DEBUG_OBJECT (trans, "got DISCONT buffer %p", buffer);
+    priv->discont = TRUE;
   }
 
+  /* Takes ownership of input buffer */
+  ret = klass->submit_input_buffer (trans, priv->discont, buffer);
+  if (ret != GST_FLOW_OK)
+    goto done;
+
+  do {
+    outbuf = NULL;
+
+    ret = klass->generate_output (trans, &outbuf);
+
+    /* outbuf can be NULL, this means a dropped buffer, if we have a buffer but
+     * GST_BASE_TRANSFORM_FLOW_DROPPED we will not push either. */
+    if (outbuf != NULL) {
+      if (ret == GST_FLOW_OK) {
+        GstClockTime position_out = GST_CLOCK_TIME_NONE;
+
+        /* Remember last stop position */
+        if (position != GST_CLOCK_TIME_NONE &&
+            trans->segment.format == GST_FORMAT_TIME)
+          trans->segment.position = position;
+
+        if (GST_BUFFER_TIMESTAMP_IS_VALID (outbuf)) {
+          position_out = GST_BUFFER_TIMESTAMP (outbuf);
+          if (GST_BUFFER_DURATION_IS_VALID (outbuf))
+            position_out += GST_BUFFER_DURATION (outbuf);
+        } else if (position != GST_CLOCK_TIME_NONE) {
+          position_out = position;
+        }
+        if (position_out != GST_CLOCK_TIME_NONE
+            && trans->segment.format == GST_FORMAT_TIME)
+          priv->position_out = position_out;
+
+        /* apply DISCONT flag if the buffer is not yet marked as such */
+        if (trans->priv->discont) {
+          GST_DEBUG_OBJECT (trans, "we have a pending DISCONT");
+          if (!GST_BUFFER_IS_DISCONT (outbuf)) {
+            GST_DEBUG_OBJECT (trans, "marking DISCONT on output buffer");
+            outbuf = gst_buffer_make_writable (outbuf);
+            GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+          }
+          priv->discont = FALSE;
+        }
+        priv->processed++;
+
+        ret = gst_pad_push (trans->srcpad, outbuf);
+      } else {
+        GST_DEBUG_OBJECT (trans, "we got return %s", gst_flow_get_name (ret));
+        gst_buffer_unref (outbuf);
+      }
+    }
+  } while (ret == GST_FLOW_OK && outbuf != NULL);
+
+done:
   /* convert internal flow to OK and mark discont for the next buffer. */
   if (ret == GST_BASE_TRANSFORM_FLOW_DROPPED) {
     GST_DEBUG_OBJECT (trans, "dropped a buffer, marking DISCONT");
@@ -2366,6 +2476,9 @@
     gst_caps_replace (&priv->cache_caps1, NULL);
     gst_caps_replace (&priv->cache_caps2, NULL);
 
+    /* Make sure any left over buffer is freed */
+    gst_buffer_replace (&trans->queued_buf, NULL);
+
     if (priv->pad_mode != GST_PAD_MODE_NONE && bclass->stop)
       result &= bclass->stop (trans);
 
@@ -2455,7 +2568,7 @@
   bclass = GST_BASE_TRANSFORM_GET_CLASS (trans);
 
   GST_OBJECT_LOCK (trans);
-  if (passthrough == FALSE) {
+  if (!passthrough) {
     if (bclass->transform_ip || bclass->transform)
       trans->priv->passthrough = FALSE;
   } else {
@@ -2765,3 +2878,35 @@
   if (params)
     *params = trans->priv->params;
 }
+
+/**
+ * gst_base_transform_update_src_caps:
+ * @trans: a #GstBaseTransform
+ * @updated_caps: An updated version of the srcpad caps to be pushed
+ * downstream
+ *
+ * Updates the srcpad caps and send the caps downstream. This function
+ * can be used by subclasses when they have already negotiated their caps
+ * but found a change in them (or computed new informations). This way,
+ * they can notify downstream about that change without loosing any
+ * buffer.
+ *
+ * Returns: %TRUE if the caps could be send downstream %FALSE otherwise
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_base_transform_update_src_caps (GstBaseTransform * trans,
+    GstCaps * updated_caps)
+{
+  g_return_val_if_fail (GST_IS_BASE_TRANSFORM (trans), FALSE);
+
+  if (gst_pad_push_event (GST_BASE_TRANSFORM_SRC_PAD (trans),
+          gst_event_new_caps (updated_caps))) {
+    gst_pad_mark_reconfigure (trans->srcpad);
+
+    return TRUE;
+  }
+
+  return FALSE;
+}
diff --git a/libs/gst/base/gstbasetransform.h b/libs/gst/base/gstbasetransform.h
index 3043a62..ab795e8 100644
--- a/libs/gst/base/gstbasetransform.h
+++ b/libs/gst/base/gstbasetransform.h
@@ -90,11 +90,14 @@
   /* MT-protected (with STREAM_LOCK) */
   gboolean       have_segment;
   GstSegment     segment;
+  /* Default submit_input_buffer places the buffer here,
+   * for consumption by the generate_output method: */
+  GstBuffer      *queued_buf;
 
   /*< private >*/
   GstBaseTransformPrivate *priv;
 
-  gpointer       _gst_reserved[GST_PADDING_LARGE];
+  gpointer       _gst_reserved[GST_PADDING_LARGE-1];
 };
 
 /**
@@ -176,9 +179,9 @@
  *                 The default implementation will copy the flags, timestamps and
  *                 offsets of the buffer.
  * @transform_meta: Optional. Transform the metadata on the input buffer to the
- *                  output buffer. By default this method is %NULL and no
- *                  metadata is copied. subclasses can implement this method and
- *                  return %TRUE if the metadata is to be copied.
+ *                  output buffer. By default this method copies all meta without
+ *                  tags. subclasses can implement this method and return %TRUE if
+ *                  the metadata is to be copied.
  * @before_transform: Optional.
  *                    This method is called right before the base class will
  *                    start processing. Dynamic properties or other delayed
@@ -189,7 +192,23 @@
  *                  of the outgoing buffer.
  * @transform_ip:   Required if the element operates in-place.
  *                  Transform the incoming buffer in-place.
- *
+ * @submit_input_buffer: Function which accepts a new input buffer and pre-processes it.
+ *                  The default implementation performs caps (re)negotiation, then
+ *                  QoS if needed, and places the input buffer into the @queued_buf
+ *                  member variable. If the buffer is dropped due to QoS, it returns
+ *                  GST_BASE_TRANSFORM_FLOW_DROPPED. If this input buffer is not
+ *                  contiguous with any previous input buffer, then @is_discont
+ *                  is set to #TRUE. (Since 1.6)
+ * @generate_output: Called after each new input buffer is submitted repeatedly
+ *                   until it either generates an error or fails to generate an output
+ *                   buffer. The default implementation takes the contents of the
+ *                   @queued_buf variable, generates an output buffer if needed
+ *                   by calling the class @prepare_output_buffer, and then
+ *                   calls either @transform or @transform_ip. Elements that don't
+ *                   do 1-to-1 transformations on input to output buffers can either
+ *                   return GST_BASE_TRANSFORM_FLOW_DROPPED or simply not generate
+ *                   an output buffer until they are ready to do so. (Since 1.6)
+ *                   
  * Subclasses can override any of the available virtual methods or not, as
  * needed. At minimum either @transform or @transform_ip need to be overridden.
  * If the element can overwrite the input data with the results (data is of the
@@ -258,8 +277,11 @@
                                  GstBuffer *outbuf);
   GstFlowReturn (*transform_ip) (GstBaseTransform *trans, GstBuffer *buf);
 
+  GstFlowReturn (*submit_input_buffer) (GstBaseTransform *trans, gboolean is_discont, GstBuffer *input);
+  GstFlowReturn (*generate_output) (GstBaseTransform *trans, GstBuffer **outbuf);
+
   /*< private >*/
-  gpointer       _gst_reserved[GST_PADDING_LARGE];
+  gpointer       _gst_reserved[GST_PADDING_LARGE - 2];
 };
 
 GType           gst_base_transform_get_type         (void);
@@ -293,6 +315,8 @@
 
 void		gst_base_transform_reconfigure_sink (GstBaseTransform *trans);
 void		gst_base_transform_reconfigure_src  (GstBaseTransform *trans);
+gboolean gst_base_transform_update_src_caps (GstBaseTransform *trans,
+                                             GstCaps *updated_caps);
 G_END_DECLS
 
 #endif /* __GST_BASE_TRANSFORM_H__ */
diff --git a/libs/gst/base/gstbitreader.c b/libs/gst/base/gstbitreader.c
index 2a325db..3879372 100644
--- a/libs/gst/base/gstbitreader.c
+++ b/libs/gst/base/gstbitreader.c
@@ -37,7 +37,7 @@
  */
 
 /**
- * gst_bit_reader_new:
+ * gst_bit_reader_new: (skip)
  * @data: (array length=size): Data from which the #GstBitReader
  *   should read
  * @size: Size of @data in bytes
diff --git a/libs/gst/base/gstbytereader.c b/libs/gst/base/gstbytereader.c
index b73a679..8a7e35d 100644
--- a/libs/gst/base/gstbytereader.c
+++ b/libs/gst/base/gstbytereader.c
@@ -1,7 +1,7 @@
 /* GStreamer byte reader
  *
  * Copyright (C) 2008 Sebastian Dröge <sebastian.droege@collabora.co.uk>.
- * Copyright (C) 2009 Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) 2009,2014 Tim-Philipp Müller <tim centricular net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -42,7 +42,7 @@
  */
 
 /**
- * gst_byte_reader_new:
+ * gst_byte_reader_new: (skip)
  * @data: (in) (transfer none) (array length=size): data from which the
  *     #GstByteReader should read
  * @size: Size of @data in bytes
@@ -100,6 +100,56 @@
 }
 
 /**
+ * gst_byte_reader_peek_sub_reader: (skip)
+ * @reader: an existing and initialized #GstByteReader instance
+ * @sub_reader: a #GstByteReader instance to initialize as sub-reader
+ * @size: size of @sub_reader in bytes
+ *
+ * Initializes a #GstByteReader sub-reader instance to contain @size bytes of
+ * data from the current position of @reader. This is useful to read chunked
+ * formats and make sure that one doesn't read beyond the size of the sub-chunk.
+ *
+ * Unlike gst_byte_reader_get_sub_reader(), this function does not modify the
+ * current position of @reader.
+ *
+ * Returns: FALSE on error or if @reader does not contain @size more bytes from
+ *     the current position, and otherwise TRUE
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_byte_reader_peek_sub_reader (GstByteReader * reader,
+    GstByteReader * sub_reader, guint size)
+{
+  return _gst_byte_reader_peek_sub_reader_inline (reader, sub_reader, size);
+}
+
+/**
+ * gst_byte_reader_get_sub_reader: (skip)
+ * @reader: an existing and initialized #GstByteReader instance
+ * @sub_reader: a #GstByteReader instance to initialize as sub-reader
+ * @size: size of @sub_reader in bytes
+ *
+ * Initializes a #GstByteReader sub-reader instance to contain @size bytes of
+ * data from the current position of @reader. This is useful to read chunked
+ * formats and make sure that one doesn't read beyond the size of the sub-chunk.
+ *
+ * Unlike gst_byte_reader_peek_sub_reader(), this function also modifies the
+ * position of @reader and moves it forward by @size bytes.
+ *
+ * Returns: FALSE on error or if @reader does not contain @size more bytes from
+ *     the current position, and otherwise TRUE
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_byte_reader_get_sub_reader (GstByteReader * reader,
+    GstByteReader * sub_reader, guint size)
+{
+  return _gst_byte_reader_get_sub_reader_inline (reader, sub_reader, size);
+}
+
+/**
  * gst_byte_reader_set_pos:
  * @reader: a #GstByteReader instance
  * @pos: The new position in bytes
@@ -794,6 +844,55 @@
   return -1;
 }
 
+static inline guint
+_masked_scan_uint32_peek (const GstByteReader * reader,
+    guint32 mask, guint32 pattern, guint offset, guint size, guint32 * value)
+{
+  const guint8 *data;
+  guint32 state;
+  guint i;
+
+  g_return_val_if_fail (size > 0, -1);
+  g_return_val_if_fail ((guint64) offset + size <= reader->size - reader->byte,
+      -1);
+
+  /* we can't find the pattern with less than 4 bytes */
+  if (G_UNLIKELY (size < 4))
+    return -1;
+
+  data = reader->data + reader->byte + offset;
+
+  /* Handle special case found in MPEG and H264 */
+  if ((pattern == 0x00000100) && (mask == 0xffffff00)) {
+    guint ret = _scan_for_start_code (data, offset, size);
+    if (G_UNLIKELY (value))
+      *value = (1 << 8) | data[ret + 3];
+    return ret;
+  }
+
+  /* set the state to something that does not match */
+  state = ~pattern;
+
+  /* now find data */
+  for (i = 0; i < size; i++) {
+    /* throw away one byte and move in the next byte */
+    state = ((state << 8) | data[i]);
+    if (G_UNLIKELY ((state & mask) == pattern)) {
+      /* we have a match but we need to have skipped at
+       * least 4 bytes to fill the state. */
+      if (G_LIKELY (i >= 3)) {
+        if (value)
+          *value = state;
+        return offset + i - 3;
+      }
+    }
+  }
+
+  /* nothing found */
+  return -1;
+}
+
+
 /**
  * gst_byte_reader_masked_scan_uint32:
  * @reader: a #GstByteReader
@@ -840,41 +939,39 @@
 gst_byte_reader_masked_scan_uint32 (const GstByteReader * reader, guint32 mask,
     guint32 pattern, guint offset, guint size)
 {
-  const guint8 *data;
-  guint32 state;
-  guint i;
+  return _masked_scan_uint32_peek (reader, mask, pattern, offset, size, NULL);
+}
 
-  g_return_val_if_fail (size > 0, -1);
-  g_return_val_if_fail ((guint64) offset + size <= reader->size - reader->byte,
-      -1);
-
-  /* we can't find the pattern with less than 4 bytes */
-  if (G_UNLIKELY (size < 4))
-    return -1;
-
-  data = reader->data + reader->byte + offset;
-
-  /* Handle special case found in MPEG and H264 */
-  if ((pattern == 0x00000100) && (mask == 0xffffff00))
-    return _scan_for_start_code (data, offset, size);
-
-  /* set the state to something that does not match */
-  state = ~pattern;
-
-  /* now find data */
-  for (i = 0; i < size; i++) {
-    /* throw away one byte and move in the next byte */
-    state = ((state << 8) | data[i]);
-    if (G_UNLIKELY ((state & mask) == pattern)) {
-      /* we have a match but we need to have skipped at
-       * least 4 bytes to fill the state. */
-      if (G_LIKELY (i >= 3))
-        return offset + i - 3;
-    }
-  }
-
-  /* nothing found */
-  return -1;
+/**
+ * gst_byte_reader_masked_scan_uint32_peek:
+ * @reader: a #GstByteReader
+ * @mask: mask to apply to data before matching against @pattern
+ * @pattern: pattern to match (after mask is applied)
+ * @offset: offset from which to start scanning, relative to the current
+ *     position
+ * @size: number of bytes to scan from offset
+ * @value: pointer to uint32 to return matching data
+ *
+ * Scan for pattern @pattern with applied mask @mask in the byte reader data,
+ * starting from offset @offset relative to the current position.
+ *
+ * The bytes in @pattern and @mask are interpreted left-to-right, regardless
+ * of endianness.  All four bytes of the pattern must be present in the
+ * byte reader data for it to match, even if the first or last bytes are masked
+ * out.
+ *
+ * It is an error to call this function without making sure that there is
+ * enough data (offset+size bytes) in the byte reader.
+ *
+ * Returns: offset of the first match, or -1 if no match was found.
+ *
+ * Since: 1.6
+ */
+guint
+gst_byte_reader_masked_scan_uint32_peek (const GstByteReader * reader,
+    guint32 mask, guint32 pattern, guint offset, guint size, guint32 * value)
+{
+  return _masked_scan_uint32_peek (reader, mask, pattern, offset, size, value);
 }
 
 #define GST_BYTE_READER_SCAN_STRING(bits) \
diff --git a/libs/gst/base/gstbytereader.h b/libs/gst/base/gstbytereader.h
index 8745ef6..dd66011 100644
--- a/libs/gst/base/gstbytereader.h
+++ b/libs/gst/base/gstbytereader.h
@@ -52,6 +52,14 @@
 
 void            gst_byte_reader_init            (GstByteReader *reader, const guint8 *data, guint size);
 
+gboolean        gst_byte_reader_peek_sub_reader (GstByteReader * reader,
+                                                 GstByteReader * sub_reader,
+                                                 guint           size);
+
+gboolean        gst_byte_reader_get_sub_reader  (GstByteReader * reader,
+                                                 GstByteReader * sub_reader,
+                                                 guint           size);
+
 gboolean        gst_byte_reader_set_pos         (GstByteReader *reader, guint pos);
 guint           gst_byte_reader_get_pos         (const GstByteReader *reader);
 
@@ -141,6 +149,12 @@
                                                     guint32               pattern,
                                                     guint                 offset,
                                                     guint                 size);
+guint           gst_byte_reader_masked_scan_uint32_peek (const GstByteReader * reader,
+                                                         guint32 mask,
+                                                         guint32 pattern,
+                                                         guint offset,
+                                                         guint size,
+                                                         guint32 * value);
 
 /**
  * GST_BYTE_READER_INIT:
@@ -450,12 +464,38 @@
 }
 
 static inline gboolean
+_gst_byte_reader_peek_sub_reader_inline (GstByteReader * reader,
+    GstByteReader * sub_reader, guint size)
+{
+  g_return_val_if_fail (reader != NULL, FALSE);
+  g_return_val_if_fail (sub_reader != NULL, FALSE);
+
+  if (_gst_byte_reader_get_remaining_unchecked (reader) < size)
+    return FALSE;
+
+  sub_reader->data = reader->data + reader->byte;
+  sub_reader->byte = 0;
+  sub_reader->size = size;
+  return TRUE;
+}
+
+static inline gboolean
+_gst_byte_reader_get_sub_reader_inline (GstByteReader * reader,
+    GstByteReader * sub_reader, guint size)
+{
+  if (!_gst_byte_reader_peek_sub_reader_inline (reader, sub_reader, size))
+    return FALSE;
+  gst_byte_reader_skip_unchecked (reader, size);
+  return TRUE;
+}
+
+static inline gboolean
 _gst_byte_reader_dup_data_inline (GstByteReader * reader, guint size, guint8 ** val)
 {
   g_return_val_if_fail (reader != NULL, FALSE);
   g_return_val_if_fail (val != NULL, FALSE);
 
-  if (G_UNLIKELY (size > reader->size || _gst_byte_reader_get_remaining_inline (reader) < size))
+  if (G_UNLIKELY (size > reader->size || _gst_byte_reader_get_remaining_unchecked (reader) < size))
     return FALSE;
 
   *val = gst_byte_reader_dup_data_unchecked (reader, size);
@@ -468,7 +508,7 @@
   g_return_val_if_fail (reader != NULL, FALSE);
   g_return_val_if_fail (val != NULL, FALSE);
 
-  if (G_UNLIKELY (size > reader->size || _gst_byte_reader_get_remaining_inline (reader) < size))
+  if (G_UNLIKELY (size > reader->size || _gst_byte_reader_get_remaining_unchecked (reader) < size))
     return FALSE;
 
   *val = gst_byte_reader_get_data_unchecked (reader, size);
@@ -481,7 +521,7 @@
   g_return_val_if_fail (reader != NULL, FALSE);
   g_return_val_if_fail (val != NULL, FALSE);
 
-  if (G_UNLIKELY (size > reader->size || _gst_byte_reader_get_remaining_inline (reader) < size))
+  if (G_UNLIKELY (size > reader->size || _gst_byte_reader_get_remaining_unchecked (reader) < size))
     return FALSE;
 
   *val = gst_byte_reader_peek_data_unchecked (reader);
diff --git a/libs/gst/base/gstbytewriter.c b/libs/gst/base/gstbytewriter.c
index a30dac6..945ac58 100644
--- a/libs/gst/base/gstbytewriter.c
+++ b/libs/gst/base/gstbytewriter.c
@@ -39,7 +39,7 @@
  */
 
 /**
- * gst_byte_writer_new:
+ * gst_byte_writer_new: (skip)
  *
  * Creates a new, empty #GstByteWriter instance
  *
@@ -57,7 +57,7 @@
 }
 
 /**
- * gst_byte_writer_new_with_size:
+ * gst_byte_writer_new_with_size: (skip)
  * @size: Initial size of data
  * @fixed: If %TRUE the data can't be reallocated
  *
@@ -82,7 +82,7 @@
 }
 
 /**
- * gst_byte_writer_new_with_data:
+ * gst_byte_writer_new_with_data: (skip)
  * @data: Memory area for writing
  * @size: Size of @data in bytes
  * @initialized: If %TRUE the complete data can be read from the beginning
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c
index 992446b..30c565f 100644
--- a/libs/gst/base/gstcollectpads.c
+++ b/libs/gst/base/gstcollectpads.c
@@ -320,7 +320,7 @@
 /**
  * gst_collect_pads_set_buffer_function:
  * @pads: the collectpads to use
- * @func: the function to set
+ * @func: (scope call): the function to set
  * @user_data: (closure): user data passed to the function
  *
  * Set the callback function and user data that will be called with
@@ -345,7 +345,7 @@
 /**
  * gst_collect_pads_set_compare_function:
  * @pads: the pads to use
- * @func: the function to set
+ * @func: (scope call): the function to set
  * @user_data: (closure): user data passed to the function
  *
  * Set the timestamp comparison function.
@@ -372,7 +372,7 @@
 /**
  * gst_collect_pads_set_function:
  * @pads: the collectpads to use
- * @func: the function to set
+ * @func: (scope call): the function to set
  * @user_data: user data passed to the function
  *
  * CollectPads provides a default collection algorithm that will determine
@@ -432,7 +432,7 @@
 /**
  * gst_collect_pads_set_event_function:
  * @pads: the collectpads to use
- * @func: the function to set
+ * @func: (scope call): the function to set
  * @user_data: user data passed to the function
  *
  * Set the event callback function and user data that will be called when
@@ -460,7 +460,7 @@
 /**
  * gst_collect_pads_set_query_function:
  * @pads: the collectpads to use
- * @func: the function to set
+ * @func: (scope call): the function to set
  * @user_data: user data passed to the function
  *
  * Set the query callback function and user data that will be called after
@@ -495,6 +495,10 @@
 *
 * Convenience clipping function that converts incoming buffer's timestamp
 * to running time, or clips the buffer if outside configured segment.
+*
+* Since 1.6, this clipping function also sets the DTS parameter of the
+* GstCollectData structure. This version of the running time DTS can be
+* negative. G_MININT64 is used to indicate invalid value.
 */
 GstFlowReturn
 gst_collect_pads_clip_running_time (GstCollectPads * pads,
@@ -515,13 +519,32 @@
       gst_buffer_unref (buf);
       *outbuf = NULL;
     } else {
-      GST_LOG_OBJECT (cdata->pad, "buffer ts %" GST_TIME_FORMAT " -> %"
+      GstClockTime buf_dts, abs_dts;
+      gint dts_sign;
+
+      GST_LOG_OBJECT (cdata->pad, "buffer pts %" GST_TIME_FORMAT " -> %"
           GST_TIME_FORMAT " running time",
           GST_TIME_ARGS (GST_BUFFER_PTS (buf)), GST_TIME_ARGS (time));
       *outbuf = gst_buffer_make_writable (buf);
       GST_BUFFER_PTS (*outbuf) = time;
-      GST_BUFFER_DTS (*outbuf) = gst_segment_to_running_time (&cdata->segment,
-          GST_FORMAT_TIME, GST_BUFFER_DTS (*outbuf));
+
+      dts_sign = gst_segment_to_running_time_full (&cdata->segment,
+          GST_FORMAT_TIME, GST_BUFFER_DTS (*outbuf), &abs_dts);
+      buf_dts = GST_BUFFER_DTS (*outbuf);
+      if (dts_sign > 0) {
+        GST_BUFFER_DTS (*outbuf) = abs_dts;
+        GST_COLLECT_PADS_DTS (cdata) = abs_dts;
+      } else if (dts_sign < 0) {
+        GST_BUFFER_DTS (*outbuf) = GST_CLOCK_TIME_NONE;
+        GST_COLLECT_PADS_DTS (cdata) = -((gint64) abs_dts);
+      } else {
+        GST_BUFFER_DTS (*outbuf) = GST_CLOCK_TIME_NONE;
+        GST_COLLECT_PADS_DTS (cdata) = GST_CLOCK_STIME_NONE;
+      }
+
+      GST_LOG_OBJECT (cdata->pad, "buffer dts %" GST_TIME_FORMAT " -> %"
+          GST_STIME_FORMAT " running time", GST_TIME_ARGS (buf_dts),
+          GST_STIME_ARGS (GST_COLLECT_PADS_DTS (cdata)));
     }
   }
 
@@ -531,7 +554,7 @@
 /**
  * gst_collect_pads_set_clip_function:
  * @pads: the collectpads to use
- * @clipfunc: clip function to install
+ * @clipfunc: (scope call): clip function to install
  * @user_data: user data to pass to @clip_func
  *
  * Install a clipping function that is called right after a buffer is received
@@ -551,7 +574,7 @@
 /**
  * gst_collect_pads_set_flush_function:
  * @pads: the collectpads to use
- * @func: flush function to install
+ * @func: (scope call): flush function to install
  * @user_data: user data to pass to @func
  *
  * Install a flush function that is called when the internal
@@ -634,6 +657,7 @@
   data->state |= lock ? GST_COLLECT_PADS_STATE_LOCKED : 0;
   data->priv->refcount = 1;
   data->priv->destroy_notify = destroy_notify;
+  data->ABI.abi.dts = G_MININT64;
 
   GST_OBJECT_LOCK (pads);
   GST_OBJECT_LOCK (pad);
@@ -939,7 +963,7 @@
   if ((result = data->buffer))
     gst_buffer_ref (result);
 
-  GST_DEBUG_OBJECT (pads, "Peeking at pad %s:%s: buffer=%p",
+  GST_DEBUG_OBJECT (pads, "Peeking at pad %s:%s: buffer=%" GST_PTR_FORMAT,
       GST_DEBUG_PAD_NAME (data->pad), result);
 
   return result;
@@ -978,7 +1002,7 @@
 
   GST_COLLECT_PADS_EVT_BROADCAST (pads);
 
-  GST_DEBUG_OBJECT (pads, "Pop buffer on pad %s:%s: buffer=%p",
+  GST_DEBUG_OBJECT (pads, "Pop buffer on pad %s:%s: buffer=%" GST_PTR_FORMAT,
       GST_DEBUG_PAD_NAME (data->pad), result);
 
   return result;
@@ -1131,7 +1155,7 @@
 gst_collect_pads_read_buffer (GstCollectPads * pads, GstCollectData * data,
     guint size)
 {
-  guint readsize;
+  guint readsize, buf_size;
   GstBuffer *buffer;
 
   g_return_val_if_fail (pads != NULL, NULL);
@@ -1142,7 +1166,8 @@
   if ((buffer = data->buffer) == NULL)
     return NULL;
 
-  readsize = MIN (size, gst_buffer_get_size (buffer) - data->pos);
+  buf_size = gst_buffer_get_size (buffer);
+  readsize = MIN (size, buf_size - data->pos);
 
   return gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, data->pos,
       readsize);
@@ -1315,7 +1340,7 @@
         pads->priv->numpads, GST_DEBUG_FUNCPTR_NAME (func));
 
     if (G_UNLIKELY (g_atomic_int_compare_and_exchange (&pads->priv->seeking,
-                TRUE, FALSE) == TRUE)) {
+                TRUE, FALSE))) {
       GST_INFO_OBJECT (pads, "finished seeking");
     }
     do {
@@ -1333,7 +1358,7 @@
           GST_DEBUG_FUNCPTR_NAME (func));
 
       if (G_UNLIKELY (g_atomic_int_compare_and_exchange (&pads->priv->seeking,
-                  TRUE, FALSE) == TRUE)) {
+                  TRUE, FALSE))) {
         GST_INFO_OBJECT (pads, "finished seeking");
       }
       flow_ret = func (pads, user_data);
@@ -1617,7 +1642,7 @@
   if (pads->priv->clip_func) {
     in = gst_buffer_new ();
     GST_BUFFER_PTS (in) = time;
-    GST_BUFFER_DTS (in) = time;
+    GST_BUFFER_DTS (in) = GST_CLOCK_TIME_NONE;
     pads->priv->clip_func (pads, data, in, &out, pads->priv->clip_user_data);
     if (out) {
       otime = GST_BUFFER_PTS (out);
@@ -1664,8 +1689,8 @@
     {
       if (g_atomic_int_get (&pads->priv->seeking)) {
         /* drop all but the first FLUSH_STARTs when seeking */
-        if (g_atomic_int_compare_and_exchange (&pads->priv->pending_flush_start,
-                TRUE, FALSE) == FALSE)
+        if (!g_atomic_int_compare_and_exchange (&pads->
+                priv->pending_flush_start, TRUE, FALSE))
           goto eat;
 
         /* unblock collect pads */
diff --git a/libs/gst/base/gstcollectpads.h b/libs/gst/base/gstcollectpads.h
index 9d56614..cfa29eb 100644
--- a/libs/gst/base/gstcollectpads.h
+++ b/libs/gst/base/gstcollectpads.h
@@ -104,12 +104,39 @@
 #define GST_COLLECT_PADS_STATE_UNSET(data,flag)      (GST_COLLECT_PADS_STATE (data) &= ~(flag))
 
 /**
+ * GST_COLLECT_PADS_DTS:
+ * @data: A #GstCollectData.
+ *
+ * Returns the DTS that has been converted to running time when using
+ * gst_collect_pads_clip_running_time(). Unlike the value saved into
+ * the buffer, this value is of type gint64 and may be negative. This allow
+ * properly handling streams with frame reordering where the first DTS may
+ * be negative. If the initial DTS was not set, this value will be
+ * set to %G_MININT64.
+ *
+ * Since: 1.6
+ */
+#define GST_COLLECT_PADS_DTS(data)                   (((GstCollectData *) data)->ABI.abi.dts)
+
+/**
+ * GST_COLLECT_PADS_DTS_IS_VALID:
+ * @data: A #GstCollectData.
+ *
+ * Check if running DTS value store is valid.
+ *
+ * Since: 1.6
+ */
+#define GST_COLLECT_PADS_DTS_IS_VALID(data)          (GST_CLOCK_STIME_IS_VALID (GST_COLLECT_PADS_DTS (data)))
+
+/**
  * GstCollectData:
  * @collect: owner #GstCollectPads
  * @pad: #GstPad managed by this data
  * @buffer: currently queued buffer.
  * @pos: position in the buffer
  * @segment: last segment received.
+ * @dts: the signed version of the DTS converted to running time. To access
+ *       this memeber, use %GST_COLLECT_PADS_DTS macro. (Since 1.6)
  *
  * Structure used by the collect_pads.
  */
@@ -129,7 +156,14 @@
 
   GstCollectDataPrivate *priv;
 
-  gpointer _gst_reserved[GST_PADDING];
+  union {
+    struct {
+      /*< public >*/
+      gint64 dts;
+      /*< private >*/
+    } abi;
+    gpointer _gst_reserved[GST_PADDING];
+  } ABI;
 };
 
 /**
@@ -363,7 +397,7 @@
 
 /* convenience helper */
 GstFlowReturn	gst_collect_pads_clip_running_time (GstCollectPads * pads,
-					            GstCollectData * cdata,
+                                                    GstCollectData * cdata,
                                                     GstBuffer * buf, GstBuffer ** outbuf,
                                                     gpointer user_data);
 
diff --git a/libs/gst/base/gstdataqueue.c b/libs/gst/base/gstdataqueue.c
index 6f61062..2f9c16a 100644
--- a/libs/gst/base/gstdataqueue.c
+++ b/libs/gst/base/gstdataqueue.c
@@ -217,9 +217,10 @@
  * @checkdata: a #gpointer that will be passed to the @checkfull, @fullcallback,
  *   and @emptycallback callbacks.
  *
- * Creates a new #GstDataQueue. The difference with @gst_data_queue_new is that it will
- * not emit the 'full' and 'empty' signals, but instead calling directly @fullcallback
- * or @emptycallback.
+ * Creates a new #GstDataQueue. If @fullcallback or @emptycallback are supplied, then
+ * the #GstDataQueue will call the respective callback to signal full or empty condition.
+ * If the callbacks are NULL the #GstDataQueue will instead emit 'full' and 'empty'
+ * signals.
  *
  * Returns: a new #GstDataQueue.
  *
diff --git a/libs/gst/base/gstflowcombiner.c b/libs/gst/base/gstflowcombiner.c
index e21f6c2..9dd5123 100644
--- a/libs/gst/base/gstflowcombiner.c
+++ b/libs/gst/base/gstflowcombiner.c
@@ -41,9 +41,7 @@
  * Please be aware that this struct isn't thread safe as its designed to be
  *  used by demuxers, those usually will have a single thread operating it.
  *
- * None of these functions will take refs on the passed #GstPad<!-- -->s, it
- * is the caller's responsibility to make sure that the #GstPad exists as long
- * as this struct exists.
+ * These functions will take refs on the passed #GstPad<!-- -->s.
  *
  * Aside from reducing the user's code size, the main advantage of using this
  * helper struct is to follow the standard rules for #GstFlowReturn combination.
@@ -140,6 +138,50 @@
   }
 }
 
+/**
+ * gst_flow_combiner_clear:
+ * @combiner: the #GstFlowCombiner to clear
+ *
+ * Removes all pads from a #GstFlowCombiner and resets it to its initial state.
+ *
+ * Since: 1.6
+ */
+void
+gst_flow_combiner_clear (GstFlowCombiner * combiner)
+{
+  GstPad *pad;
+
+  g_return_if_fail (combiner != NULL);
+
+  while ((pad = g_queue_pop_head (&combiner->pads)))
+    gst_object_unref (pad);
+  combiner->last_ret = GST_FLOW_OK;
+}
+
+/**
+ * gst_flow_combiner_reset:
+ * @combiner: the #GstFlowCombiner to clear
+ *
+ * Removes all pads from a #GstFlowCombiner and resets it to its initial state.
+ *
+ * Since: 1.6
+ */
+void
+gst_flow_combiner_reset (GstFlowCombiner * combiner)
+{
+  GList *iter;
+
+  g_return_if_fail (combiner != NULL);
+
+  GST_DEBUG ("Reset flow returns");
+
+  for (iter = combiner->pads.head; iter; iter = iter->next) {
+    GST_PAD_LAST_FLOW_RETURN (iter->data) = GST_FLOW_OK;
+  }
+
+  combiner->last_ret = GST_FLOW_OK;
+}
+
 static GstFlowReturn
 gst_flow_combiner_get_flow (GstFlowCombiner * combiner)
 {
@@ -182,7 +224,7 @@
  *
  * Computes the combined flow return for the pads in it.
  *
- * The #GstFlowReturn paramter should be the last flow return update for a pad
+ * The #GstFlowReturn parameter should be the last flow return update for a pad
  * in this #GstFlowCombiner. It will use this value to be able to shortcut some
  * combinations and avoid looking over all pads again. e.g. The last combined
  * return is the same as the latest obtained #GstFlowReturn.
@@ -211,6 +253,34 @@
 }
 
 /**
+ * gst_flow_combiner_update_pad_flow:
+ * @combiner: the #GstFlowCombiner
+ * @pad: the #GstPad whose #GstFlowReturn to update
+ * @fret: the latest #GstFlowReturn received for a pad in this #GstFlowCombiner
+ *
+ * Sets the provided pad's last flow return to provided value and computes
+ * the combined flow return for the pads in it.
+ *
+ * The #GstFlowReturn parameter should be the last flow return update for a pad
+ * in this #GstFlowCombiner. It will use this value to be able to shortcut some
+ * combinations and avoid looking over all pads again. e.g. The last combined
+ * return is the same as the latest obtained #GstFlowReturn.
+ *
+ * Returns: The combined #GstFlowReturn
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_flow_combiner_update_pad_flow (GstFlowCombiner * combiner, GstPad * pad,
+    GstFlowReturn fret)
+{
+  g_return_val_if_fail (pad != NULL, GST_FLOW_ERROR);
+
+  GST_PAD_LAST_FLOW_RETURN (pad) = fret;
+
+  return gst_flow_combiner_update_flow (combiner, fret);
+}
+
+/**
  * gst_flow_combiner_add_pad:
  * @combiner: the #GstFlowCombiner
  * @pad: (transfer none): the #GstPad that is being added
diff --git a/libs/gst/base/gstflowcombiner.h b/libs/gst/base/gstflowcombiner.h
index 43c37e3..79e4bed 100644
--- a/libs/gst/base/gstflowcombiner.h
+++ b/libs/gst/base/gstflowcombiner.h
@@ -47,10 +47,17 @@
 
 GstFlowReturn     gst_flow_combiner_update_flow (GstFlowCombiner * combiner, GstFlowReturn fret);
 
+GstFlowReturn     gst_flow_combiner_update_pad_flow (GstFlowCombiner * combiner, GstPad * pad,
+                                                     GstFlowReturn fret);
+
 void              gst_flow_combiner_add_pad    (GstFlowCombiner * combiner, GstPad * pad);
 
 void              gst_flow_combiner_remove_pad (GstFlowCombiner * combiner, GstPad * pad);
 
+void              gst_flow_combiner_clear (GstFlowCombiner * combiner);
+
+void              gst_flow_combiner_reset (GstFlowCombiner * combiner);
+
 GType             gst_flow_combiner_get_type (void);
 
 G_END_DECLS
diff --git a/libs/gst/base/gstindex.c b/libs/gst/base/gstindex.c
index 272f0e7..c75c2c7 100644
--- a/libs/gst/base/gstindex.c
+++ b/libs/gst/base/gstindex.c
@@ -20,7 +20,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/**
+/*
  * SECTION:gstindex
  * @short_description: Generate indexes on objects
  * @see_also: #GstIndexFactory
diff --git a/libs/gst/base/gstpushsrc.h b/libs/gst/base/gstpushsrc.h
index aabba00..768d4ba 100644
--- a/libs/gst/base/gstpushsrc.h
+++ b/libs/gst/base/gstpushsrc.h
@@ -51,6 +51,22 @@
   gpointer _gst_reserved[GST_PADDING];
 };
 
+/**
+ * GstPushSrcClass:
+ * @parent_class: Element parent class
+ * @create: Ask the subclass to create a buffer. The subclass decides which
+ *          size this buffer should be. Other then that, refer to
+ *          #GstBaseSrc<!-- -->.create() for more details. If this method is
+ *          not implemented, @alloc followed by @fill will be called.
+ * @alloc: Ask the subclass to allocated a buffer. The subclass decides which
+ *         size this buffer should be. The default implementation will create
+ *         a new buffer from the negotiate allcoator.
+ * @fill: Ask the subclass to fill the buffer with data.
+ *
+ * Subclasses can override any of the available virtual methods or not, as
+ * needed. At the minimum, the @fill method should be overridden to produce
+ * buffers.
+ */
 struct _GstPushSrcClass {
   GstBaseSrcClass parent_class;
 
diff --git a/libs/gst/base/gstqueuearray.c b/libs/gst/base/gstqueuearray.c
index 5ff03fd..3a64446 100644
--- a/libs/gst/base/gstqueuearray.c
+++ b/libs/gst/base/gstqueuearray.c
@@ -1,5 +1,6 @@
 /* GStreamer
  * Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
+ * Copyright (C) 2015 Tim-Philipp Müller <tim@centricular.com>
  *
  * gstqueuearray.c:
  *
@@ -36,14 +37,46 @@
 struct _GstQueueArray
 {
   /* < private > */
-  gpointer *array;
+  guint8 *array;
   guint size;
   guint head;
   guint tail;
   guint length;
+  guint elt_size;
+  gboolean struct_array;
 };
 
 /**
+ * gst_queue_array_new_for_struct: (skip)
+ * @struct_size: Size of each element (e.g. structure) in the array
+ * @initial_size: Initial size of the new queue
+ *
+ * Allocates a new #GstQueueArray object for elements (e.g. structures)
+ * of size @struct_size, with an initial queue size of @initial_size.
+ *
+ * Returns: a new #GstQueueArray object
+ *
+ * Since: 1.6
+ */
+GstQueueArray *
+gst_queue_array_new_for_struct (gsize struct_size, guint initial_size)
+{
+  GstQueueArray *array;
+
+  g_return_val_if_fail (struct_size > 0, NULL);
+
+  array = g_slice_new (GstQueueArray);
+  array->elt_size = struct_size;
+  array->size = initial_size;
+  array->array = g_malloc0 (struct_size * initial_size);
+  array->head = 0;
+  array->tail = 0;
+  array->length = 0;
+  array->struct_array = TRUE;
+  return array;
+}
+
+/**
  * gst_queue_array_new: (skip)
  * @initial_size: Initial size of the new queue
  *
@@ -59,16 +92,11 @@
 {
   GstQueueArray *array;
 
-  array = g_slice_new (GstQueueArray);
-  array->size = initial_size;
-  array->array = g_new0 (gpointer, initial_size);
-  array->head = 0;
-  array->tail = 0;
-  array->length = 0;
+  array = gst_queue_array_new_for_struct (sizeof (gpointer), initial_size);
+  array->struct_array = FALSE;
   return array;
 }
 
-
 /**
  * gst_queue_array_free: (skip)
  * @array: a #GstQueueArray object
@@ -85,6 +113,36 @@
 }
 
 /**
+ * gst_queue_array_pop_head_struct: (skip)
+ * @array: a #GstQueueArray object
+ *
+ * Returns the head of the queue @array and removes it from the queue.
+ *
+ * Returns: pointer to element or struct, or NULL if @array was empty. The
+ *    data pointed to by the returned pointer stays valid only as long as
+ *    the queue array is not modified further!
+ *
+ * Since: 1.6
+ */
+gpointer
+gst_queue_array_pop_head_struct (GstQueueArray * array)
+{
+  gpointer p_struct;
+
+  /* empty array */
+  if (G_UNLIKELY (array->length == 0))
+    return NULL;
+
+  p_struct = array->array + (array->elt_size * array->head);
+
+  array->head++;
+  array->head %= array->size;
+  array->length--;
+
+  return p_struct;
+}
+
+/**
  * gst_queue_array_pop_head: (skip)
  * @array: a #GstQueueArray object
  *
@@ -103,7 +161,8 @@
   /* empty array */
   if (G_UNLIKELY (array->length == 0))
     return NULL;
-  ret = array->array[array->head];
+
+  ret = *(gpointer *) (array->array + (sizeof (gpointer) * array->head));
   array->head++;
   array->head %= array->size;
   array->length--;
@@ -111,10 +170,32 @@
 }
 
 /**
+ * gst_queue_array_peek_head_struct: (skip)
+ * @array: a #GstQueueArray object
+ *
+ * Returns the head of the queue @array without removing it from the queue.
+ *
+ * Returns: pointer to element or struct, or NULL if @array was empty. The
+ *    data pointed to by the returned pointer stays valid only as long as
+ *    the queue array is not modified further!
+ *
+ * Since: 1.6
+ */
+gpointer
+gst_queue_array_peek_head_struct (GstQueueArray * array)
+{
+  /* empty array */
+  if (G_UNLIKELY (array->length == 0))
+    return NULL;
+
+  return array->array + (array->elt_size * array->head);
+}
+
+/**
  * gst_queue_array_peek_head: (skip)
  * @array: a #GstQueueArray object
  *
- * Returns and head of the queue @array and does not
+ * Returns the head of the queue @array and does not
  * remove it from the queue.
  *
  * Returns: The head of the queue
@@ -127,7 +208,77 @@
   /* empty array */
   if (G_UNLIKELY (array->length == 0))
     return NULL;
-  return array->array[array->head];
+
+  return *(gpointer *) (array->array + (sizeof (gpointer) * array->head));
+}
+
+static void
+gst_queue_array_do_expand (GstQueueArray * array)
+{
+  guint elt_size = array->elt_size;
+  /* newsize is 50% bigger */
+  guint oldsize = array->size;
+  guint newsize = MAX ((3 * oldsize) / 2, oldsize + 1);
+
+  /* copy over data */
+  if (array->tail != 0) {
+    guint8 *array2 = g_malloc0 (elt_size * newsize);
+    guint t1 = array->head;
+    guint t2 = oldsize - array->head;
+
+    /* [0-----TAIL][HEAD------SIZE]
+     *
+     * We want to end up with
+     * [HEAD------------------TAIL][----FREEDATA------NEWSIZE]
+     *
+     * 1) move [HEAD-----SIZE] part to beginning of new array
+     * 2) move [0-------TAIL] part new array, after previous part
+     */
+
+    memcpy (array2, array->array + (elt_size * array->head), t2 * elt_size);
+    memcpy (array2 + t2 * elt_size, array->array, t1 * elt_size);
+
+    g_free (array->array);
+    array->array = array2;
+    array->head = 0;
+  } else {
+    /* Fast path, we just need to grow the array */
+    array->array = g_realloc (array->array, elt_size * newsize);
+    memset (array->array + elt_size * oldsize, 0,
+        elt_size * (newsize - oldsize));
+  }
+  array->tail = oldsize;
+  array->size = newsize;
+}
+
+/**
+ * gst_queue_array_push_element_tail: (skip)
+ * @array: a #GstQueueArray object
+ * @p_struct: address of element or structure to push to the tail of the queue
+ *
+ * Pushes the element at address @p_struct to the tail of the queue @array
+ * (Copies the contents of a structure of the struct_size specified when
+ * creating the queue into the array).
+ *
+ * Since: 1.6
+ */
+void
+gst_queue_array_push_tail_struct (GstQueueArray * array, gpointer p_struct)
+{
+  guint elt_size;
+
+  g_return_if_fail (p_struct != NULL);
+
+  elt_size = array->elt_size;
+
+  /* Check if we need to make room */
+  if (G_UNLIKELY (array->length == array->size))
+    gst_queue_array_do_expand (array);
+
+  memcpy (array->array + elt_size * array->tail, p_struct, elt_size);
+  array->tail++;
+  array->tail %= array->size;
+  array->length++;
 }
 
 /**
@@ -143,40 +294,10 @@
 gst_queue_array_push_tail (GstQueueArray * array, gpointer data)
 {
   /* Check if we need to make room */
-  if (G_UNLIKELY (array->length == array->size)) {
-    /* newsize is 50% bigger */
-    guint newsize = MAX ((3 * array->size) / 2, array->size + 1);
+  if (G_UNLIKELY (array->length == array->size))
+    gst_queue_array_do_expand (array);
 
-    /* copy over data */
-    if (array->tail != 0) {
-      gpointer *array2 = g_new0 (gpointer, newsize);
-      guint t1 = array->head;
-      guint t2 = array->size - array->head;
-
-      /* [0-----TAIL][HEAD------SIZE]
-       *
-       * We want to end up with
-       * [HEAD------------------TAIL][----FREEDATA------NEWSIZE]
-       *
-       * 1) move [HEAD-----SIZE] part to beginning of new array
-       * 2) move [0-------TAIL] part new array, after previous part
-       */
-
-      memcpy (array2, &array->array[array->head], t2 * sizeof (gpointer));
-      memcpy (&array2[t2], array->array, t1 * sizeof (gpointer));
-
-      g_free (array->array);
-      array->array = array2;
-      array->head = 0;
-    } else {
-      /* Fast path, we just need to grow the array */
-      array->array = g_renew (gpointer, array->array, newsize);
-    }
-    array->tail = array->size;
-    array->size = newsize;
-  }
-
-  array->array[array->tail] = data;
+  *(gpointer *) (array->array + sizeof (gpointer) * array->tail) = data;
   array->tail++;
   array->tail %= array->size;
   array->length++;
@@ -198,6 +319,101 @@
   return (array->length == 0);
 }
 
+
+/**
+ * gst_queue_array_drop_struct: (skip)
+ * @array: a #GstQueueArray object
+ * @idx: index to drop
+ * @p_struct: address into which to store the data of the dropped structure, or NULL
+ *
+ * Drops the queue element at position @idx from queue @array and copies the
+ * data of the element or structure that was removed into @p_struct if
+ * @p_struct is set (not NULL).
+ *
+ * Returns: TRUE on success, or FALSE on error
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_queue_array_drop_struct (GstQueueArray * array, guint idx,
+    gpointer p_struct)
+{
+  int first_item_index, last_item_index;
+  guint elt_size;
+
+  g_return_val_if_fail (array->length > 0, FALSE);
+  g_return_val_if_fail (idx < array->size, FALSE);
+
+  elt_size = array->elt_size;
+
+  first_item_index = array->head;
+
+  /* tail points to the first free spot */
+  last_item_index = (array->tail - 1 + array->size) % array->size;
+
+  if (p_struct != NULL)
+    memcpy (p_struct, array->array + elt_size * idx, elt_size);
+
+  /* simple case idx == first item */
+  if (idx == first_item_index) {
+    /* move the head plus one */
+    array->head++;
+    array->head %= array->size;
+    array->length--;
+    return TRUE;
+  }
+
+  /* simple case idx == last item */
+  if (idx == last_item_index) {
+    /* move tail minus one, potentially wrapping */
+    array->tail = (array->tail - 1 + array->size) % array->size;
+    array->length--;
+    return TRUE;
+  }
+
+  /* non-wrapped case */
+  if (first_item_index < last_item_index) {
+    g_assert (first_item_index < idx && idx < last_item_index);
+    /* move everything beyond idx one step towards zero in array */
+    memmove (array->array + elt_size * idx,
+        array->array + elt_size * (idx + 1),
+        (last_item_index - idx) * elt_size);
+    /* tail might wrap, ie if tail == 0 (and last_item_index == size) */
+    array->tail = (array->tail - 1 + array->size) % array->size;
+    array->length--;
+    return TRUE;
+  }
+
+  /* only wrapped cases left */
+  g_assert (first_item_index > last_item_index);
+
+  if (idx < last_item_index) {
+    /* idx is before last_item_index, move data towards zero */
+    memmove (array->array + elt_size * idx,
+        array->array + elt_size * (idx + 1),
+        (last_item_index - idx) * elt_size);
+    /* tail should not wrap in this case! */
+    g_assert (array->tail > 0);
+    array->tail--;
+    array->length--;
+    return TRUE;
+  }
+
+  if (idx > first_item_index) {
+    /* idx is after first_item_index, move data to higher indices */
+    memmove (array->array + elt_size * (first_item_index + 1),
+        array->array + elt_size * first_item_index,
+        (idx - first_item_index) * elt_size);
+    array->head++;
+    /* head should not wrap in this case! */
+    g_assert (array->head < array->size);
+    array->length--;
+    return TRUE;
+  }
+
+  g_return_val_if_reached (FALSE);
+}
+
 /**
  * gst_queue_array_drop_element: (skip)
  * @array: a #GstQueueArray object
@@ -212,76 +428,12 @@
 gpointer
 gst_queue_array_drop_element (GstQueueArray * array, guint idx)
 {
-  int first_item_index, last_item_index;
-  gpointer element;
+  gpointer ptr;
 
-  g_return_val_if_fail (array->length > 0, NULL);
-  g_return_val_if_fail (idx < array->size, NULL);
+  if (!gst_queue_array_drop_struct (array, idx, &ptr))
+    return NULL;
 
-  first_item_index = array->head;
-
-  /* tail points to the first free spot */
-  last_item_index = (array->tail - 1 + array->size) % array->size;
-
-  element = array->array[idx];
-
-  /* simple case idx == first item */
-  if (idx == first_item_index) {
-    /* move the head plus one */
-    array->head++;
-    array->head %= array->size;
-    array->length--;
-    return element;
-  }
-
-  /* simple case idx == last item */
-  if (idx == last_item_index) {
-    /* move tail minus one, potentially wrapping */
-    array->tail = (array->tail - 1 + array->size) % array->size;
-    array->length--;
-    return element;
-  }
-
-  /* non-wrapped case */
-  if (first_item_index < last_item_index) {
-    g_assert (first_item_index < idx && idx < last_item_index);
-    /* move everything beyond idx one step towards zero in array */
-    memmove (&array->array[idx],
-        &array->array[idx + 1], (last_item_index - idx) * sizeof (gpointer));
-    /* tail might wrap, ie if tail == 0 (and last_item_index == size) */
-    array->tail = (array->tail - 1 + array->size) % array->size;
-    array->length--;
-    return element;
-  }
-
-  /* only wrapped cases left */
-  g_assert (first_item_index > last_item_index);
-
-  if (idx < last_item_index) {
-    /* idx is before last_item_index, move data towards zero */
-    memmove (&array->array[idx],
-        &array->array[idx + 1], (last_item_index - idx) * sizeof (gpointer));
-    /* tail should not wrap in this case! */
-    g_assert (array->tail > 0);
-    array->tail--;
-    array->length--;
-    return element;
-  }
-
-  if (idx > first_item_index) {
-    element = array->array[idx];
-    /* idx is after first_item_index, move data to higher indices */
-    memmove (&array->array[first_item_index + 1],
-        &array->array[first_item_index],
-        (idx - first_item_index) * sizeof (gpointer));
-    array->head++;
-    /* head should not wrap in this case! */
-    g_assert (array->head < array->size);
-    array->length--;
-    return element;
-  }
-
-  g_return_val_if_reached (NULL);
+  return ptr;
 }
 
 /**
@@ -306,17 +458,28 @@
 guint
 gst_queue_array_find (GstQueueArray * array, GCompareFunc func, gpointer data)
 {
+  gpointer p_element;
+  guint elt_size;
   guint i;
 
+  /* For struct arrays we need to implement this differently so that
+   * the user gets a pointer to the element data not the dereferenced
+   * pointer itself */
+  g_return_val_if_fail (array->struct_array == FALSE, -1);
+
+  elt_size = array->elt_size;
+
   if (func != NULL) {
     /* Scan from head to tail */
     for (i = 0; i < array->length; i++) {
-      if (func (array->array[(i + array->head) % array->size], data) == 0)
+      p_element = array->array + ((i + array->head) % array->size) * elt_size;
+      if (func (*(gpointer *) p_element, data) == 0)
         return (i + array->head) % array->size;
     }
   } else {
     for (i = 0; i < array->length; i++) {
-      if (array->array[(i + array->head) % array->size] == data)
+      p_element = array->array + ((i + array->head) % array->size) * elt_size;
+      if (*(gpointer *) p_element == data)
         return (i + array->head) % array->size;
     }
   }
diff --git a/libs/gst/base/gstqueuearray.h b/libs/gst/base/gstqueuearray.h
index bfe89e7..7c94462 100644
--- a/libs/gst/base/gstqueuearray.h
+++ b/libs/gst/base/gstqueuearray.h
@@ -50,4 +50,20 @@
 
 guint           gst_queue_array_get_length (GstQueueArray * array);
 
+/* Functions for use with structures */
+
+GstQueueArray * gst_queue_array_new_for_struct (gsize struct_size,
+                                                guint initial_size);
+
+void            gst_queue_array_push_tail_struct (GstQueueArray * array,
+                                                  gpointer        p_struct);
+
+gpointer        gst_queue_array_pop_head_struct  (GstQueueArray * array);
+
+gpointer        gst_queue_array_peek_head_struct (GstQueueArray * array);
+
+gboolean        gst_queue_array_drop_struct      (GstQueueArray * array,
+                                                  guint           idx,
+                                                  gpointer        p_struct);
+
 #endif
diff --git a/libs/gst/check/Makefile.am b/libs/gst/check/Makefile.am
index 1389270..1791c83 100644
--- a/libs/gst/check/Makefile.am
+++ b/libs/gst/check/Makefile.am
@@ -2,19 +2,18 @@
 
 SYMBOLS_FILE = exports.sym
 
-BUILT_SOURCES = internal-check.h
-
 libgstcheck_@GST_API_VERSION@_la_DEPENDENCIES = \
 	$(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la \
-	internal-check.h \
 	$(SYMBOLS_FILE)
 libgstcheck_@GST_API_VERSION@_la_SOURCES =	\
 	gstbufferstraw.c			\
 	gstcheck.c				\
 	gstconsistencychecker.c			\
+	gstharness.c				\
 	gsttestclock.c
 
 libgstcheck_@GST_API_VERSION@_la_CFLAGS = $(GST_OBJ_CFLAGS) \
+	-UG_DISABLE_ASSERT \
 	-I$(top_builddir)/libs \
 	-I$(top_builddir)/libs/gst/check \
 	-I$(top_builddir)/libs/gst/check/libcheck
@@ -32,15 +31,13 @@
 	gstbufferstraw.h			\
 	gstcheck.h				\
 	gstconsistencychecker.h			\
+	gstharness.h				\
 	gsttestclock.h
 
 nodist_libgstcheck_@GST_API_VERSION@include_HEADERS =	\
-	internal-check.h	
+	internal-check.h
 
-CLEANFILES = *.gcno *.gcda *.gcov internal-check.h $(SYMBOLS_FILE)
-
-internal-check.h: $(top_builddir)/libs/gst/check/libcheck/check.h
-	$(AM_V_GEN)cp $(top_builddir)/libs/gst/check/libcheck/check.h internal-check.h
+CLEANFILES = *.gcno *.gcda *.gcov $(SYMBOLS_FILE)
 
 %.c.gcov: .libs/libgstcheck_@GST_API_VERSION@_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
@@ -93,10 +90,84 @@
 	gst_check_teardown_pad_by_name \
 	gst_check_teardown_sink_pad \
 	gst_check_teardown_src_pad \
+	gst_check_objects_destroyed_on_unref \
+	gst_check_object_destroyed_on_unref \
 	gst_consistency_checker_add_pad \
 	gst_consistency_checker_new \
 	gst_consistency_checker_reset \
 	gst_consistency_checker_free \
+	gst_harness_add_element_src_pad \
+	gst_harness_add_probe \
+	gst_harness_add_sink \
+	gst_harness_add_sink_harness \
+	gst_harness_add_sink_parse \
+	gst_harness_add_src \
+	gst_harness_add_src_harness \
+	gst_harness_add_src_parse \
+	gst_harness_buffers_received \
+	gst_harness_buffers_in_queue \
+	gst_harness_crank_multiple_clock_waits \
+	gst_harness_crank_single_clock_wait \
+	gst_harness_create_buffer \
+	gst_harness_dump_to_file \
+	gst_harness_events_received \
+	gst_harness_events_in_queue \
+	gst_harness_find_element \
+	gst_harness_get \
+	gst_harness_get_allocator \
+	gst_harness_get_last_pushed_timestamp \
+	gst_harness_get_testclock \
+	gst_harness_new \
+	gst_harness_new_full \
+	gst_harness_new_parse \
+	gst_harness_new_with_element \
+	gst_harness_new_with_padnames \
+	gst_harness_new_with_templates \
+	gst_harness_play \
+	gst_harness_pull \
+	gst_harness_pull_event \
+	gst_harness_pull_upstream_event \
+	gst_harness_push \
+	gst_harness_push_and_pull \
+	gst_harness_push_event \
+	gst_harness_push_from_src \
+	gst_harness_push_to_sink \
+	gst_harness_query_latency \
+	gst_harness_push_upstream_event \
+	gst_harness_set \
+	gst_harness_set_caps \
+	gst_harness_set_caps_str \
+	gst_harness_set_drop_buffers \
+	gst_harness_set_blocking_push_mode \
+	gst_harness_set_forwarding \
+	gst_harness_set_propose_allocator \
+	gst_harness_set_sink_caps \
+	gst_harness_set_src_caps \
+	gst_harness_set_src_caps_str \
+	gst_harness_set_sink_caps_str \
+	gst_harness_set_time \
+	gst_harness_set_upstream_latency \
+	gst_harness_sink_push_many \
+	gst_harness_src_crank_and_push_many \
+	gst_harness_src_push_event \
+	gst_harness_stress_custom_start \
+	gst_harness_stress_property_start_full \
+	gst_harness_stress_push_buffer_start_full \
+	gst_harness_stress_push_buffer_with_cb_start_full \
+	gst_harness_stress_push_event_start_full \
+	gst_harness_stress_push_upstream_event_start_full \
+	gst_harness_stress_requestpad_start_full \
+	gst_harness_stress_statechange_start_full \
+	gst_harness_stress_thread_stop \
+	gst_harness_teardown \
+	gst_harness_try_pull \
+	gst_harness_try_pull_event \
+	gst_harness_try_pull_upstream_event \
+	gst_harness_upstream_events_received \
+	gst_harness_upstream_events_in_queue \
+	gst_harness_use_systemclock \
+	gst_harness_use_testclock \
+	gst_harness_wait_for_clock_id_waits \
 	gst_test_clock_get_type \
 	gst_test_clock_new \
 	gst_test_clock_new_with_start_time \
@@ -113,10 +184,14 @@
 	gst_test_clock_process_id_list \
 	gst_test_clock_id_list_get_latest_time
 
+# For backwards compatibility with GStreamer < 1.5
+LIBGSTCHECK_EXPORTED_COMPAT_FUNCS = \
+	_fail_unless
 
 LIBGSTCHECK_EXPORTED_SYMBOLS = \
 	$(LIBGSTCHECK_EXPORTED_VARS) \
-	$(LIBGSTCHECK_EXPORTED_FUNCS)
+	$(LIBGSTCHECK_EXPORTED_FUNCS) \
+	$(LIBGSTCHECK_EXPORTED_COMPAT_FUNCS)
 
 # Please do not even think about changing the alphabet below into A-Za-z.
 # It is there for purpose. (Bug #602093)
@@ -126,7 +201,7 @@
 	  echo $$s; \
 	done;
 
-$(SYMBOLS_FILE): $(libgstcheck_@GST_API_VERSION@include_HEADERS) libcheck/check.h
+$(SYMBOLS_FILE): $(libgstcheck_@GST_API_VERSION@include_HEADERS) internal-check.h
 	$(AM_V_GEN)rm -f $(SYMBOLS_FILE) 2>/dev/null; \
 	for s in $(LIBGSTCHECK_EXPORTED_SYMBOLS) $(CHECK_SYMS); do \
 	  echo $$s >> $(SYMBOLS_FILE); \
@@ -139,7 +214,7 @@
 gir_sources=$(patsubst %,$(srcdir)/%, $(libgstcheck_@GST_API_VERSION@_la_SOURCES))
 
 GstCheck-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstcheck-@GST_API_VERSION@.la
-	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 		$(INTROSPECTION_SCANNER) -v --namespace GstCheck \
 		--nsversion=@GST_API_VERSION@ \
@@ -157,7 +232,7 @@
 		--libtool="${LIBTOOL}" \
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg-export gstreamer-check-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		--output $@ \
 		$(gir_headers) \
 		$(gir_sources)
diff --git a/libs/gst/check/Makefile.in b/libs/gst/check/Makefile.in
index 9f470d4..2de7b42 100644
--- a/libs/gst/check/Makefile.in
+++ b/libs/gst/check/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,9 +93,6 @@
 target_triplet = @target@
 @HAVE_INTROSPECTION_TRUE@am__append_1 = $(BUILT_GIRSOURCES) $(typelibs_DATA)
 subdir = libs/gst/check
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp \
-	$(libgstcheck_@GST_API_VERSION@include_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -94,6 +101,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -111,7 +119,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -124,9 +132,12 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstcheck_@GST_API_VERSION@include_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = internal-check.h
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -165,6 +176,7 @@
 	libgstcheck_@GST_API_VERSION@_la-gstbufferstraw.lo \
 	libgstcheck_@GST_API_VERSION@_la-gstcheck.lo \
 	libgstcheck_@GST_API_VERSION@_la-gstconsistencychecker.lo \
+	libgstcheck_@GST_API_VERSION@_la-gstharness.lo \
 	libgstcheck_@GST_API_VERSION@_la-gsttestclock.lo
 libgstcheck_@GST_API_VERSION@_la_OBJECTS =  \
 	$(am_libgstcheck_@GST_API_VERSION@_la_OBJECTS)
@@ -256,6 +268,8 @@
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+	$(top_srcdir)/libs/gst/check/libcheck/check.h.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -292,7 +306,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -383,6 +402,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -394,9 +414,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -418,6 +440,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -479,8 +502,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -546,6 +571,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -560,19 +586,19 @@
 top_srcdir = @top_srcdir@
 lib_LTLIBRARIES = libgstcheck-@GST_API_VERSION@.la
 SYMBOLS_FILE = exports.sym
-BUILT_SOURCES = internal-check.h
 libgstcheck_@GST_API_VERSION@_la_DEPENDENCIES = \
 	$(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la \
-	internal-check.h \
 	$(SYMBOLS_FILE)
 
 libgstcheck_@GST_API_VERSION@_la_SOURCES = \
 	gstbufferstraw.c			\
 	gstcheck.c				\
 	gstconsistencychecker.c			\
+	gstharness.c				\
 	gsttestclock.c
 
 libgstcheck_@GST_API_VERSION@_la_CFLAGS = $(GST_OBJ_CFLAGS) \
+	-UG_DISABLE_ASSERT \
 	-I$(top_builddir)/libs \
 	-I$(top_builddir)/libs/gst/check \
 	-I$(top_builddir)/libs/gst/check/libcheck
@@ -592,13 +618,13 @@
 	gstbufferstraw.h			\
 	gstcheck.h				\
 	gstconsistencychecker.h			\
+	gstharness.h				\
 	gsttestclock.h
 
 nodist_libgstcheck_@GST_API_VERSION@include_HEADERS = \
-	internal-check.h	
+	internal-check.h
 
-CLEANFILES = *.gcno *.gcda *.gcov internal-check.h $(SYMBOLS_FILE) \
-	$(am__append_1)
+CLEANFILES = *.gcno *.gcda *.gcov $(SYMBOLS_FILE) $(am__append_1)
 SUBDIRS = libcheck
 LIBGSTCHECK_EXPORTED_VARS = \
 	_gst_check_threads_running \
@@ -644,10 +670,84 @@
 	gst_check_teardown_pad_by_name \
 	gst_check_teardown_sink_pad \
 	gst_check_teardown_src_pad \
+	gst_check_objects_destroyed_on_unref \
+	gst_check_object_destroyed_on_unref \
 	gst_consistency_checker_add_pad \
 	gst_consistency_checker_new \
 	gst_consistency_checker_reset \
 	gst_consistency_checker_free \
+	gst_harness_add_element_src_pad \
+	gst_harness_add_probe \
+	gst_harness_add_sink \
+	gst_harness_add_sink_harness \
+	gst_harness_add_sink_parse \
+	gst_harness_add_src \
+	gst_harness_add_src_harness \
+	gst_harness_add_src_parse \
+	gst_harness_buffers_received \
+	gst_harness_buffers_in_queue \
+	gst_harness_crank_multiple_clock_waits \
+	gst_harness_crank_single_clock_wait \
+	gst_harness_create_buffer \
+	gst_harness_dump_to_file \
+	gst_harness_events_received \
+	gst_harness_events_in_queue \
+	gst_harness_find_element \
+	gst_harness_get \
+	gst_harness_get_allocator \
+	gst_harness_get_last_pushed_timestamp \
+	gst_harness_get_testclock \
+	gst_harness_new \
+	gst_harness_new_full \
+	gst_harness_new_parse \
+	gst_harness_new_with_element \
+	gst_harness_new_with_padnames \
+	gst_harness_new_with_templates \
+	gst_harness_play \
+	gst_harness_pull \
+	gst_harness_pull_event \
+	gst_harness_pull_upstream_event \
+	gst_harness_push \
+	gst_harness_push_and_pull \
+	gst_harness_push_event \
+	gst_harness_push_from_src \
+	gst_harness_push_to_sink \
+	gst_harness_query_latency \
+	gst_harness_push_upstream_event \
+	gst_harness_set \
+	gst_harness_set_caps \
+	gst_harness_set_caps_str \
+	gst_harness_set_drop_buffers \
+	gst_harness_set_blocking_push_mode \
+	gst_harness_set_forwarding \
+	gst_harness_set_propose_allocator \
+	gst_harness_set_sink_caps \
+	gst_harness_set_src_caps \
+	gst_harness_set_src_caps_str \
+	gst_harness_set_sink_caps_str \
+	gst_harness_set_time \
+	gst_harness_set_upstream_latency \
+	gst_harness_sink_push_many \
+	gst_harness_src_crank_and_push_many \
+	gst_harness_src_push_event \
+	gst_harness_stress_custom_start \
+	gst_harness_stress_property_start_full \
+	gst_harness_stress_push_buffer_start_full \
+	gst_harness_stress_push_buffer_with_cb_start_full \
+	gst_harness_stress_push_event_start_full \
+	gst_harness_stress_push_upstream_event_start_full \
+	gst_harness_stress_requestpad_start_full \
+	gst_harness_stress_statechange_start_full \
+	gst_harness_stress_thread_stop \
+	gst_harness_teardown \
+	gst_harness_try_pull \
+	gst_harness_try_pull_event \
+	gst_harness_try_pull_upstream_event \
+	gst_harness_upstream_events_received \
+	gst_harness_upstream_events_in_queue \
+	gst_harness_use_systemclock \
+	gst_harness_use_testclock \
+	gst_harness_wait_for_clock_id_waits \
 	gst_test_clock_get_type \
 	gst_test_clock_new \
 	gst_test_clock_new_with_start_time \
@@ -664,9 +764,15 @@
 	gst_test_clock_process_id_list \
 	gst_test_clock_id_list_get_latest_time
 
+
+# For backwards compatibility with GStreamer < 1.5
+LIBGSTCHECK_EXPORTED_COMPAT_FUNCS = \
+	_fail_unless
+
 LIBGSTCHECK_EXPORTED_SYMBOLS = \
 	$(LIBGSTCHECK_EXPORTED_VARS) \
-	$(LIBGSTCHECK_EXPORTED_FUNCS)
+	$(LIBGSTCHECK_EXPORTED_FUNCS) \
+	$(LIBGSTCHECK_EXPORTED_COMPAT_FUNCS)
 
 
 # Please do not even think about changing the alphabet below into A-Za-z.
@@ -682,8 +788,7 @@
 @HAVE_INTROSPECTION_TRUE@gir_DATA = $(BUILT_GIRSOURCES)
 @HAVE_INTROSPECTION_TRUE@typelibsdir = $(libdir)/girepository-1.0/
 @HAVE_INTROSPECTION_TRUE@typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
-all: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+all: all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
@@ -699,7 +804,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/check/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/check/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -717,6 +821,8 @@
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+internal-check.h: $(top_builddir)/config.status $(top_srcdir)/libs/gst/check/libcheck/check.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
@@ -765,6 +871,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstbufferstraw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstcheck.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstconsistencychecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstharness.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gsttestclock.Plo@am__quote@
 
 .c.o:
@@ -812,6 +919,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcheck_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcheck_@GST_API_VERSION@_la-gstconsistencychecker.lo `test -f 'gstconsistencychecker.c' || echo '$(srcdir)/'`gstconsistencychecker.c
 
+libgstcheck_@GST_API_VERSION@_la-gstharness.lo: gstharness.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) $(libgstcheck_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcheck_@GST_API_VERSION@_la-gstharness.lo -MD -MP -MF $(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstharness.Tpo -c -o libgstcheck_@GST_API_VERSION@_la-gstharness.lo `test -f 'gstharness.c' || echo '$(srcdir)/'`gstharness.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstharness.Tpo $(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gstharness.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstharness.c' object='libgstcheck_@GST_API_VERSION@_la-gstharness.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) $(libgstcheck_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcheck_@GST_API_VERSION@_la-gstharness.lo `test -f 'gstharness.c' || echo '$(srcdir)/'`gstharness.c
+
 libgstcheck_@GST_API_VERSION@_la-gsttestclock.lo: gsttestclock.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) $(libgstcheck_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcheck_@GST_API_VERSION@_la-gsttestclock.lo -MD -MP -MF $(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gsttestclock.Tpo -c -o libgstcheck_@GST_API_VERSION@_la-gsttestclock.lo `test -f 'gsttestclock.c' || echo '$(srcdir)/'`gsttestclock.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gsttestclock.Tpo $(DEPDIR)/libgstcheck_@GST_API_VERSION@_la-gsttestclock.Plo
@@ -1064,16 +1178,14 @@
 	  fi; \
 	done
 check-am: all-am
-check: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) check-recursive
+check: check-recursive
 all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
 installdirs: installdirs-recursive
 installdirs-am:
 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libgstcheck_@GST_API_VERSION@includedir)" "$(DESTDIR)$(libgstcheck_@GST_API_VERSION@includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) install-recursive
+install: install-recursive
 install-exec: install-exec-recursive
 install-data: install-data-recursive
 uninstall: uninstall-recursive
@@ -1104,7 +1216,6 @@
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 clean: clean-recursive
 
 clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
@@ -1182,8 +1293,7 @@
 	uninstall-nodist_libgstcheck_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
-.MAKE: $(am__recursive_targets) all check install install-am \
-	install-strip
+.MAKE: $(am__recursive_targets) install-am install-strip
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
 	check-am clean clean-generic clean-libLTLIBRARIES \
@@ -1208,9 +1318,8 @@
 	uninstall-nodist_libgstcheck_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
 
-internal-check.h: $(top_builddir)/libs/gst/check/libcheck/check.h
-	$(AM_V_GEN)cp $(top_builddir)/libs/gst/check/libcheck/check.h internal-check.h
 
 %.c.gcov: .libs/libgstcheck_@GST_API_VERSION@_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
@@ -1221,14 +1330,14 @@
 	  echo $$s; \
 	done;
 
-$(SYMBOLS_FILE): $(libgstcheck_@GST_API_VERSION@include_HEADERS) libcheck/check.h
+$(SYMBOLS_FILE): $(libgstcheck_@GST_API_VERSION@include_HEADERS) internal-check.h
 	$(AM_V_GEN)rm -f $(SYMBOLS_FILE) 2>/dev/null; \
 	for s in $(LIBGSTCHECK_EXPORTED_SYMBOLS) $(CHECK_SYMS); do \
 	  echo $$s >> $(SYMBOLS_FILE); \
 	done
 
 @HAVE_INTROSPECTION_TRUE@GstCheck-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstcheck-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 @HAVE_INTROSPECTION_TRUE@		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_SCANNER) -v --namespace GstCheck \
 @HAVE_INTROSPECTION_TRUE@		--nsversion=@GST_API_VERSION@ \
@@ -1246,7 +1355,7 @@
 @HAVE_INTROSPECTION_TRUE@		--libtool="${LIBTOOL}" \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-check-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
 @HAVE_INTROSPECTION_TRUE@		$(gir_sources)
diff --git a/libs/gst/check/check.h b/libs/gst/check/check.h
index 554ff93..6f58164 100644
--- a/libs/gst/check/check.h
+++ b/libs/gst/check/check.h
@@ -25,6 +25,7 @@
 #include <gst/check/gstbufferstraw.h>
 #include <gst/check/gstcheck.h>
 #include <gst/check/gstconsistencychecker.h>
+#include <gst/check/gstharness.h>
 #include <gst/check/gsttestclock.h>
 
 #endif /* __GST_CHECK__H__ */
diff --git a/libs/gst/check/gstcheck.c b/libs/gst/check/gstcheck.c
index 8cadbca..1095bcc 100644
--- a/libs/gst/check/gstcheck.c
+++ b/libs/gst/check/gstcheck.c
@@ -27,9 +27,9 @@
  * These macros and functions are for internal use of the unit tests found
  * inside the 'check' directories of various GStreamer packages.
  *
- * One notable feature is that one can use the environment variables GST_CHECK
- * and GST_CHECK_IGNORE to select which tests to run or skip. Both variables
- * can contain a comman separated list of test name globs (e.g. test_*).
+ * One notable feature is that one can use the environment variables GST_CHECKS
+ * and GST_CHECKS_IGNORE to select which tests to run or skip. Both variables
+ * can contain a comma separated list of test name globs (e.g. test_*).
  */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -55,7 +55,7 @@
 GMutex check_mutex;
 GCond check_cond;
 
-/* FIXME 0.11: shouldn't _gst_check_debug be static? Not used anywhere */
+/* FIXME 2.0: shouldn't _gst_check_debug be static? Not used anywhere */
 gboolean _gst_check_debug = FALSE;
 gboolean _gst_check_raised_critical = FALSE;
 gboolean _gst_check_raised_warning = FALSE;
@@ -66,7 +66,7 @@
     const gchar * message, gpointer user_data)
 {
   if (_gst_check_debug) {
-    g_print ("%s", message);
+    g_print ("%s\n", message);
   }
 }
 
@@ -243,7 +243,9 @@
  * @element: element to setup pad on
  * @tmpl: pad template
  *
- * Returns: (transfer full): a new pad
+ * Does the same as #gst_check_setup_src_pad_by_name with the <emphasis> name </emphasis> parameter equal to "sink".
+ *
+ * Returns: (transfer full): A new pad that can be used to inject data on @element
  */
 GstPad *
 gst_check_setup_src_pad (GstElement * element, GstStaticPadTemplate * tmpl)
@@ -253,11 +255,45 @@
 
 /**
  * gst_check_setup_src_pad_by_name:
- * @element: element to setup pad on
+ * @element: element to setup src pad on
  * @tmpl: pad template
- * @name: name
+ * @name: Name of the @element sink pad that will be linked to the src pad that will be setup
  *
- * Returns: (transfer full): a new pad
+ * Creates a new src pad (based on the given @tmpl) and links it to the given @element sink pad (the pad that matches the given @name).
+ * Before using the src pad to push data on @element you need to call #gst_check_setup_events on the created src pad.
+ *
+ * Example of how to push a buffer on @element:
+ *
+ * |[<!-- language="C" -->
+ * static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+ * GST_PAD_SINK,
+ * GST_PAD_ALWAYS,
+ * GST_STATIC_CAPS (YOUR_CAPS_TEMPLATE_STRING)
+ * );
+ * static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+ * GST_PAD_SRC,
+ * GST_PAD_ALWAYS,
+ * GST_STATIC_CAPS (YOUR_CAPS_TEMPLATE_STRING)
+ * );
+ *
+ * GstElement * element = gst_check_setup_element ("element");
+ * GstPad * mysrcpad = gst_check_setup_src_pad (element, &srctemplate);
+ * GstPad * mysinkpad = gst_check_setup_sink_pad (element, &sinktemplate);
+ *
+ * gst_pad_set_active (mysrcpad, TRUE);
+ * gst_pad_set_active (mysinkpad, TRUE);
+ * fail_unless (gst_element_set_state (element, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing");
+ *
+ * GstCaps * caps = gst_caps_from_string (YOUR_DESIRED_SINK_CAPS);
+ * gst_check_setup_events (mysrcpad, element, caps, GST_FORMAT_TIME);
+ * gst_caps_unref (caps);
+ *
+ * fail_unless (gst_pad_push (mysrcpad, gst_buffer_new_and_alloc(2)) == GST_FLOW_OK);
+ * ]|
+ *
+ * For very simple input/output test scenarios checkout #gst_check_element_push_buffer_list and #gst_check_element_push_buffer.
+ *
+ * Returns: (transfer full): A new pad that can be used to inject data on @element
  */
 GstPad *
 gst_check_setup_src_pad_by_name (GstElement * element,
@@ -369,7 +405,9 @@
  * @element: element to setup pad on
  * @tmpl: pad template
  *
- * Returns: (transfer full): a new pad
+ * Does the same as #gst_check_setup_sink_pad_by_name with the <emphasis> name </emphasis> parameter equal to "src".
+ *
+ * Returns: (transfer full): a new pad that can be used to check the output of @element
  */
 GstPad *
 gst_check_setup_sink_pad (GstElement * element, GstStaticPadTemplate * tmpl)
@@ -381,9 +419,13 @@
  * gst_check_setup_sink_pad_by_name:
  * @element: element to setup pad on
  * @tmpl: pad template
- * @name: name
+ * @name: Name of the @element src pad that will be linked to the sink pad that will be setup
  *
- * Returns: (transfer full): a new pad
+ * Creates a new sink pad (based on the given @tmpl) and links it to the given @element src pad 
+ * (the pad that matches the given @name).
+ * You can set event/chain/query functions on this pad to check the output of the @element.
+ *
+ * Returns: (transfer full): a new pad that can be used to check the output of @element
  */
 GstPad *
 gst_check_setup_sink_pad_by_name (GstElement * element,
@@ -561,7 +603,7 @@
  * This can be used to set up a test which pushes some buffers and then an
  * invalid buffer, when the final buffer is expected to fail, for example.
  */
-/* FIXME 0.11: rename this function now that there's GstBufferList? */
+/* FIXME 2.0: rename this function now that there's GstBufferList? */
 void
 gst_check_element_push_buffer_list (const gchar * element_name,
     GList * buffer_in, GstCaps * caps_in, GList * buffer_out,
@@ -752,6 +794,7 @@
       if (!g_file_set_contents (fn, s->str, s->len, &err)) {
         g_print ("%s", s->str);
         g_printerr ("\nFailed to write ABI information: %s\n", err->message);
+        g_clear_error (&err);
       } else {
         g_print ("\nWrote ABI information to '%s'.\n", fn);
       }
@@ -884,3 +927,112 @@
       stream_id);
   g_free (stream_id);
 }
+
+typedef struct _DestroyedObjectStruct
+{
+  GObject *object;
+  gboolean destroyed;
+} DestroyedObjectStruct;
+
+static void
+weak_notify (DestroyedObjectStruct * destroyed, GObject ** object)
+{
+  destroyed->destroyed = TRUE;
+}
+
+/**
+ * gst_check_objects_destroyed_on_unref:
+ * @object_to_unref: The #GObject to unref
+ * @first_object: (allow-none): The first object that should be destroyed as a
+ * concequence of unrefing @object_to_unref.
+ * @... : Additional object that should have been destroyed.
+ *
+ * Unrefs @object_to_unref and checks that is has properly been
+ * destroyed, also checks that the other objects passed in
+ * parametter have been destroyed as a concequence of
+ * unrefing @object_to_unref. Last variable argument should be NULL.
+ *
+ * Since: 1.6
+ */
+void
+gst_check_objects_destroyed_on_unref (gpointer object_to_unref,
+    gpointer first_object, ...)
+{
+  GObject *object;
+  GList *objs = NULL, *tmp;
+  DestroyedObjectStruct *destroyed = g_slice_new0 (DestroyedObjectStruct);
+
+  destroyed->object = object_to_unref;
+  g_object_weak_ref (object_to_unref, (GWeakNotify) weak_notify, destroyed);
+  objs = g_list_prepend (objs, destroyed);
+
+  if (first_object) {
+    va_list varargs;
+
+    object = first_object;
+
+    va_start (varargs, first_object);
+    while (object) {
+      destroyed = g_slice_new0 (DestroyedObjectStruct);
+      destroyed->object = object;
+      g_object_weak_ref (object, (GWeakNotify) weak_notify, destroyed);
+      objs = g_list_prepend (objs, destroyed);
+      object = va_arg (varargs, GObject *);
+    }
+    va_end (varargs);
+  }
+  gst_object_unref (object_to_unref);
+
+  for (tmp = objs; tmp; tmp = tmp->next) {
+    DestroyedObjectStruct *destroyed = tmp->data;
+
+    if (!destroyed->destroyed) {
+      fail_unless (destroyed->destroyed,
+          "%s_%p is not destroyed, %d refcounts left!",
+          GST_IS_OBJECT (destroyed->
+              object) ? GST_OBJECT_NAME (destroyed->object) :
+          G_OBJECT_TYPE_NAME (destroyed), destroyed->object,
+          destroyed->object->ref_count);
+    }
+    g_slice_free (DestroyedObjectStruct, tmp->data);
+  }
+  g_list_free (objs);
+}
+
+/**
+ * gst_check_object_destroyed_on_unref:
+ * @object_to_unref: The #GObject to unref
+ *
+ * Unrefs @object_to_unref and checks that is has properly been
+ * destroyed.
+ *
+ * Since: 1.6
+ */
+void
+gst_check_object_destroyed_on_unref (gpointer object_to_unref)
+{
+  gst_check_objects_destroyed_on_unref (object_to_unref, NULL, NULL);
+}
+
+/* For ABI compatibility with GStreamer < 1.5 */
+void
+_fail_unless (int result, const char *file, int line, const char *expr, ...);
+
+void
+_fail_unless (int result, const char *file, int line, const char *expr, ...)
+{
+  gchar *msg;
+  va_list args;
+
+  if (result) {
+    _mark_point (file, line);
+    return;
+  }
+
+  va_start (args, expr);
+  msg = g_strdup_vprintf (expr, args);
+  va_end (args);
+
+  _ck_assert_failed (file, line, msg, NULL);
+  g_free (msg);
+}
diff --git a/libs/gst/check/gstcheck.h b/libs/gst/check/gstcheck.h
index 84d1d11..3c1b0ff 100644
--- a/libs/gst/check/gstcheck.h
+++ b/libs/gst/check/gstcheck.h
@@ -107,12 +107,27 @@
 void gst_check_setup_events_with_stream_id (GstPad * srcpad,
     GstElement * element, GstCaps * caps, GstFormat format,
     const gchar * stream_id);
+void gst_check_objects_destroyed_on_unref (gpointer object_to_unref, gpointer first_object, ...)
+  G_GNUC_NULL_TERMINATED;
+void gst_check_object_destroyed_on_unref (gpointer object_to_unref);
 
 #define fail_unless_message_error(msg, domain, code)            \
 gst_check_message_error (msg, GST_MESSAGE_ERROR,                \
   GST_ ## domain ## _ERROR, GST_ ## domain ## _ERROR_ ## code)
 #define assert_message_error(m, d, c) fail_unless_message_error(m, d, c)
 
+#ifdef GST_CHECK_TEST_ENVIRONMENT_BEACON
+#define GST_DO_CHECK_TEST_ENVIRONMENT \
+G_STMT_START {                        \
+  if (g_getenv (GST_CHECK_TEST_ENVIRONMENT_BEACON) == NULL) \
+    fail ("Test environment not set up correctly! Expected environment " \
+       "variable '%s' to be set.", GST_CHECK_TEST_ENVIRONMENT_BEACON); \
+} G_STMT_END
+
+#else
+#define GST_DO_CHECK_TEST_ENVIRONMENT /* nothing to check */
+#endif
+
 /**
  * GST_START_TEST:
  * @__testname: test function name
@@ -128,6 +143,7 @@
 static void __testname (int __i__)\
 {\
   GST_DEBUG ("test start"); \
+  GST_DO_CHECK_TEST_ENVIRONMENT; \
   tcase_fn_start (""# __testname, __FILE__, __LINE__);
 
 #define GST_END_TEST GST_LOG ("cleaning up tasks"); \
@@ -497,7 +513,7 @@
   g_usleep (1);                                                 \
 } G_STMT_END;
 
-#define THREAD_TEST_RUNNING()   (_gst_check_threads_running == TRUE)
+#define THREAD_TEST_RUNNING()   (!!_gst_check_threads_running)
 
 /* additional assertions */
 #define ASSERT_CRITICAL(code)                                   \
@@ -505,8 +521,9 @@
   _gst_check_expecting_log = TRUE;                              \
   _gst_check_raised_critical = FALSE;                           \
   code;                                                         \
-  _fail_unless (_gst_check_raised_critical, __FILE__, __LINE__, \
-                "Expected g_critical, got nothing", NULL);      \
+  if (!_gst_check_raised_critical)                              \
+    _ck_assert_failed (__FILE__, __LINE__,                      \
+        "Expected g_critical, got nothing", NULL);              \
   _gst_check_expecting_log = FALSE;                             \
 } G_STMT_END
 
@@ -515,8 +532,9 @@
   _gst_check_expecting_log = TRUE;                              \
   _gst_check_raised_warning = FALSE;                            \
   code;                                                         \
-  _fail_unless (_gst_check_raised_warning, __FILE__, __LINE__,  \
-                "Expected g_warning, got nothing", NULL);       \
+  if (!_gst_check_raised_warning)                               \
+    _ck_assert_failed (__FILE__, __LINE__,                      \
+        "Expected g_warning, got nothing", NULL);               \
   _gst_check_expecting_log = FALSE;                             \
 } G_STMT_END
 
@@ -560,7 +578,7 @@
 } G_STMT_END
 
 #define ASSERT_SET_STATE(element, state, ret)                   \
-fail_unless (gst_element_set_state (element,                    \
+fail_unless (gst_element_set_state (GST_ELEMENT(element),       \
   state) == ret,                                                \
   "could not change state to " #state);
 
diff --git a/libs/gst/check/gstconsistencychecker.c b/libs/gst/check/gstconsistencychecker.c
index 2e98537..e152c6a 100644
--- a/libs/gst/check/gstconsistencychecker.c
+++ b/libs/gst/check/gstconsistencychecker.c
@@ -213,7 +213,7 @@
 }
 
 /**
- * gst_consistency_checker_new:
+ * gst_consistency_checker_new: (skip)
  * @pad: The #GstPad on which the dataflow will be checked.
  *
  * Sets up a data probe on the given pad which will raise assertions if the
diff --git a/libs/gst/check/gstharness.c b/libs/gst/check/gstharness.c
new file mode 100644
index 0000000..6a8cde3
--- /dev/null
+++ b/libs/gst/check/gstharness.c
@@ -0,0 +1,3101 @@
+/* GstHarness - A test-harness for GStreamer testing
+ *
+ * Copyright (C) 2012-2015 Pexip <pexip.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * SECTION:gstharness
+ * @short_description: A test-harness for writing GStreamer unit tests
+ * @see_also: #GstTestClock,\
+ *
+ * #GstHarness is ment to make writing unit test for GStreamer much easier.
+ * It can be though of as a way of treating a #GstElement as a black box,
+ * deterministially feeding it data, and controlling what data it outputs.
+ *
+ * The basic structure of #GstHarness is two "floating" #GstPads, that connects
+ * to the harnessed #GstElement src and sink #GstPads like so:
+ *
+ * <programlisting>
+ *           __________________________
+ *  _____   |  _____            _____  |   _____
+ * |     |  | |     |          |     | |  |     |
+ * | src |--+-| sink|  Element | src |-+--| sink|
+ * |_____|  | |_____|          |_____| |  |_____|
+ *          |__________________________|
+ *
+ * </programlisting>
+ *
+ * With this, you can now simulate any environment the #GstElement might find
+ * itself in. By specifying the #GstCaps of the harness #GstPads, using
+ * functions like gst_harness_set_src_caps or gst_harness_set_sink_caps_str,
+ * you can test how the #GstElement interacts with different capssets.
+ *
+ * Your harnessed #GstElement can of course also be a bin, and using
+ * gst_harness_new_parse supporting standard gst-launch syntax, you can
+ * easily test a whole pipeline instead of just one element.
+ *
+ * You can then go on to push #GstBuffers and #GstEvents on to the srcpad,
+ * using functions like gst_harness_push and gst_harness_push_event, and
+ * then pull them out to examine them with gst_harness_pull and
+ * gst_harness_pull_event.
+ *
+ * <example>
+ * <title>A simple buffer-in buffer-out example</title>
+ *   <programlisting language="c">
+ *   #include &lt;gst/gst.h&gt;
+ *   #include &lt;gst/check/gstharness.h&gt;
+ *   GstHarness *h;
+ *   GstBuffer *in_buf;
+ *   GstBuffer *out_buf;
+ *
+ *   // attach the harness to the src and sink pad of GstQueue
+ *   h = gst_harness_new ("queue");
+ *
+ *   // we must specify a caps before pushing buffers
+ *   gst_harness_set_src_caps_str (h, "mycaps");
+ *
+ *   // create a buffer of size 42
+ *   in_buf = gst_harness_create_buffer (h, 42);
+ *
+ *   // push the buffer into the queue
+ *   gst_harness_push (h, in_buf);
+ *
+ *   // pull the buffer from the queue
+ *   out_buf = gst_harness_pull (h);
+ *
+ *   // validate the buffer in is the same as buffer out
+ *   fail_unless (in_buf == out_buf);
+ *
+ *   // cleanup
+ *   gst_buffer_unref (out_buf);
+ *   gst_harness_teardown (h);
+ *
+ *   </programlisting>
+ * </example>
+ *
+ * Another main feature of the #GstHarness is its integration with the
+ * #GstTestClock. Operating the #GstTestClock can be very challenging, but
+ * #GstHarness simplifies some of the most desired actions a lot, like wanting
+ * to manually advance the clock while at the same time releasing a #GstClockID
+ * that is waiting, with functions like gst_harness_crank_single_clock_wait.
+ *
+ * #GstHarness also supports sub-harnesses, as a way of generating and
+ * validating data. A sub-harness is another #GstHarness that is managed by
+ * the "parent" harness, and can either be created by using the standard
+ * gst_harness_new type functions directly on the (GstHarness *)->src_harness,
+ * or using the much more convenient gst_harness_add_src or
+ * gst_harness_add_sink_parse. If you have a decoder-element you want to test,
+ * (like vp8dec) it can be very useful to add a src-harness with both a
+ * src-element (videotestsrc) and an encoder (vp8enc) to feed the decoder data
+ * with different configurations, by simply doing:
+ *
+ * <example>
+ * <programlisting language="c">
+ *   GstHarness * h = gst_harness_new (h, "vp8dec");
+ *   gst_harness_add_src_parse (h, "videotestsrc is-live=1 ! vp8enc", TRUE);
+ * </programlisting>
+ * </example>
+ *
+ * and then feeding it data with:
+ *
+ * <example>
+ * <programlisting language="c">
+ * gst_harness_push_from_src (h);
+ * </programlisting>
+ * </example>
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* we have code with side effects in asserts, so make sure they are active */
+#ifdef G_DISABLE_ASSERT
+#error "GstHarness must be compiled with G_DISABLE_ASSERT undefined"
+#endif
+
+#include "gstharness.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+static void gst_harness_stress_free (GstHarnessThread * t);
+
+#define HARNESS_KEY "harness"
+#define HARNESS_REF "harness-ref"
+
+static GstStaticPadTemplate hsrctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+static GstStaticPadTemplate hsinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+struct _GstHarnessPrivate
+{
+  gchar *element_sinkpad_name;
+  gchar *element_srcpad_name;
+
+  GstCaps *src_caps;
+  GstCaps *sink_caps;
+
+  gboolean forwarding;
+  GstPad *sink_forward_pad;
+
+  volatile gint recv_buffers;
+  volatile gint recv_events;
+  volatile gint recv_upstream_events;
+
+  GAsyncQueue *buffer_queue;
+  GAsyncQueue *src_event_queue;
+  GAsyncQueue *sink_event_queue;
+
+  GstClockTime latency_min;
+  GstClockTime latency_max;
+  gboolean has_clock_wait;
+  gboolean drop_buffers;
+  GstClockTime last_push_ts;
+
+  GstBufferPool *pool;
+  GstAllocator *allocator;
+  GstAllocationParams allocation_params;
+  GstAllocator *propose_allocator;
+  GstAllocationParams propose_allocation_params;
+
+  gboolean blocking_push_mode;
+  GCond blocking_push_cond;
+  GMutex blocking_push_mutex;
+
+  GPtrArray *stress;
+};
+
+static GstFlowReturn
+gst_harness_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstHarness *h = g_object_get_data (G_OBJECT (pad), HARNESS_KEY);
+  GstHarnessPrivate *priv = h->priv;
+  (void) parent;
+  g_assert (h != NULL);
+  g_mutex_lock (&priv->blocking_push_mutex);
+  g_atomic_int_inc (&priv->recv_buffers);
+
+  if (priv->drop_buffers)
+    gst_buffer_unref (buffer);
+  else
+    g_async_queue_push (priv->buffer_queue, buffer);
+
+  if (priv->blocking_push_mode) {
+    g_cond_wait (&priv->blocking_push_cond, &priv->blocking_push_mutex);
+  }
+  g_mutex_unlock (&priv->blocking_push_mutex);
+
+  return GST_FLOW_OK;
+}
+
+static gboolean
+gst_harness_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GstHarness *h = g_object_get_data (G_OBJECT (pad), HARNESS_KEY);
+  GstHarnessPrivate *priv = h->priv;
+  (void) parent;
+  g_assert (h != NULL);
+  g_atomic_int_inc (&priv->recv_upstream_events);
+  g_async_queue_push (priv->src_event_queue, event);
+  return TRUE;
+}
+
+static gboolean
+gst_harness_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GstHarness *h = g_object_get_data (G_OBJECT (pad), HARNESS_KEY);
+  GstHarnessPrivate *priv = h->priv;
+  gboolean forward;
+
+  g_assert (h != NULL);
+  (void) parent;
+  g_atomic_int_inc (&priv->recv_events);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_STREAM_START:
+    case GST_EVENT_CAPS:
+    case GST_EVENT_SEGMENT:
+      forward = TRUE;
+      break;
+    default:
+      forward = FALSE;
+      break;
+  }
+
+  if (priv->forwarding && forward && priv->sink_forward_pad) {
+    gst_pad_push_event (priv->sink_forward_pad, event);
+  } else {
+    g_async_queue_push (priv->sink_event_queue, event);
+  }
+
+  return TRUE;
+}
+
+static void
+gst_harness_decide_allocation (GstHarness * h, GstCaps * caps)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstQuery *query;
+  GstAllocator *allocator;
+  GstAllocationParams params;
+  GstBufferPool *pool = NULL;
+  guint size, min, max;
+
+  query = gst_query_new_allocation (caps, FALSE);
+  gst_pad_peer_query (h->srcpad, query);
+
+  if (gst_query_get_n_allocation_params (query) > 0) {
+    gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
+  } else {
+    allocator = NULL;
+    gst_allocation_params_init (&params);
+  }
+
+  if (gst_query_get_n_allocation_pools (query) > 0) {
+    gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
+#if 0
+    /* Most elements create their own pools if pool == NULL. Not sure if we
+     * want to do that in the harness since we may want to test the pool
+     * implementation of the elements. Not creating a pool will however ignore
+     * the returned size. */
+    if (pool == NULL)
+      pool = gst_buffer_pool_new ();
+#endif
+  } else {
+    pool = NULL;
+    size = min = max = 0;
+  }
+  gst_query_unref (query);
+
+  if (pool) {
+    GstStructure *config = gst_buffer_pool_get_config (pool);
+    gst_buffer_pool_config_set_params (config, caps, size, min, max);
+    gst_buffer_pool_config_set_allocator (config, allocator, &params);
+    gst_buffer_pool_set_config (pool, config);
+  }
+
+  if (pool != priv->pool) {
+    if (priv->pool != NULL)
+      gst_buffer_pool_set_active (priv->pool, FALSE);
+    if (pool)
+      gst_buffer_pool_set_active (pool, TRUE);
+  }
+
+  priv->allocation_params = params;
+  if (priv->allocator)
+    gst_object_unref (priv->allocator);
+  priv->allocator = allocator;
+  if (priv->pool)
+    gst_object_unref (priv->pool);
+  priv->pool = pool;
+}
+
+static void
+gst_harness_negotiate (GstHarness * h)
+{
+  GstCaps *caps;
+
+  caps = gst_pad_get_current_caps (h->srcpad);
+  if (caps != NULL) {
+    gst_harness_decide_allocation (h, caps);
+    gst_caps_unref (caps);
+  } else {
+    GST_FIXME_OBJECT (h, "Cannot negotiate allocation because caps is not set");
+  }
+}
+
+static gboolean
+gst_harness_sink_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  GstHarness *h = g_object_get_data (G_OBJECT (pad), HARNESS_KEY);
+  GstHarnessPrivate *priv = h->priv;
+  gboolean res = TRUE;
+  g_assert (h != NULL);
+
+  // FIXME: forward all queries?
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_LATENCY:
+      gst_query_set_latency (query, TRUE, priv->latency_min, priv->latency_max);
+      break;
+    case GST_QUERY_CAPS:
+    {
+      GstCaps *caps, *filter = NULL;
+
+      if (priv->sink_caps) {
+        caps = gst_caps_ref (priv->sink_caps);
+      } else {
+        caps = gst_pad_get_pad_template_caps (pad);
+      }
+
+      gst_query_parse_caps (query, &filter);
+      if (filter != NULL) {
+        gst_caps_take (&caps,
+            gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST));
+      }
+
+      gst_query_set_caps_result (query, caps);
+      gst_caps_unref (caps);
+    }
+      break;
+    case GST_QUERY_ALLOCATION:
+    {
+      if (priv->forwarding && priv->sink_forward_pad != NULL) {
+        GstPad *peer = gst_pad_get_peer (priv->sink_forward_pad);
+        g_assert (peer != NULL);
+        res = gst_pad_query (peer, query);
+        gst_object_unref (peer);
+      } else {
+        GstCaps *caps;
+        gboolean need_pool;
+        guint size;
+
+        gst_query_parse_allocation (query, &caps, &need_pool);
+
+        /* FIXME: Can this be removed? */
+        size = gst_query_get_n_allocation_params (query);
+        g_assert_cmpuint (0, ==, size);
+        gst_query_add_allocation_param (query,
+            priv->propose_allocator, &priv->propose_allocation_params);
+
+        GST_DEBUG_OBJECT (pad, "proposing allocation %" GST_PTR_FORMAT,
+            priv->propose_allocator);
+      }
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, parent, query);
+  }
+
+  return res;
+}
+
+static gboolean
+gst_harness_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  GstHarness *h = g_object_get_data (G_OBJECT (pad), HARNESS_KEY);
+  GstHarnessPrivate *priv = h->priv;
+  gboolean res = TRUE;
+  g_assert (h != NULL);
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_LATENCY:
+      gst_query_set_latency (query, TRUE, priv->latency_min, priv->latency_max);
+      break;
+    case GST_QUERY_CAPS:
+    {
+      GstCaps *caps, *filter = NULL;
+
+      if (priv->src_caps) {
+        caps = gst_caps_ref (priv->src_caps);
+      } else {
+        caps = gst_pad_get_pad_template_caps (pad);
+      }
+
+      gst_query_parse_caps (query, &filter);
+      if (filter != NULL) {
+        gst_caps_take (&caps,
+            gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST));
+      }
+
+      gst_query_set_caps_result (query, caps);
+      gst_caps_unref (caps);
+    }
+      break;
+    default:
+      res = gst_pad_query_default (pad, parent, query);
+  }
+  return res;
+}
+
+static void
+gst_harness_element_ref (GstHarness * h)
+{
+  guint *data;
+
+  GST_OBJECT_LOCK (h->element);
+  data = g_object_get_data (G_OBJECT (h->element), HARNESS_REF);
+  if (data == NULL) {
+    data = g_new0 (guint, 1);
+    *data = 1;
+    g_object_set_data_full (G_OBJECT (h->element), HARNESS_REF, data, g_free);
+  } else {
+    (*data)++;
+  }
+  GST_OBJECT_UNLOCK (h->element);
+}
+
+static guint
+gst_harness_element_unref (GstHarness * h)
+{
+  guint *data;
+  guint ret;
+
+  GST_OBJECT_LOCK (h->element);
+  data = g_object_get_data (G_OBJECT (h->element), HARNESS_REF);
+  g_assert (data != NULL);
+  (*data)--;
+  ret = *data;
+  GST_OBJECT_UNLOCK (h->element);
+
+  return ret;
+}
+
+static void
+gst_harness_link_element_srcpad (GstHarness * h,
+    const gchar * element_srcpad_name)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstPad *srcpad = gst_element_get_static_pad (h->element,
+      element_srcpad_name);
+  GstPadLinkReturn link;
+  if (srcpad == NULL)
+    srcpad = gst_element_get_request_pad (h->element, element_srcpad_name);
+  g_assert (srcpad);
+  link = gst_pad_link (srcpad, h->sinkpad);
+  g_assert_cmpint (link, ==, GST_PAD_LINK_OK);
+  g_free (priv->element_srcpad_name);
+  priv->element_srcpad_name = gst_pad_get_name (srcpad);
+
+  gst_object_unref (srcpad);
+}
+
+static void
+gst_harness_link_element_sinkpad (GstHarness * h,
+    const gchar * element_sinkpad_name)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstPad *sinkpad = gst_element_get_static_pad (h->element,
+      element_sinkpad_name);
+  GstPadLinkReturn link;
+  if (sinkpad == NULL)
+    sinkpad = gst_element_get_request_pad (h->element, element_sinkpad_name);
+  g_assert (sinkpad);
+  link = gst_pad_link (h->srcpad, sinkpad);
+  g_assert_cmpint (link, ==, GST_PAD_LINK_OK);
+  g_free (priv->element_sinkpad_name);
+  priv->element_sinkpad_name = gst_pad_get_name (sinkpad);
+
+  gst_object_unref (sinkpad);
+}
+
+static void
+gst_harness_setup_src_pad (GstHarness * h,
+    GstStaticPadTemplate * src_tmpl, const gchar * element_sinkpad_name)
+{
+  GstHarnessPrivate *priv = h->priv;
+  g_assert (src_tmpl);
+  g_assert (h->srcpad == NULL);
+
+  priv->src_event_queue =
+      g_async_queue_new_full ((GDestroyNotify) gst_event_unref);
+
+  /* sending pad */
+  h->srcpad = gst_pad_new_from_static_template (src_tmpl, "src");
+  g_assert (h->srcpad);
+  g_object_set_data (G_OBJECT (h->srcpad), HARNESS_KEY, h);
+
+  gst_pad_set_query_function (h->srcpad, gst_harness_src_query);
+  gst_pad_set_event_function (h->srcpad, gst_harness_src_event);
+
+  gst_pad_set_active (h->srcpad, TRUE);
+
+  if (element_sinkpad_name)
+    gst_harness_link_element_sinkpad (h, element_sinkpad_name);
+}
+
+static void
+gst_harness_setup_sink_pad (GstHarness * h,
+    GstStaticPadTemplate * sink_tmpl, const gchar * element_srcpad_name)
+{
+  GstHarnessPrivate *priv = h->priv;
+  g_assert (sink_tmpl);
+  g_assert (h->sinkpad == NULL);
+
+  priv->buffer_queue = g_async_queue_new_full (
+      (GDestroyNotify) gst_buffer_unref);
+  priv->sink_event_queue = g_async_queue_new_full (
+      (GDestroyNotify) gst_event_unref);
+
+  /* receiving pad */
+  h->sinkpad = gst_pad_new_from_static_template (sink_tmpl, "sink");
+  g_assert (h->sinkpad);
+  g_object_set_data (G_OBJECT (h->sinkpad), HARNESS_KEY, h);
+
+  gst_pad_set_chain_function (h->sinkpad, gst_harness_chain);
+  gst_pad_set_query_function (h->sinkpad, gst_harness_sink_query);
+  gst_pad_set_event_function (h->sinkpad, gst_harness_sink_event);
+
+  gst_pad_set_active (h->sinkpad, TRUE);
+
+  if (element_srcpad_name)
+    gst_harness_link_element_srcpad (h, element_srcpad_name);
+}
+
+static void
+check_element_type (GstElement * element, gboolean * has_sinkpad,
+    gboolean * has_srcpad)
+{
+  GstElementClass *element_class = GST_ELEMENT_GET_CLASS (element);
+  const GList *tmpl_list;
+
+  *has_srcpad = element->numsrcpads > 0;
+  *has_sinkpad = element->numsinkpads > 0;
+
+  tmpl_list = gst_element_class_get_pad_template_list (element_class);
+
+  while (tmpl_list) {
+    GstPadTemplate *pad_tmpl = (GstPadTemplate *) tmpl_list->data;
+    tmpl_list = g_list_next (tmpl_list);
+    if (GST_PAD_TEMPLATE_DIRECTION (pad_tmpl) == GST_PAD_SRC)
+      *has_srcpad |= TRUE;
+    if (GST_PAD_TEMPLATE_DIRECTION (pad_tmpl) == GST_PAD_SINK)
+      *has_sinkpad |= TRUE;
+  }
+}
+
+static void
+turn_async_and_sync_off (GstElement * element)
+{
+  GObjectClass *class = G_OBJECT_GET_CLASS (element);
+  if (g_object_class_find_property (class, "async"))
+    g_object_set (element, "async", FALSE, NULL);
+  if (g_object_class_find_property (class, "sync"))
+    g_object_set (element, "sync", FALSE, NULL);
+}
+
+static gboolean
+gst_pad_is_request_pad (GstPad * pad)
+{
+  GstPadTemplate *temp;
+  gboolean is_request;
+
+  if (pad == NULL)
+    return FALSE;
+  temp = gst_pad_get_pad_template (pad);
+  if (temp == NULL)
+    return FALSE;
+  is_request = GST_PAD_TEMPLATE_PRESENCE (temp) == GST_PAD_REQUEST;
+  gst_object_unref (temp);
+  return is_request;
+}
+
+/**
+ * gst_harness_new_full: (skip)
+ * @element: a #GstElement to attach the harness to (transfer none)
+ * @hsrc: (allow-none): a #GstStaticPadTemplate describing the harness srcpad.
+ * %NULL will not create a harness srcpad.
+ * @element_sinkpad_name: (allow-none): a #gchar with the name of the element
+ * sinkpad that is then linked to the harness srcpad. Can be a static or request
+ * or a sometimes pad that has been added. %NULL will not get/request a sinkpad
+ * from the element. (Like if the element is a src.)
+ * @hsink: (allow-none): a #GstStaticPadTemplate describing the harness sinkpad.
+ * %NULL will not create a harness sinkpad.
+ * @element_srcpad_name: (allow-none): a #gchar with the name of the element
+ * srcpad that is then linked to the harness sinkpad, similar to the
+ * @element_sinkpad_name.
+ *
+ * Creates a new harness.
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstHarness, or %NULL if the harness could
+ * not be created
+ *
+ * Since: 1.6
+ */
+GstHarness *
+gst_harness_new_full (GstElement * element,
+    GstStaticPadTemplate * hsrc, const gchar * element_sinkpad_name,
+    GstStaticPadTemplate * hsink, const gchar * element_srcpad_name)
+{
+  GstHarness *h;
+  GstHarnessPrivate *priv;
+  gboolean has_sinkpad, has_srcpad;
+
+  g_return_val_if_fail (element != NULL, NULL);
+
+  h = g_new0 (GstHarness, 1);
+  g_assert (h != NULL);
+  h->priv = g_new0 (GstHarnessPrivate, 1);
+  priv = h->priv;
+
+  GST_DEBUG_OBJECT (h, "about to create new harness %p", h);
+  h->element = gst_object_ref (element);
+  priv->last_push_ts = GST_CLOCK_TIME_NONE;
+  priv->latency_min = 0;
+  priv->latency_max = GST_CLOCK_TIME_NONE;
+  priv->drop_buffers = FALSE;
+
+  priv->propose_allocator = NULL;
+  gst_allocation_params_init (&priv->propose_allocation_params);
+
+  g_mutex_init (&priv->blocking_push_mutex);
+  g_cond_init (&priv->blocking_push_cond);
+
+  check_element_type (element, &has_sinkpad, &has_srcpad);
+
+  /* setup the loose srcpad linked to the element sinkpad */
+  if (has_sinkpad)
+    gst_harness_setup_src_pad (h, hsrc, element_sinkpad_name);
+
+  /* setup the loose sinkpad linked to the element srcpad */
+  if (has_srcpad)
+    gst_harness_setup_sink_pad (h, hsink, element_srcpad_name);
+
+  /* as a harness sink, we should not need sync and async */
+  if (has_sinkpad && !has_srcpad)
+    turn_async_and_sync_off (h->element);
+
+  if (h->srcpad != NULL) {
+    gboolean handled;
+    gchar *stream_id = g_strdup_printf ("%s-%p",
+        GST_OBJECT_NAME (h->element), h);
+    handled = gst_pad_push_event (h->srcpad,
+        gst_event_new_stream_start (stream_id));
+    g_assert (handled);
+    g_free (stream_id);
+  }
+
+  /* don't start sources, they start producing data! */
+  if (has_sinkpad)
+    gst_harness_play (h);
+
+  gst_harness_element_ref (h);
+
+  GST_DEBUG_OBJECT (h, "created new harness %p "
+      "with element_srcpad_name (%p, %s, %s) and element_sinkpad_name (%p, %s, %s)",
+      h, h->srcpad, GST_DEBUG_PAD_NAME (h->srcpad),
+      h->sinkpad, GST_DEBUG_PAD_NAME (h->sinkpad));
+
+  priv->stress = g_ptr_array_new_with_free_func (
+      (GDestroyNotify) gst_harness_stress_free);
+
+  /* we have forwarding on as a default */
+  gst_harness_set_forwarding (h, TRUE);
+
+  return h;
+}
+
+/**
+ * gst_harness_new_with_element: (skip)
+ * @element: a #GstElement to attach the harness to (transfer none)
+ * @element_sinkpad_name: (allow-none): a #gchar with the name of the element
+ * sinkpad that is then linked to the harness srcpad. %NULL does not attach a
+ * sinkpad
+ * @element_srcpad_name: (allow-none): a #gchar with the name of the element
+ * srcpad that is then linked to the harness sinkpad. %NULL does not attach a
+ * srcpad
+ *
+ * Creates a new harness. Works in the same way as gst_harness_new_full, only
+ * that generic padtemplates are used for the harness src and sinkpads, which
+ * will be sufficient in most usecases.
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstHarness, or %NULL if the harness could
+ * not be created
+ *
+ * Since: 1.6
+ */
+GstHarness *
+gst_harness_new_with_element (GstElement * element,
+    const gchar * element_sinkpad_name, const gchar * element_srcpad_name)
+{
+  return gst_harness_new_full (element,
+      &hsrctemplate, element_sinkpad_name, &hsinktemplate, element_srcpad_name);
+}
+
+/**
+ * gst_harness_new_with_padnames: (skip)
+ * @element_name: a #gchar describing the #GstElement name
+ * @element_sinkpad_name: (allow-none): a #gchar with the name of the element
+ * sinkpad that is then linked to the harness srcpad. %NULL does not attach a
+ * sinkpad
+ * @element_srcpad_name: (allow-none): a #gchar with the name of the element
+ * srcpad that is then linked to the harness sinkpad. %NULL does not attach a
+ * srcpad
+ *
+ * Creates a new harness. Works in the same way as gst_harness_new_with_element,
+ * except you specify the factoryname of the #GstElement
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstHarness, or %NULL if the harness could
+ * not be created
+ *
+ * Since: 1.6
+ */
+GstHarness *
+gst_harness_new_with_padnames (const gchar * element_name,
+    const gchar * element_sinkpad_name, const gchar * element_srcpad_name)
+{
+  GstHarness *h;
+  GstElement *element = gst_element_factory_make (element_name, NULL);
+  g_assert (element != NULL);
+
+  h = gst_harness_new_with_element (element, element_sinkpad_name,
+      element_srcpad_name);
+  gst_object_unref (element);
+  return h;
+}
+
+/**
+ * gst_harness_new_with_templates: (skip)
+ * @element_name: a #gchar describing the #GstElement name
+ * @hsrc: (allow-none): a #GstStaticPadTemplate describing the harness srcpad.
+ * %NULL will not create a harness srcpad.
+ * @hsink: (allow-none): a #GstStaticPadTemplate describing the harness sinkpad.
+ * %NULL will not create a harness sinkpad.
+ *
+ * Creates a new harness, like gst_harness_new_full, except it
+ * assumes the #GstElement sinkpad is named "sink" and srcpad is named "src"
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstHarness, or %NULL if the harness could
+ * not be created
+ *
+ * Since: 1.6
+ */
+GstHarness *
+gst_harness_new_with_templates (const gchar * element_name,
+    GstStaticPadTemplate * hsrc, GstStaticPadTemplate * hsink)
+{
+  GstHarness *h;
+  GstElement *element = gst_element_factory_make (element_name, NULL);
+  g_assert (element != NULL);
+
+  h = gst_harness_new_full (element, hsrc, "sink", hsink, "src");
+  gst_object_unref (element);
+  return h;
+}
+
+/**
+ * gst_harness_new: (skip)
+ * @element_name: a #gchar describing the #GstElement name
+ *
+ * Creates a new harness. Works like gst_harness_new_with_padnames, except it
+ * assumes the #GstElement sinkpad is named "sink" and srcpad is named "src"
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstHarness, or %NULL if the harness could
+ * not be created
+ *
+ * Since: 1.6
+ */
+GstHarness *
+gst_harness_new (const gchar * element_name)
+{
+  return gst_harness_new_with_padnames (element_name, "sink", "src");
+}
+
+/**
+ * gst_harness_new_parse: (skip)
+ * @launchline: a #gchar describing a gst-launch type line
+ *
+ * Creates a new harness, parsing the @launchline and putting that in a #GstBin,
+ * and then attches the harness to the bin.
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstHarness, or %NULL if the harness could
+ * not be created
+ *
+ * Since: 1.6
+ */
+GstHarness *
+gst_harness_new_parse (const gchar * launchline)
+{
+  GstHarness *h;
+  GstBin *bin;
+  gchar *desc;
+  GstPad *pad;
+  GstIterator *iter;
+  gboolean done = FALSE;
+
+  g_return_val_if_fail (launchline != NULL, NULL);
+
+  desc = g_strdup_printf ("bin.( %s )", launchline);
+  bin =
+      (GstBin *) gst_parse_launch_full (desc, NULL, GST_PARSE_FLAG_NONE, NULL);
+  g_free (desc);
+
+  if (G_UNLIKELY (bin == NULL))
+    return NULL;
+
+  /* find pads and ghost them if necessary */
+  if ((pad = gst_bin_find_unlinked_pad (bin, GST_PAD_SRC)) != NULL) {
+    gst_element_add_pad (GST_ELEMENT (bin), gst_ghost_pad_new ("src", pad));
+    gst_object_unref (pad);
+  }
+  if ((pad = gst_bin_find_unlinked_pad (bin, GST_PAD_SINK)) != NULL) {
+    gst_element_add_pad (GST_ELEMENT (bin), gst_ghost_pad_new ("sink", pad));
+    gst_object_unref (pad);
+  }
+
+  iter = gst_bin_iterate_sinks (bin);
+  while (!done) {
+    GValue item = { 0, };
+
+    switch (gst_iterator_next (iter, &item)) {
+      case GST_ITERATOR_OK:
+        turn_async_and_sync_off (GST_ELEMENT (g_value_get_object (&item)));
+        g_value_reset (&item);
+        break;
+      case GST_ITERATOR_DONE:
+        done = TRUE;
+        break;
+      case GST_ITERATOR_RESYNC:
+        gst_iterator_resync (iter);
+        break;
+      case GST_ITERATOR_ERROR:
+        gst_object_unref (bin);
+        gst_iterator_free (iter);
+        g_return_val_if_reached (NULL);
+        break;
+    }
+  }
+  gst_iterator_free (iter);
+
+  h = gst_harness_new_full (GST_ELEMENT_CAST (bin),
+      &hsrctemplate, "sink", &hsinktemplate, "src");
+  gst_object_unref (bin);
+  return h;
+}
+
+/**
+ * gst_harness_teardown:
+ * @h: a #GstHarness
+ *
+ * Tears down a @GstHarness, freeing all resources allocated using it.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_teardown (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+
+  if (priv->blocking_push_mode) {
+    g_mutex_lock (&priv->blocking_push_mutex);
+    priv->blocking_push_mode = FALSE;
+    g_cond_signal (&priv->blocking_push_cond);
+    g_mutex_unlock (&priv->blocking_push_mutex);
+  }
+
+  if (h->src_harness) {
+    gst_harness_teardown (h->src_harness);
+  }
+
+  if (h->sink_harness) {
+    gst_harness_teardown (h->sink_harness);
+  }
+
+  if (priv->src_caps)
+    gst_caps_unref (priv->src_caps);
+
+  if (priv->sink_caps)
+    gst_caps_unref (priv->sink_caps);
+
+  if (h->srcpad) {
+    if (gst_pad_is_request_pad (GST_PAD_PEER (h->srcpad)))
+      gst_element_release_request_pad (h->element, GST_PAD_PEER (h->srcpad));
+    g_free (priv->element_sinkpad_name);
+
+    gst_pad_set_active (h->srcpad, FALSE);
+    gst_object_unref (h->srcpad);
+
+    g_async_queue_unref (priv->src_event_queue);
+  }
+
+  if (h->sinkpad) {
+    if (gst_pad_is_request_pad (GST_PAD_PEER (h->sinkpad)))
+      gst_element_release_request_pad (h->element, GST_PAD_PEER (h->sinkpad));
+    g_free (priv->element_srcpad_name);
+
+    gst_pad_set_active (h->sinkpad, FALSE);
+    gst_object_unref (h->sinkpad);
+
+    g_async_queue_unref (priv->buffer_queue);
+    g_async_queue_unref (priv->sink_event_queue);
+  }
+
+  if (priv->sink_forward_pad)
+    gst_object_unref (priv->sink_forward_pad);
+
+  gst_object_replace ((GstObject **) & priv->propose_allocator, NULL);
+  gst_object_replace ((GstObject **) & priv->allocator, NULL);
+  gst_object_replace ((GstObject **) & priv->pool, NULL);
+
+  /* if we hold the last ref, set to NULL */
+  if (gst_harness_element_unref (h) == 0) {
+    gboolean state_change;
+    GstState state, pending;
+    state_change = gst_element_set_state (h->element, GST_STATE_NULL);
+    g_assert (state_change == GST_STATE_CHANGE_SUCCESS);
+    state_change = gst_element_get_state (h->element, &state, &pending, 0);
+    g_assert (state_change == GST_STATE_CHANGE_SUCCESS);
+    g_assert (state == GST_STATE_NULL);
+  }
+
+  g_cond_clear (&priv->blocking_push_cond);
+  g_mutex_clear (&priv->blocking_push_mutex);
+
+  g_ptr_array_unref (priv->stress);
+
+  gst_object_unref (h->element);
+  g_free (h->priv);
+  g_free (h);
+}
+
+/**
+ * gst_harness_add_element_src_pad:
+ * @h: a #GstHarness
+ * @srcpad: a #GstPad to link to the harness sinkpad
+ *
+ * Links the specifed #GstPad the @GstHarness sinkpad. This can be useful if
+ * perhaps the srcpad did not exist at the time of creating the harness,
+ * like a demuxer that provides a sometimes-pad after receiving data.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_element_src_pad (GstHarness * h, GstPad * srcpad)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstPadLinkReturn link;
+  if (h->sinkpad == NULL)
+    gst_harness_setup_sink_pad (h, &hsinktemplate, NULL);
+  link = gst_pad_link (srcpad, h->sinkpad);
+  g_assert_cmpint (link, ==, GST_PAD_LINK_OK);
+  g_free (priv->element_srcpad_name);
+  priv->element_srcpad_name = gst_pad_get_name (srcpad);
+}
+
+/**
+ * gst_harness_add_element_sink_pad:
+ * @h: a #GstHarness
+ * @sinkpad: a #GstPad to link to the harness srcpad
+ *
+ * Links the specifed #GstPad the @GstHarness srcpad.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_element_sink_pad (GstHarness * h, GstPad * sinkpad)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstPadLinkReturn link;
+  if (h->srcpad == NULL)
+    gst_harness_setup_src_pad (h, &hsrctemplate, NULL);
+  link = gst_pad_link (h->srcpad, sinkpad);
+  g_assert_cmpint (link, ==, GST_PAD_LINK_OK);
+  g_free (priv->element_sinkpad_name);
+  priv->element_sinkpad_name = gst_pad_get_name (sinkpad);
+}
+
+/**
+ * gst_harness_set_src_caps:
+ * @h: a #GstHarness
+ * @caps: (transfer full): a #GstCaps to set on the harness srcpad
+ *
+ * Sets the @GstHarness srcpad caps. This must be done before any buffers
+ * can legally be pushed from the harness to the element.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_src_caps (GstHarness * h, GstCaps * caps)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstSegment segment;
+  gboolean handled;
+
+  handled = gst_pad_push_event (h->srcpad, gst_event_new_caps (caps));
+  g_assert (handled);
+  gst_caps_take (&priv->src_caps, caps);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  handled = gst_pad_push_event (h->srcpad, gst_event_new_segment (&segment));
+}
+
+/**
+ * gst_harness_set_sink_caps:
+ * @h: a #GstHarness
+ * @caps: (transfer full): a #GstCaps to set on the harness sinkpad
+ *
+ * Sets the @GstHarness sinkpad caps.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_sink_caps (GstHarness * h, GstCaps * caps)
+{
+  GstHarnessPrivate *priv = h->priv;
+
+  gst_caps_take (&priv->sink_caps, caps);
+  gst_pad_push_event (h->sinkpad, gst_event_new_reconfigure ());
+}
+
+/**
+ * gst_harness_set_caps:
+ * @h: a #GstHarness
+ * @in: (transfer full): a #GstCaps to set on the harness srcpad
+ * @out: (transfer full): a #GstCaps to set on the harness sinkpad
+ *
+ * Sets the @GstHarness srcpad and sinkpad caps.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_caps (GstHarness * h, GstCaps * in, GstCaps * out)
+{
+  gst_harness_set_sink_caps (h, out);
+  gst_harness_set_src_caps (h, in);
+}
+
+/**
+ * gst_harness_set_src_caps_str:
+ * @h: a #GstHarness
+ * @str: a @gchar describing a #GstCaps to set on the harness srcpad
+ *
+ * Sets the @GstHarness srcpad caps using a string. This must be done before
+ * any buffers can legally be pushed from the harness to the element.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_src_caps_str (GstHarness * h, const gchar * str)
+{
+  gst_harness_set_src_caps (h, gst_caps_from_string (str));
+}
+
+/**
+ * gst_harness_set_sink_caps_str:
+ * @h: a #GstHarness
+ * @str: a @gchar describing a #GstCaps to set on the harness sinkpad
+ *
+ * Sets the @GstHarness sinkpad caps using a string.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_sink_caps_str (GstHarness * h, const gchar * str)
+{
+  gst_harness_set_sink_caps (h, gst_caps_from_string (str));
+}
+
+/**
+ * gst_harness_set_caps_str:
+ * @h: a #GstHarness
+ * @in: a @gchar describing a #GstCaps to set on the harness srcpad
+ * @out: a @gchar describing a #GstCaps to set on the harness sinkpad
+ *
+ * Sets the @GstHarness srcpad and sinkpad caps using strings.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_caps_str (GstHarness * h, const gchar * in, const gchar * out)
+{
+  gst_harness_set_sink_caps_str (h, out);
+  gst_harness_set_src_caps_str (h, in);
+}
+
+/**
+ * gst_harness_use_systemclock:
+ * @h: a #GstHarness
+ *
+ * Sets the system #GstClock on the @GstHarness #GstElement
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_use_systemclock (GstHarness * h)
+{
+  GstClock *clock = gst_system_clock_obtain ();
+  g_assert (clock != NULL);
+  gst_element_set_clock (h->element, clock);
+  gst_object_unref (clock);
+}
+
+/**
+ * gst_harness_use_testclock:
+ * @h: a #GstHarness
+ *
+ * Sets the #GstTestClock on the #GstHarness #GstElement
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_use_testclock (GstHarness * h)
+{
+  GstClock *clock = gst_test_clock_new ();
+  g_assert (clock != NULL);
+  gst_element_set_clock (h->element, clock);
+  gst_object_unref (clock);
+}
+
+/**
+ * gst_harness_get_testclock:
+ * @h: a #GstHarness
+ *
+ * Get the #GstTestClock. Useful if specific operations on the testclock is
+ * needed.
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full): a #GstTestClock, or %NULL if the testclock is not
+ * present.
+ *
+ * Since: 1.6
+ */
+GstTestClock *
+gst_harness_get_testclock (GstHarness * h)
+{
+  GstTestClock *testclock = NULL;
+  GstClock *clock;
+
+  clock = gst_element_get_clock (h->element);
+  if (clock) {
+    if (GST_IS_TEST_CLOCK (clock))
+      testclock = GST_TEST_CLOCK (clock);
+    else
+      gst_object_unref (clock);
+  }
+  return testclock;
+}
+
+/**
+ * gst_harness_set_time:
+ * @h: a #GstHarness
+ * @time: a #GstClockTime to advance the clock to
+ *
+ * Advance the #GstTestClock to a specific time.
+ *
+ * MT safe.
+ *
+ * Returns: a @gboolean %TRUE if the time could be set. %FALSE if not.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_set_time (GstHarness * h, GstClockTime time)
+{
+  GstTestClock *testclock;
+  testclock = gst_harness_get_testclock (h);
+  if (testclock == NULL)
+    return FALSE;
+
+  gst_test_clock_set_time (testclock, time);
+  gst_object_unref (testclock);
+  return TRUE;
+}
+
+/**
+ * gst_harness_wait_for_clock_id_waits:
+ * @h: a #GstHarness
+ * @waits: a #guint describing the numbers of #GstClockID registered with
+ * the #GstTestClock
+ * @timeout: a #guint describing how many seconds to wait for @waits to be true
+ *
+ * Waits for @timeout seconds until @waits number of #GstClockID waits is
+ * registered with the #GstTestClock. Useful for writing deterministic tests,
+ * where you want to make sure that an expected number of waits have been
+ * reached.
+ *
+ * MT safe.
+ *
+ * Returns: a @gboolean %TRUE if the waits have been registered, %FALSE if not.
+ * (Could be that it timed out waiting or that more waits then waits was found)
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_wait_for_clock_id_waits (GstHarness * h, guint waits, guint timeout)
+{
+  GstTestClock *testclock = gst_harness_get_testclock (h);
+  gint64 start_time;
+  gboolean ret;
+
+  if (testclock == NULL)
+    return FALSE;
+
+  start_time = g_get_monotonic_time ();
+  while (gst_test_clock_peek_id_count (testclock) < waits) {
+    gint64 time_spent;
+
+    g_usleep (G_USEC_PER_SEC / 1000);
+    time_spent = g_get_monotonic_time () - start_time;
+    if ((time_spent / G_USEC_PER_SEC) > timeout)
+      break;
+  }
+
+  ret = (waits == gst_test_clock_peek_id_count (testclock));
+
+  gst_object_unref (testclock);
+  return ret;
+}
+
+/**
+ * gst_harness_crank_single_clock_wait:
+ * @h: a #GstHarness
+ *
+ * A "crank" consists of three steps:
+ * 1: Wait for a #GstClockID to be registered with the #GstTestClock.
+ * 2: Advance the #GstTestClock to the time the #GstClockID is waiting for.
+ * 3: Release the #GstClockID wait.
+ * Together, this provides an easy way to not have to think about the details
+ * around clocks and time, but still being able to write deterministic tests
+ * that are dependant on this. A "crank" can be though of as the notion of
+ * manually driving the clock forward to its next logical step.
+ *
+ * MT safe.
+ *
+ * Returns: a @gboolean %TRUE if the "crank" was successful, %FALSE if not.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_crank_single_clock_wait (GstHarness * h)
+{
+  GstTestClock *testclock = gst_harness_get_testclock (h);
+  GstClockID res, pending;
+  gboolean ret = FALSE;
+
+  if (G_LIKELY (testclock != NULL)) {
+    gst_test_clock_wait_for_next_pending_id (testclock, &pending);
+
+    gst_test_clock_set_time (testclock, gst_clock_id_get_time (pending));
+    res = gst_test_clock_process_next_clock_id (testclock);
+    if (res == pending) {
+      GST_DEBUG ("cranked time %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (gst_clock_get_time (GST_CLOCK (testclock))));
+      ret = TRUE;
+    } else {
+      GST_WARNING ("testclock next id != pending (%p != %p)", res, pending);
+    }
+
+    gst_clock_id_unref (res);
+    gst_clock_id_unref (pending);
+
+    gst_object_unref (testclock);
+  } else {
+    GST_WARNING ("No testclock on element %s", GST_ELEMENT_NAME (h->element));
+  }
+
+  return ret;
+}
+
+/**
+ * gst_harness_crank_multiple_clock_waits:
+ * @h: a #GstHarness
+ * @waits: a #guint describing the number of #GstClockIDs to crank
+ *
+ * Similar to gst_harness_crank_single_clock_wait, this is the function to use
+ * if your harnessed element(s) are using more then one gst_clock_id_wait.
+ * Failing to do so can (and will) make it racy which #GstClockID you actually
+ * are releasing, where as this function will process all the waits at the
+ * same time, ensuring that one thread can't register another wait before
+ * both are released.
+ *
+ * MT safe.
+ *
+ * Returns: a @gboolean %TRUE if the "crank" was successful, %FALSE if not.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_crank_multiple_clock_waits (GstHarness * h, guint waits)
+{
+  GstTestClock *testclock;
+  GList *pending;
+  guint processed;
+
+  testclock = gst_harness_get_testclock (h);
+  if (testclock == NULL)
+    return FALSE;
+
+  gst_test_clock_wait_for_multiple_pending_ids (testclock, waits, &pending);
+  gst_harness_set_time (h, gst_test_clock_id_list_get_latest_time (pending));
+  processed = gst_test_clock_process_id_list (testclock, pending);
+
+  g_list_free_full (pending, gst_clock_id_unref);
+  gst_object_unref (testclock);
+  return processed == waits;
+}
+
+/**
+ * gst_harness_play:
+ * @h: a #GstHarness
+ *
+ * This will set the harnessed #GstElement to %GST_STATE_PLAYING.
+ * #GstElements without a sink-#GstPad and with the %GST_ELEMENT_FLAG_SOURCE
+ * flag set is concidered a src #GstElement
+ * Non-src #GstElements (like sinks and filters) are automatically set to
+ * playing by the #GstHarness, but src #GstElements are not to avoid them
+ * starting to produce buffers.
+ * Hence, for src #GstElement you will need to call gst_harness_play explicitly.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_play (GstHarness * h)
+{
+  GstState state, pending;
+  gboolean state_change;
+  state_change = gst_element_set_state (h->element, GST_STATE_PLAYING);
+  g_assert_cmpint (GST_STATE_CHANGE_SUCCESS, ==, state_change);
+  state_change = gst_element_get_state (h->element, &state, &pending, 0);
+  g_assert_cmpint (GST_STATE_CHANGE_SUCCESS, ==, state_change);
+  g_assert_cmpint (GST_STATE_PLAYING, ==, state);
+}
+
+/**
+ * gst_harness_set_blocking_push_mode:
+ * @h: a #GstHarness
+ *
+ * Setting this will make the harness block in the chain-function, and
+ * then release when gst_harness_pull or gst_harness_try_pull is called.
+ * Can be useful when wanting to control a src-element that is not implementing
+ * gst_clock_id_wait so it can't be controlled by the #GstTestClock, since
+ * it otherwise would produce buffers as fast as possible.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_blocking_push_mode (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  priv->blocking_push_mode = TRUE;
+}
+
+/**
+ * gst_harness_set_forwarding:
+ * @h: a #GstHarness
+ * @forwarding: a #gboolean to enable/disable forwarding
+ *
+ * As a convenience, a src-harness will forward %GST_EVENT_STREAM_START,
+ * %GST_EVENT_CAPS and %GST_EVENT_SEGMENT to the main-harness if forwarding
+ * is enabled, and forward any sticky-events from the main-harness to
+ * the sink-harness. It will also forward the %GST_QUERY_ALLOCATION.
+ *
+ * If forwarding is disabled, the user will have to either manually push
+ * these events from the src-harness using gst_harness_src_push_event, or
+ * create and push them manually. While this will allow full control and
+ * inspection of these events, for the most cases having forwarding enabled
+ * will be sufficient when writing a test where the src-harness' main function
+ * is providing data for the main-harness.
+ *
+ * Forwarding is enabled by default.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_forwarding (GstHarness * h, gboolean forwarding)
+{
+  GstHarnessPrivate *priv = h->priv;
+  priv->forwarding = forwarding;
+  if (h->src_harness)
+    gst_harness_set_forwarding (h->src_harness, forwarding);
+  if (h->sink_harness)
+    gst_harness_set_forwarding (h->sink_harness, forwarding);
+}
+
+/**
+ * gst_harness_create_buffer:
+ * @h: a #GstHarness
+ * @size: a #gsize specifying the size of the buffer
+ *
+ * Allocates a buffer using a #GstBufferPool if present, or else using the
+ * configured #GstAllocator and #GstAllocationParams
+ *
+ * MT safe.
+ *
+ * Returns: a #GstBuffer of size @size
+ *
+ * Since: 1.6
+ */
+GstBuffer *
+gst_harness_create_buffer (GstHarness * h, gsize size)
+{
+  GstHarnessPrivate *priv = h->priv;
+  GstBuffer *ret = NULL;
+  GstFlowReturn flow;
+
+  if (gst_pad_check_reconfigure (h->srcpad))
+    gst_harness_negotiate (h);
+
+  if (priv->pool) {
+    flow = gst_buffer_pool_acquire_buffer (priv->pool, &ret, NULL);
+    g_assert_cmpint (flow, ==, GST_FLOW_OK);
+    if (gst_buffer_get_size (ret) != size) {
+      GST_DEBUG_OBJECT (h,
+          "use fallback, pool is configured with a different size (%zu != %zu)",
+          size, gst_buffer_get_size (ret));
+      gst_buffer_unref (ret);
+      ret = NULL;
+    }
+  }
+
+  if (!ret)
+    ret =
+        gst_buffer_new_allocate (priv->allocator, size,
+        &priv->allocation_params);
+
+  g_assert (ret != NULL);
+  return ret;
+}
+
+/**
+ * gst_harness_push:
+ * @h: a #GstHarness
+ * @buffer: a #GstBuffer to push
+ *
+ * Pushes a #GstBuffer on the #GstHarness srcpad. The standard way of
+ * interacting with an harnessed element.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstFlowReturn with the result from the push
+ *
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_harness_push (GstHarness * h, GstBuffer * buffer)
+{
+  GstHarnessPrivate *priv = h->priv;
+  g_assert (buffer != NULL);
+  priv->last_push_ts = GST_BUFFER_TIMESTAMP (buffer);
+  return gst_pad_push (h->srcpad, buffer);
+}
+
+/**
+ * gst_harness_pull:
+ * @h: a #GstHarness
+ *
+ * Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. The pull
+ * will timeout in 60 seconds. This is the standard way of getting a buffer
+ * from a harnessed #GstElement.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstBuffer or %NULL if timed out.
+ *
+ * Since: 1.6
+ */
+GstBuffer *
+gst_harness_pull (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+
+  if (priv->blocking_push_mode) {
+    g_mutex_lock (&priv->blocking_push_mutex);
+    g_cond_signal (&priv->blocking_push_cond);
+    g_mutex_unlock (&priv->blocking_push_mutex);
+  }
+
+  return (GstBuffer *) g_async_queue_timeout_pop (priv->buffer_queue,
+      G_USEC_PER_SEC * 60);
+}
+
+/**
+ * gst_harness_try_pull:
+ * @h: a #GstHarness
+ *
+ * Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. Unlike
+ * gst_harness_pull this will not wait for any buffers if not any are present,
+ * and return %NULL straight away.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstBuffer or %NULL if no buffers are present in the #GAsyncQueue
+ *
+ * Since: 1.6
+ */
+GstBuffer *
+gst_harness_try_pull (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+
+  if (priv->blocking_push_mode) {
+    g_mutex_lock (&priv->blocking_push_mutex);
+    g_cond_signal (&priv->blocking_push_cond);
+    g_mutex_unlock (&priv->blocking_push_mutex);
+  }
+
+  return (GstBuffer *) g_async_queue_try_pop (priv->buffer_queue);
+}
+
+/**
+ * gst_harness_push_and_pull:
+ * @h: a #GstHarness
+ * @buffer: a #GstBuffer to push
+ *
+ * Basically a gst_harness_push and a gst_harness_pull in one line. Reflects
+ * the fact that you often want to do exactly this in your test: Push one buffer
+ * in, and inspect the outcome.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstBuffer or %NULL if timed out.
+ *
+ * Since: 1.6
+ */
+GstBuffer *
+gst_harness_push_and_pull (GstHarness * h, GstBuffer * buffer)
+{
+  gst_harness_push (h, buffer);
+  return gst_harness_pull (h);
+}
+
+/**
+ * gst_harness_buffers_received:
+ * @h: a #GstHarness
+ *
+ * The total number of #GstBuffers that has arrived on the #GstHarness sinkpad.
+ * This number includes buffers that have been dropped as well as buffers
+ * that have already been pulled out.
+ *
+ * MT safe.
+ *
+ * Returns: a #guint number of buffers received
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_buffers_received (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return g_atomic_int_get (&priv->recv_buffers);
+}
+
+/**
+ * gst_harness_buffers_in_queue:
+ * @h: a #GstHarness
+ *
+ * The number of #GstBuffers currently in the #GstHarness sinkpad #GAsyncQueue
+ *
+ * MT safe.
+ *
+ * Returns: a #guint number of buffers in the queue
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_buffers_in_queue (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return g_async_queue_length (priv->buffer_queue);
+}
+
+/**
+ * gst_harness_set_drop_buffers:
+ * @h: a #GstHarness
+ * @drop_buffers: a #gboolean specifying to drop outgoing buffers or not
+ *
+ * When set to %TRUE, instead of placing the buffers arriving from the harnessed
+ * #GstElement inside the sinkpads #GAsyncQueue, they are instead unreffed.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_drop_buffers (GstHarness * h, gboolean drop_buffers)
+{
+  GstHarnessPrivate *priv = h->priv;
+  priv->drop_buffers = drop_buffers;
+}
+
+/**
+ * gst_harness_dump_to_file:
+ * @h: a #GstHarness
+ * @filename: a #gchar with a the name of a file
+ *
+ * Allows you to dump the #GstBuffers the #GstHarness sinkpad #GAsyncQueue
+ * to a file.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_dump_to_file (GstHarness * h, const gchar * filename)
+{
+  GstHarnessPrivate *priv = h->priv;
+  FILE *fd;
+  GstBuffer *buf;
+  fd = fopen (filename, "wb");
+  g_assert (fd);
+
+  while ((buf = g_async_queue_try_pop (priv->buffer_queue))) {
+    GstMapInfo info;
+    gst_buffer_map (buf, &info, GST_MAP_READ);
+    fwrite (info.data, 1, info.size, fd);
+    gst_buffer_unmap (buf, &info);
+    gst_buffer_unref (buf);
+  }
+
+  fflush (fd);
+  fclose (fd);
+}
+
+/**
+ * gst_harness_get_last_pushed_timestamp:
+ * @h: a #GstHarness
+ *
+ * Get the timestamp of the last #GstBuffer pushed on the #GstHarness srcpad,
+ * typically with gst_harness_push or gst_harness_push_from_src.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstClockTime with the timestamp or %GST_CLOCK_TIME_NONE if no
+ * #GstBuffer has been pushed on the #GstHarness srcpad
+ *
+ * Since: 1.6
+ */
+GstClockTime
+gst_harness_get_last_pushed_timestamp (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return priv->last_push_ts;
+}
+
+/**
+ * gst_harness_push_event:
+ * @h: a #GstHarness
+ * @event: a #GstEvent to push
+ *
+ * Pushes an #GstEvent on the #GstHarness srcpad.
+ *
+ * MT safe.
+ *
+ * Returns: a #gboolean with the result from the push
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_push_event (GstHarness * h, GstEvent * event)
+{
+  return gst_pad_push_event (h->srcpad, event);
+}
+
+/**
+ * gst_harness_pull_event:
+ * @h: a #GstHarness
+ *
+ * Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad.
+ * Timeouts after 60 seconds similar to gst_harness_pull.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstEvent or %NULL if timed out.
+ *
+ * Since: 1.6
+ */
+GstEvent *
+gst_harness_pull_event (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return (GstEvent *) g_async_queue_timeout_pop (priv->sink_event_queue,
+      G_USEC_PER_SEC * 60);
+}
+
+/**
+ * gst_harness_try_pull_event:
+ * @h: a #GstHarness
+ *
+ * Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad.
+ * See gst_harness_try_pull for details.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue
+ *
+ * Since: 1.6
+ */
+GstEvent *
+gst_harness_try_pull_event (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return (GstEvent *) g_async_queue_try_pop (priv->sink_event_queue);
+}
+
+/**
+ * gst_harness_events_received:
+ * @h: a #GstHarness
+ *
+ * The total number of #GstEvents that has arrived on the #GstHarness sinkpad
+ * This number includes events handled by the harness as well as events
+ * that have already been pulled out.
+ *
+ * MT safe.
+ *
+ * Returns: a #guint number of events received
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_events_received (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return g_atomic_int_get (&priv->recv_events);
+}
+
+/**
+ * gst_harness_events_in_queue:
+ * @h: a #GstHarness
+ *
+ * The number of #GstEvents currently in the #GstHarness sinkpad #GAsyncQueue
+ *
+ * MT safe.
+ *
+ * Returns: a #guint number of events in the queue
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_events_in_queue (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return g_async_queue_length (priv->sink_event_queue);
+}
+
+/**
+ * gst_harness_push_upstream_event:
+ * @h: a #GstHarness
+ * @event: a #GstEvent to push
+ *
+ * Pushes an #GstEvent on the #GstHarness sinkpad.
+ *
+ * MT safe.
+ *
+ * Returns: a #gboolean with the result from the push
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_push_upstream_event (GstHarness * h, GstEvent * event)
+{
+  g_return_val_if_fail (event != NULL, FALSE);
+  g_return_val_if_fail (GST_EVENT_IS_UPSTREAM (event), FALSE);
+
+  return gst_pad_push_event (h->sinkpad, event);
+}
+
+/**
+ * gst_harness_pull_upstream_event:
+ * @h: a #GstHarness
+ *
+ * Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad.
+ * Timeouts after 60 seconds similar to gst_harness_pull.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstEvent or %NULL if timed out.
+ *
+ * Since: 1.6
+ */
+GstEvent *
+gst_harness_pull_upstream_event (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return (GstEvent *) g_async_queue_timeout_pop (priv->src_event_queue,
+      G_USEC_PER_SEC * 60);
+}
+
+/**
+ * gst_harness_try_pull_upstream_event:
+ * @h: a #GstHarness
+ *
+ * Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad.
+ * See gst_harness_try_pull for details.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue
+ *
+ * Since: 1.6
+ */
+GstEvent *
+gst_harness_try_pull_upstream_event (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return (GstEvent *) g_async_queue_try_pop (priv->src_event_queue);
+}
+
+/**
+ * gst_harness_upstream_events_received:
+ * @h: a #GstHarness
+ *
+ * The total number of #GstEvents that has arrived on the #GstHarness srcpad
+ * This number includes events handled by the harness as well as events
+ * that have already been pulled out.
+ *
+ * MT safe.
+ *
+ * Returns: a #guint number of events received
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_upstream_events_received (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return g_atomic_int_get (&priv->recv_upstream_events);
+}
+
+/**
+ * gst_harness_upstream_events_in_queue:
+ * @h: a #GstHarness
+ *
+ * The number of #GstEvents currently in the #GstHarness srcpad #GAsyncQueue
+ *
+ * MT safe.
+ *
+ * Returns: a #guint number of events in the queue
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_upstream_events_in_queue (GstHarness * h)
+{
+  GstHarnessPrivate *priv = h->priv;
+  return g_async_queue_length (priv->src_event_queue);
+}
+
+/**
+ * gst_harness_query_latency:
+ * @h: a #GstHarness
+ *
+ * Get the min latency reported by any harnessed #GstElement.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstClockTime with min latency
+ *
+ * Since: 1.6
+ */
+GstClockTime
+gst_harness_query_latency (GstHarness * h)
+{
+  GstQuery *query;
+  gboolean is_live;
+  GstClockTime min = GST_CLOCK_TIME_NONE;
+  GstClockTime max;
+
+  query = gst_query_new_latency ();
+
+  if (gst_pad_peer_query (h->sinkpad, query)) {
+    gst_query_parse_latency (query, &is_live, &min, &max);
+  }
+  gst_query_unref (query);
+
+  return min;
+}
+
+/**
+ * gst_harness_set_upstream_latency:
+ * @h: a #GstHarness
+ * @latency: a #GstClockTime specifying the latency
+ *
+ * Sets the min latency reported by #GstHarness when receiving a latency-query
+ *
+ * MT safe.
+ *
+ * Returns: a #GstClockTime with min latency
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_upstream_latency (GstHarness * h, GstClockTime latency)
+{
+  GstHarnessPrivate *priv = h->priv;
+  priv->latency_min = latency;
+}
+
+/**
+ * gst_harness_get_allocator:
+ * @h: a #GstHarness
+ * @allocator: (out) (allow-none) (transfer none): the #GstAllocator used
+ * @params: (out) (allow-none) (transfer full): the #GstAllocationParams of
+ *   @allocator
+ *
+ * Gets the @allocator and its @params that has been decided to use after an
+ * allocation query.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_get_allocator (GstHarness * h, GstAllocator ** allocator,
+    GstAllocationParams * params)
+{
+  GstHarnessPrivate *priv = h->priv;
+  if (allocator)
+    *allocator = priv->allocator;
+  if (params)
+    *params = priv->allocation_params;
+}
+
+
+/**
+ * gst_harness_set_propose_allocator:
+ * @h: a #GstHarness
+ * @allocator: (allow-none) (transfer full): a #GstAllocator
+ * @params: (allow-none) (transfer none): a #GstAllocationParams
+ *
+ * Sets the @allocator and @params to propose when receiving an allocation
+ * query.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set_propose_allocator (GstHarness * h, GstAllocator * allocator,
+    const GstAllocationParams * params)
+{
+  GstHarnessPrivate *priv = h->priv;
+  if (allocator)
+    priv->propose_allocator = allocator;
+  if (params)
+    priv->propose_allocation_params = *params;
+}
+
+/**
+ * gst_harness_add_src_harness:
+ * @h: a #GstHarness
+ * @src_harness: (transfer full): a #GstHarness to be added as a src-harness.
+ * @has_clock_wait: a #gboolean specifying if the #GstElement uses
+ * gst_clock_wait_id internally.
+ *
+ * A src-harness is a great way of providing the #GstHarness with data.
+ * By adding a src-type #GstElement, it is then easy to use functions like
+ * gst_harness_push_from_src or gst_harness_src_crank_and_push_many
+ * to provide your harnessed element with input. The @has_clock_wait variable
+ * is a greate way to control you src-element with, in that you can have it
+ * produce a buffer for you by simply cranking the clock, and not have it
+ * spin out of control producing buffers as fast as possible.
+ *
+ * If a src-harness already exists it will be replaced.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_src_harness (GstHarness * h,
+    GstHarness * src_harness, gboolean has_clock_wait)
+{
+  if (h->src_harness)
+    gst_harness_teardown (h->src_harness);
+  h->src_harness = src_harness;
+
+  h->src_harness->priv->sink_forward_pad = gst_object_ref (h->srcpad);
+  gst_harness_use_testclock (h->src_harness);
+  h->src_harness->priv->has_clock_wait = has_clock_wait;
+  gst_harness_set_forwarding (h->src_harness, h->priv->forwarding);
+}
+
+/**
+ * gst_harness_add_src:
+ * @h: a #GstHarness
+ * @src_element_name: a #gchar with the name of a #GstElement
+ * @has_clock_wait: a #gboolean specifying if the #GstElement uses
+ * gst_clock_wait_id internally.
+ *
+ * Similar to gst_harness_add_src_harness, this is a convenience to
+ * directly create a src-harness using the @src_element_name name specified.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_src (GstHarness * h,
+    const gchar * src_element_name, gboolean has_clock_wait)
+{
+  GstHarness *src_harness = gst_harness_new (src_element_name);
+  gst_harness_add_src_harness (h, src_harness, has_clock_wait);
+}
+
+/**
+ * gst_harness_add_src_parse:
+ * @h: a #GstHarness
+ * @launchline: a #gchar describing a gst-launch type line
+ * @has_clock_wait: a #gboolean specifying if the #GstElement uses
+ * gst_clock_wait_id internally.
+ *
+ * Similar to gst_harness_add_src, this allows you to specify a launch-line,
+ * which can be useful for both having more then one #GstElement acting as your
+ * src (Like a src producing raw buffers, and then an encoder, providing encoded
+ * data), but also by allowing you to set properties like "is-live" directly on
+ * the elements.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_src_parse (GstHarness * h,
+    const gchar * launchline, gboolean has_clock_wait)
+{
+  GstHarness *src_harness = gst_harness_new_parse (launchline);
+  gst_harness_add_src_harness (h, src_harness, has_clock_wait);
+}
+
+/**
+ * gst_harness_push_from_src:
+ * @h: a #GstHarness
+ *
+ * Transfer data from the src-#GstHarness to the main-#GstHarness. It consists
+ * of 4 steps:
+ * 1: Make sure the src is started. (see: gst_harness_play)
+ * 2: Crank the clock (see: gst_harness_crank_single_clock_wait)
+ * 3: Pull a #GstBuffer from the src-#GstHarness (see: gst_harness_pull)
+ * 4: Push the same #GstBuffer into the main-#GstHarness (see: gst_harness_push)
+ *
+ * MT safe.
+ *
+ * Returns: a #GstFlowReturn with the result of the push
+ *
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_harness_push_from_src (GstHarness * h)
+{
+  GstBuffer *buf;
+  gboolean crank;
+
+  g_assert (h->src_harness);
+
+  /* FIXME: this *is* the right time to start the src,
+     but maybe a flag so we don't keep telling it to play? */
+  gst_harness_play (h->src_harness);
+
+  if (h->src_harness->priv->has_clock_wait) {
+    crank = gst_harness_crank_single_clock_wait (h->src_harness);
+    g_assert (crank);
+  }
+
+  buf = gst_harness_pull (h->src_harness);
+  g_assert (buf != NULL);
+  return gst_harness_push (h, buf);
+}
+
+/**
+ * gst_harness_src_crank_and_push_many:
+ * @h: a #GstHarness
+ * @cranks: a #gint with the number of calls to gst_harness_crank_single_clock_wait
+ * @pushes: a #gint with the number of calls to gst_harness_push
+ *
+ * Transfer data from the src-#GstHarness to the main-#GstHarness. Similar to
+ * gst_harness_push_from_src, this variant allows you to specify how many cranks
+ * and how many pushes to perform. This can be useful for both moving a lot
+ * of data at the same time, as well as cases when one crank does not equal one
+ * buffer to push and v.v.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstFlowReturn with the result of the push
+ *
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_harness_src_crank_and_push_many (GstHarness * h, gint cranks, gint pushes)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  gboolean crank;
+
+  g_assert (h->src_harness);
+  gst_harness_play (h->src_harness);
+
+  for (int i = 0; i < cranks; i++) {
+    crank = gst_harness_crank_single_clock_wait (h->src_harness);
+    g_assert (crank);
+  }
+
+  for (int i = 0; i < pushes; i++) {
+    GstBuffer *buf;
+    buf = gst_harness_pull (h->src_harness);
+    g_assert (buf != NULL);
+    ret = gst_harness_push (h, buf);
+    if (ret != GST_FLOW_OK)
+      break;
+  }
+
+  return ret;
+}
+
+/**
+ * gst_harness_src_push_event:
+ * @h: a #GstHarness
+ *
+ * Similar to what gst_harness_src_push does with #GstBuffers, this transfers
+ * a #GstEvent from the src-#GstHarness to the main-#GstHarness. Note that
+ * some #GstEvents are being transferred automagically. Look at sink_forward_pad
+ * for details.
+ *
+ * MT safe.
+ *
+ * Returns: a #gboolean with the result of the push
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_harness_src_push_event (GstHarness * h)
+{
+  return gst_harness_push_event (h, gst_harness_pull_event (h->src_harness));
+}
+
+
+static gboolean
+forward_sticky_events (GstPad * pad, GstEvent ** ev, gpointer user_data)
+{
+  GstHarness *h = user_data;
+  return gst_pad_push_event (h->priv->sink_forward_pad, gst_event_ref (*ev));
+}
+
+/**
+ * gst_harness_add_sink_harness:
+ * @h: a #GstHarness
+ * @sink_harness: (transfer full): a #GstHarness to be added as a sink-harness.
+ *
+ * Similar to gst_harness_add_src, this allows you to send the data coming out
+ * of your harnessed #GstElement to a sink-element, allowing to test different
+ * responses the element output might create in sink elements. An example might
+ * be an existing sink providing some analytical data on the input it receives that
+ * can be useful to your testing. If the goal is to test a sink-element itself,
+ * this is better acheived using gst_harness_new directly on the sink.
+ *
+ * If a sink-harness already exists it will be replaced.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_sink_harness (GstHarness * h, GstHarness * sink_harness)
+{
+  GstHarnessPrivate *priv = h->priv;
+
+  if (h->sink_harness) {
+    gst_harness_teardown (h->sink_harness);
+    gst_object_unref (priv->sink_forward_pad);
+  }
+  h->sink_harness = sink_harness;
+  priv->sink_forward_pad = gst_object_ref (h->sink_harness->srcpad);
+  gst_harness_use_testclock (h->sink_harness);
+  if (priv->forwarding)
+    gst_pad_sticky_events_foreach (h->sinkpad, forward_sticky_events, h);
+  gst_harness_set_forwarding (h->sink_harness, priv->forwarding);
+}
+
+/**
+ * gst_harness_add_sink:
+ * @h: a #GstHarness
+ * @sink_element_name: a #gchar with the name of a #GstElement
+ *
+ * Similar to gst_harness_add_sink_harness, this is a convenience to
+ * directly create a sink-harness using the @sink_element_name name specified.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_sink (GstHarness * h, const gchar * sink_element_name)
+{
+  GstHarness *sink_harness = gst_harness_new (sink_element_name);
+  gst_harness_add_sink_harness (h, sink_harness);
+}
+
+/**
+ * gst_harness_add_sink_parse:
+ * @h: a #GstHarness
+ * @launchline: a #gchar with the name of a #GstElement
+ *
+ * Similar to gst_harness_add_sink, this allows you to specify a launch-line
+ * instead of just an element name. See gst_harness_add_src_parse for details.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_sink_parse (GstHarness * h, const gchar * launchline)
+{
+  GstHarness *sink_harness = gst_harness_new_parse (launchline);
+  gst_harness_add_sink_harness (h, sink_harness);
+}
+
+/**
+ * gst_harness_push_to_sink:
+ * @h: a #GstHarness
+ *
+ * Transfer one #GstBuffer from the main-#GstHarness to the sink-#GstHarness.
+ * See gst_harness_push_from_src for details.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstFlowReturn with the result of the push
+ *
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_harness_push_to_sink (GstHarness * h)
+{
+  GstBuffer *buf;
+  g_assert (h->sink_harness);
+  buf = gst_harness_pull (h);
+  g_assert (buf != NULL);
+  return gst_harness_push (h->sink_harness, buf);
+}
+
+/**
+ * gst_harness_sink_push_many:
+ * @h: a #GstHarness
+ * @pushes: a #gint with the number of calls to gst_harness_push_to_sink
+ *
+ * Convenience that calls gst_harness_push_to_sink @pushes number of times.
+ * Will abort the pushing if any one push fails.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstFlowReturn with the result of the push
+ *
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_harness_sink_push_many (GstHarness * h, gint pushes)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  g_assert (h->sink_harness);
+  for (int i = 0; i < pushes; i++) {
+    ret = gst_harness_push_to_sink (h);
+    if (ret != GST_FLOW_OK)
+      break;
+  }
+  return ret;
+}
+
+/**
+ * gst_harness_find_element:
+ * @h: a #GstHarness
+ * @element_name: a #gchar with a #GstElementFactory name
+ *
+ * Most useful in conjunction with gst_harness_new_parse, this will scan the
+ * #GstElements inside the #GstHarness, and check if any of them matches
+ * @element_name. Typical usecase being that you need to access one of the
+ * harnessed elements for properties and/or signals.
+ *
+ * MT safe.
+ *
+ * Returns: (transfer full) (allow-none): a #GstElement or %NULL if not found
+ *
+ * Since: 1.6
+ */
+GstElement *
+gst_harness_find_element (GstHarness * h, const gchar * element_name)
+{
+  gboolean done = FALSE;
+  GstIterator *iter;
+  GValue data = G_VALUE_INIT;
+
+  iter = gst_bin_iterate_elements (GST_BIN (h->element));
+  done = FALSE;
+
+  while (!done) {
+    switch (gst_iterator_next (iter, &data)) {
+      case GST_ITERATOR_OK:
+      {
+        GstElement *element = g_value_get_object (&data);
+        GstPluginFeature *feature =
+            GST_PLUGIN_FEATURE (gst_element_get_factory (element));
+        if (!strcmp (element_name, gst_plugin_feature_get_name (feature))) {
+          gst_iterator_free (iter);
+          return element;
+        }
+        g_value_reset (&data);
+        break;
+      }
+      case GST_ITERATOR_RESYNC:
+        gst_iterator_resync (iter);
+        break;
+      case GST_ITERATOR_ERROR:
+      case GST_ITERATOR_DONE:
+        done = TRUE;
+        break;
+    }
+  }
+  gst_iterator_free (iter);
+
+  return NULL;
+}
+
+/**
+ * gst_harness_set:
+ * @h: a #GstHarness
+ * @element_name: a #gchar with a #GstElementFactory name
+ * @first_property_name: a #gchar with the first property name
+ * @...: value for the first property, followed optionally by more
+ *  name/value pairs, followed by %NULL
+ *
+ * A convenience function to allows you to call g_object_set on a #GstElement
+ * that are residing inside the #GstHarness, by using normal g_object_set
+ * syntax.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_set (GstHarness * h,
+    const gchar * element_name, const gchar * first_property_name, ...)
+{
+  va_list var_args;
+  GstElement *element = gst_harness_find_element (h, element_name);
+  va_start (var_args, first_property_name);
+  g_object_set_valist (G_OBJECT (element), first_property_name, var_args);
+  va_end (var_args);
+  gst_object_unref (element);
+}
+
+/**
+ * gst_harness_get:
+ * @h: a #GstHarness
+ * @element_name: a #gchar with a #GstElementFactory name
+ * @first_property_name: a #gchar with the first property name
+ * @...: return location for the first property, followed optionally by more
+ *  name/return location pairs, followed by %NULL
+ *
+ * A convenience function to allows you to call g_object_get on a #GstElement
+ * that are residing inside the #GstHarness, by using normal g_object_get
+ * syntax.
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_get (GstHarness * h,
+    const gchar * element_name, const gchar * first_property_name, ...)
+{
+  va_list var_args;
+  GstElement *element = gst_harness_find_element (h, element_name);
+  va_start (var_args, first_property_name);
+  g_object_get_valist (G_OBJECT (element), first_property_name, var_args);
+  va_end (var_args);
+  gst_object_unref (element);
+}
+
+/**
+ * gst_harness_add_probe:
+ * @h: a #GstHarness
+ * @element_name: a #gchar with a #GstElementFactory name
+ * @pad_name: a #gchar with the name of the pad to attach the probe to
+ * @mask: a #GstPadProbeType (see gst_pad_add_probe)
+ * @callback: a #GstPadProbeCallback (see gst_pad_add_probe)
+ * @user_data: a #gpointer (see gst_pad_add_probe)
+ * @destroy_data: a #GDestroyNotify (see gst_pad_add_probe)
+ *
+ * A convenience function to allows you to call gst_pad_add_probe on a
+ * #GstPad of a #GstElement that are residing inside the #GstHarness,
+ * by using normal gst_pad_add_probe syntax
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+void
+gst_harness_add_probe (GstHarness * h,
+    const gchar * element_name, const gchar * pad_name, GstPadProbeType mask,
+    GstPadProbeCallback callback, gpointer user_data,
+    GDestroyNotify destroy_data)
+{
+  GstElement *element = gst_harness_find_element (h, element_name);
+  GstPad *pad = gst_element_get_static_pad (element, pad_name);
+  gst_pad_add_probe (pad, mask, callback, user_data, destroy_data);
+  gst_object_unref (pad);
+  gst_object_unref (element);
+}
+
+/******************************************************************************/
+/*       STRESS                                                               */
+/******************************************************************************/
+struct _GstHarnessThread
+{
+  GstHarness *h;
+  GThread *thread;
+  gboolean running;
+
+  gulong sleep;
+
+  GDestroyNotify freefunc;
+};
+
+typedef struct
+{
+  GstHarnessThread t;
+
+  GFunc init;
+  GFunc callback;
+  gpointer data;
+} GstHarnessCustomThread;
+
+typedef struct
+{
+  GstHarnessThread t;
+
+  GstCaps *caps;
+  GstSegment segment;
+  GstHarnessPrepareBufferFunc func;
+  gpointer data;
+  GDestroyNotify notify;
+} GstHarnessPushBufferThread;
+
+typedef struct
+{
+  GstHarnessThread t;
+
+  GstEvent *event;
+} GstHarnessPushEventThread;
+
+typedef struct
+{
+  GstHarnessThread t;
+
+  gchar *name;
+  GValue value;
+} GstHarnessPropThread;
+
+typedef struct
+{
+  GstHarnessThread t;
+
+  GstPadTemplate *templ;
+  gchar *name;
+  GstCaps *caps;
+  gboolean release;
+
+  GSList *pads;
+} GstHarnessReqPadThread;
+
+static void
+gst_harness_thread_init (GstHarnessThread * t, GDestroyNotify freefunc,
+    GstHarness * h, gulong sleep)
+{
+  t->freefunc = freefunc;
+  t->h = h;
+  t->sleep = sleep;
+
+  g_ptr_array_add (h->priv->stress, t);
+}
+
+static void
+gst_harness_thread_free (GstHarnessThread * t)
+{
+  g_slice_free (GstHarnessThread, t);
+}
+
+static void
+gst_harness_custom_thread_free (GstHarnessCustomThread * t)
+{
+  g_slice_free (GstHarnessCustomThread, t);
+}
+
+static void
+gst_harness_push_buffer_thread_free (GstHarnessPushBufferThread * t)
+{
+  if (t != NULL) {
+    gst_caps_replace (&t->caps, NULL);
+    if (t->notify != NULL)
+      t->notify (t->data);
+    g_slice_free (GstHarnessPushBufferThread, t);
+  }
+}
+
+static void
+gst_harness_push_event_thread_free (GstHarnessPushEventThread * t)
+{
+  if (t != NULL) {
+    gst_event_replace (&t->event, NULL);
+    g_slice_free (GstHarnessPushEventThread, t);
+  }
+}
+
+static void
+gst_harness_property_thread_free (GstHarnessPropThread * t)
+{
+  if (t != NULL) {
+    g_free (t->name);
+    g_value_unset (&t->value);
+    g_slice_free (GstHarnessPropThread, t);
+  }
+}
+
+static void
+gst_harness_requestpad_release (GstPad * pad, GstElement * element)
+{
+  gst_element_release_request_pad (element, pad);
+  gst_object_unref (pad);
+}
+
+static void
+gst_harness_requestpad_release_pads (GstHarnessReqPadThread * rpt)
+{
+  g_slist_foreach (rpt->pads, (GFunc) gst_harness_requestpad_release,
+      rpt->t.h->element);
+  g_slist_free (rpt->pads);
+  rpt->pads = NULL;
+}
+
+static void
+gst_harness_requestpad_thread_free (GstHarnessReqPadThread * t)
+{
+  if (t != NULL) {
+    gst_object_replace ((GstObject **) & t->templ, NULL);
+    g_free (t->name);
+    gst_caps_replace (&t->caps, NULL);
+
+    gst_harness_requestpad_release_pads (t);
+    g_slice_free (GstHarnessReqPadThread, t);
+  }
+}
+
+#define GST_HARNESS_THREAD_START(ID, t)                                        \
+  (((GstHarnessThread *)t)->running = TRUE,                                    \
+  ((GstHarnessThread *)t)->thread = g_thread_new (                             \
+      "gst-harness-stress-"G_STRINGIFY(ID),                                    \
+      (GThreadFunc)gst_harness_stress_##ID##_func, t))
+#define GST_HARNESS_THREAD_END(t)                                              \
+   (t->running = FALSE,                                                        \
+   GPOINTER_TO_UINT (g_thread_join (t->thread)))
+
+static void
+gst_harness_stress_free (GstHarnessThread * t)
+{
+  if (t != NULL && t->freefunc != NULL)
+    t->freefunc (t);
+}
+
+static gpointer
+gst_harness_stress_custom_func (GstHarnessThread * t)
+{
+  GstHarnessCustomThread *ct = (GstHarnessCustomThread *) t;
+  guint count = 0;
+
+  if (ct->init != NULL)
+    ct->init (ct, ct->data);
+
+  while (t->running) {
+    ct->callback (ct, ct->data);
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+
+static gpointer
+gst_harness_stress_statechange_func (GstHarnessThread * t)
+{
+  guint count = 0;
+
+  while (t->running) {
+    GstClock *clock = gst_element_get_clock (t->h->element);
+    GstIterator *it;
+    gboolean done = FALSE;
+    gboolean change;
+
+    change = gst_element_set_state (t->h->element, GST_STATE_NULL);
+    g_assert (change == GST_STATE_CHANGE_SUCCESS);
+    g_thread_yield ();
+
+    it = gst_element_iterate_sink_pads (t->h->element);
+    while (!done) {
+      GValue item = G_VALUE_INIT;
+      switch (gst_iterator_next (it, &item)) {
+        case GST_ITERATOR_OK:
+        {
+          GstPad *sinkpad = g_value_get_object (&item);
+          GstPad *srcpad = gst_pad_get_peer (sinkpad);
+          if (srcpad != NULL) {
+            gst_pad_unlink (srcpad, sinkpad);
+            gst_pad_link (srcpad, sinkpad);
+            gst_object_unref (srcpad);
+          }
+          g_value_reset (&item);
+          break;
+        }
+        case GST_ITERATOR_RESYNC:
+          gst_iterator_resync (it);
+          break;
+        case GST_ITERATOR_ERROR:
+          g_assert_not_reached ();
+        case GST_ITERATOR_DONE:
+          done = TRUE;
+          break;
+      }
+      g_value_unset (&item);
+    }
+    gst_iterator_free (it);
+
+    if (clock != NULL) {
+      gst_element_set_clock (t->h->element, clock);
+      gst_object_unref (clock);
+    }
+    change = gst_element_set_state (t->h->element, GST_STATE_PLAYING);
+    g_assert (change == GST_STATE_CHANGE_SUCCESS);
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+static gpointer
+gst_harness_stress_buffer_func (GstHarnessThread * t)
+{
+  GstHarnessPushBufferThread *pt = (GstHarnessPushBufferThread *) t;
+  guint count = 0;
+  gchar *sid;
+  gboolean handled;
+
+  /* Push stream start, caps and segment events */
+  sid = g_strdup_printf ("%s-%p", GST_OBJECT_NAME (t->h->element), t->h);
+  handled = gst_pad_push_event (t->h->srcpad, gst_event_new_stream_start (sid));
+  g_assert (handled);
+  g_free (sid);
+  handled = gst_pad_push_event (t->h->srcpad, gst_event_new_caps (pt->caps));
+  g_assert (handled);
+  handled = gst_pad_push_event (t->h->srcpad,
+      gst_event_new_segment (&pt->segment));
+  g_assert (handled);
+
+  while (t->running) {
+    gst_harness_push (t->h, pt->func (t->h, pt->data));
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+static gpointer
+gst_harness_stress_event_func (GstHarnessThread * t)
+{
+  GstHarnessPushEventThread *pet = (GstHarnessPushEventThread *) t;
+  guint count = 0;
+
+  while (t->running) {
+    gst_harness_push_event (t->h, gst_event_ref (pet->event));
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+static gpointer
+gst_harness_stress_upstream_event_func (GstHarnessThread * t)
+{
+  GstHarnessPushEventThread *pet = (GstHarnessPushEventThread *) t;
+  guint count = 0;
+
+  while (t->running) {
+    gst_harness_push_upstream_event (t->h, gst_event_ref (pet->event));
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+static gpointer
+gst_harness_stress_property_func (GstHarnessThread * t)
+{
+  GstHarnessPropThread *pt = (GstHarnessPropThread *) t;
+  guint count = 0;
+
+  while (t->running) {
+    GValue value = G_VALUE_INIT;
+
+    g_object_set_property (G_OBJECT (t->h->element), pt->name, &pt->value);
+
+    g_value_init (&value, G_VALUE_TYPE (&pt->value));
+    g_object_get_property (G_OBJECT (t->h->element), pt->name, &value);
+    g_value_reset (&value);
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+static gpointer
+gst_harness_stress_requestpad_func (GstHarnessThread * t)
+{
+  GstHarnessReqPadThread *rpt = (GstHarnessReqPadThread *) t;
+  guint count = 0;
+
+  while (t->running) {
+    GstPad *reqpad;
+
+    if (rpt->release)
+      gst_harness_requestpad_release_pads (rpt);
+
+    g_thread_yield ();
+
+    reqpad = gst_element_request_pad (t->h->element,
+        rpt->templ, rpt->name, rpt->caps);
+
+    g_assert (reqpad != NULL);
+
+    rpt->pads = g_slist_prepend (rpt->pads, reqpad);
+
+    count++;
+    g_usleep (t->sleep);
+  }
+  return GUINT_TO_POINTER (count);
+}
+
+/**
+ * gst_harness_stress_thread_stop:
+ * @t: a #GstHarnessThread
+ *
+ * Stop the running #GstHarnessThread
+ *
+ * MT safe.
+ *
+ * Since: 1.6
+ */
+guint
+gst_harness_stress_thread_stop (GstHarnessThread * t)
+{
+  guint ret;
+
+  g_return_val_if_fail (t != NULL, 0);
+
+  ret = GST_HARNESS_THREAD_END (t);
+  g_ptr_array_remove (t->h->priv->stress, t);
+  return ret;
+}
+
+/**
+ * gst_harness_stress_custom_start: (skip)
+ * @h: a #GstHarness
+ * @init: (allow-none): a #GFunc that is called initially and only once
+ * @callback: a #GFunc that is called as often as possible
+ * @data: a #gpointer with custom data to pass to the @callback function
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each call to the @callback
+ *
+ * Start a custom stress-thread that will call your @callback for every
+ * iteration allowing you to do something nasty.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_custom_start (GstHarness * h,
+    GFunc init, GFunc callback, gpointer data, gulong sleep)
+{
+  GstHarnessCustomThread *t = g_slice_new0 (GstHarnessCustomThread);
+  gst_harness_thread_init (&t->t,
+      (GDestroyNotify) gst_harness_custom_thread_free, h, sleep);
+
+  t->init = init;
+  t->callback = callback;
+  t->data = data;
+
+  GST_HARNESS_THREAD_START (custom, t);
+  return &t->t;
+}
+
+/**
+ * gst_harness_stress_statechange_start_full: (skip)
+ * @h: a #GstHarness
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each state-change
+ *
+ * Change the state of your harnessed #GstElement from NULL to PLAYING and
+ * back again, only pausing for @sleep microseconds every time.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_statechange_start_full (GstHarness * h, gulong sleep)
+{
+  GstHarnessThread *t = g_slice_new0 (GstHarnessThread);
+  gst_harness_thread_init (t,
+      (GDestroyNotify) gst_harness_thread_free, h, sleep);
+  GST_HARNESS_THREAD_START (statechange, t);
+  return t;
+}
+
+static GstBuffer *
+gst_harness_ref_buffer (GstHarness * h, gpointer data)
+{
+  (void) h;
+  return gst_buffer_ref (GST_BUFFER_CAST (data));
+}
+
+/**
+ * gst_harness_stress_push_buffer_start_full: (skip)
+ * @h: a #GstHarness
+ * @caps: a #GstCaps for the #GstBuffer
+ * @segment: a #GstSegment
+ * @buf: a #GstBuffer to push
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each call to gst_pad_push
+ *
+ * Push a #GstBuffer in intervals of @sleep microseconds.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_push_buffer_start_full (GstHarness * h,
+    GstCaps * caps, const GstSegment * segment, GstBuffer * buf, gulong sleep)
+{
+  return gst_harness_stress_push_buffer_with_cb_start_full (h, caps, segment,
+      gst_harness_ref_buffer, gst_buffer_ref (buf),
+      (GDestroyNotify) gst_buffer_unref, sleep);
+}
+
+/**
+ * gst_harness_stress_push_buffer_with_cb_start_full: (skip)
+ * @h: a #GstHarness
+ * @caps: a #GstCaps for the #GstBuffer
+ * @segment: a #GstSegment
+ * @func: a #GstHarnessPrepareBufferFunc function called before every iteration
+ * to prepare / create a #GstBuffer for pushing
+ * @data: a #gpointer with data to the #GstHarnessPrepareBufferFunc function
+ * @notify: a #GDestroyNotify that is called for every push to allow cleaning
+ * up the #GstBuffer. (like gst_buffer_unref)
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each call to gst_pad_push
+ *
+ * Push a #GstBuffer in intervals of @sleep microseconds.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_push_buffer_with_cb_start_full (GstHarness * h,
+    GstCaps * caps, const GstSegment * segment,
+    GstHarnessPrepareBufferFunc func, gpointer data, GDestroyNotify notify,
+    gulong sleep)
+{
+  GstHarnessPushBufferThread *t = g_slice_new0 (GstHarnessPushBufferThread);
+  gst_harness_thread_init (&t->t,
+      (GDestroyNotify) gst_harness_push_buffer_thread_free, h, sleep);
+
+  gst_caps_replace (&t->caps, caps);
+  t->segment = *segment;
+  t->func = func;
+  t->data = data;
+  t->notify = notify;
+
+  GST_HARNESS_THREAD_START (buffer, t);
+  return &t->t;
+}
+
+/**
+ * gst_harness_stress_push_event_start_full: (skip)
+ * @h: a #GstHarness
+ * @event: a #GstEvent to push
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each gst_event_push with @event
+ *
+ * Push the @event onto the harnessed #GstElement sinkpad in intervals of
+ * @sleep microseconds
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_push_event_start_full (GstHarness * h,
+    GstEvent * event, gulong sleep)
+{
+  GstHarnessPushEventThread *t = g_slice_new0 (GstHarnessPushEventThread);
+  gst_harness_thread_init (&t->t,
+      (GDestroyNotify) gst_harness_push_event_thread_free, h, sleep);
+
+  t->event = gst_event_ref (event);
+  GST_HARNESS_THREAD_START (event, t);
+  return &t->t;
+}
+
+/**
+ * gst_harness_stress_push_upstream_event_start_full: (skip)
+ * @h: a #GstHarness
+ * @event: a #GstEvent to push
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each gst_event_push with @event
+ *
+ * Push the @event onto the harnessed #GstElement srcpad in intervals of
+ * @sleep microseconds.
+ * Pushing events should generally be OOB events.
+ * If you need serialized events, you may use a custom stress thread which
+ * both pushes buffers and events.
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_push_upstream_event_start_full (GstHarness * h,
+    GstEvent * event, gulong sleep)
+{
+  GstHarnessPushEventThread *t = g_slice_new0 (GstHarnessPushEventThread);
+  gst_harness_thread_init (&t->t,
+      (GDestroyNotify) gst_harness_push_event_thread_free, h, sleep);
+
+  t->event = gst_event_ref (event);
+  GST_HARNESS_THREAD_START (upstream_event, t);
+  return &t->t;
+}
+
+/**
+ * gst_harness_stress_property_start_full: (skip)
+ * @h: a #GstHarness
+ * @name: a #gchar specifying a property name
+ * @value: a #GValue to set the property to
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each g_object_set with @name and @value
+ *
+ * Call g_object_set with @name and @value in intervals of @sleep microseconds
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_property_start_full (GstHarness * h,
+    const gchar * name, const GValue * value, gulong sleep)
+{
+  GstHarnessPropThread *t = g_slice_new0 (GstHarnessPropThread);
+  gst_harness_thread_init (&t->t,
+      (GDestroyNotify) gst_harness_property_thread_free, h, sleep);
+
+  t->name = g_strdup (name);
+  g_value_init (&t->value, G_VALUE_TYPE (value));
+  g_value_copy (value, &t->value);
+
+  GST_HARNESS_THREAD_START (property, t);
+  return &t->t;
+}
+
+/**
+ * gst_harness_stress_requestpad_start_full: (skip)
+ * @h: a #GstHarness
+ * @templ: a #GstPadTemplate
+ * @name: a #gchar
+ * @caps: a #GstCaps
+ * @release: a #gboolean
+ * @sleep: a #gulong specifying how long to sleep in (microseconds) for
+ * each gst_element_request_pad
+ *
+ * Call gst_element_request_pad in intervals of @sleep microseconds
+ *
+ * MT safe.
+ *
+ * Returns: a #GstHarnessThread
+ *
+ * Since: 1.6
+ */
+GstHarnessThread *
+gst_harness_stress_requestpad_start_full (GstHarness * h,
+    GstPadTemplate * templ, const gchar * name, GstCaps * caps,
+    gboolean release, gulong sleep)
+{
+  GstHarnessReqPadThread *t = g_slice_new0 (GstHarnessReqPadThread);
+  gst_harness_thread_init (&t->t,
+      (GDestroyNotify) gst_harness_requestpad_thread_free, h, sleep);
+
+  t->templ = gst_object_ref (templ);
+  t->name = g_strdup (name);
+  gst_caps_replace (&t->caps, caps);
+  t->release = release;
+
+  GST_HARNESS_THREAD_START (requestpad, t);
+  return &t->t;
+}
diff --git a/libs/gst/check/gstharness.h b/libs/gst/check/gstharness.h
new file mode 100644
index 0000000..7dc7c85
--- /dev/null
+++ b/libs/gst/check/gstharness.h
@@ -0,0 +1,335 @@
+/* GstHarness - A test-harness for GStreamer testing
+ *
+ * Copyright (C) 2012-2015 Pexip <pexip.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GST_HARNESS_H__
+#define __GST_HARNESS_H__
+
+#include <gst/gst.h>
+#include <gst/check/gsttestclock.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GstHarnessThread:
+ *
+ * Opaque handle representing a GstHarness stress testing thread.
+ *
+ * Since: 1.6
+ */
+typedef struct _GstHarnessThread GstHarnessThread;
+
+typedef struct _GstHarness GstHarness;
+typedef struct _GstHarnessPrivate GstHarnessPrivate;
+
+/**
+ * GstHarness:
+ * @element: the element inside the harness
+ * @srcpad: the internal harness source pad
+ * @sinkpad: the internal harness sink pad
+ * @src_harness: the source (input) harness (if any)
+ * @sink_harness: the sink (output) harness (if any)
+ *
+ * Since: 1.6
+ */
+struct _GstHarness {
+  GstElement * element;
+
+  GstPad * srcpad;
+  GstPad * sinkpad;
+
+  GstHarness * src_harness;
+  GstHarness * sink_harness;
+
+  /*< private >*/
+  GstHarnessPrivate * priv;
+};
+
+/* Harness creation */
+
+GstHarness * gst_harness_new_full (GstElement * element,
+                                   GstStaticPadTemplate * hsrc,
+                                   const gchar          * element_sinkpad_name,
+                                   GstStaticPadTemplate * hsink,
+                                   const gchar          * element_srcpad_name);
+
+GstHarness * gst_harness_new_with_element  (GstElement  * element,
+                                            const gchar * element_sinkpad_name,
+                                            const gchar * element_srcpad_name);
+
+GstHarness * gst_harness_new_with_padnames (const gchar * element_name,
+                                            const gchar * element_sinkpad_name,
+                                            const gchar * element_srcpad_name);
+
+GstHarness * gst_harness_new_with_templates (const gchar * element_name,
+                                             GstStaticPadTemplate * hsrc,
+                                             GstStaticPadTemplate * hsink);
+
+GstHarness * gst_harness_new (const gchar * element_name);
+
+GstHarness * gst_harness_new_parse (const gchar * launchline);
+
+void         gst_harness_teardown (GstHarness * h);
+
+void         gst_harness_add_element_src_pad  (GstHarness * h, GstPad * srcpad);
+
+void         gst_harness_add_element_sink_pad (GstHarness * h, GstPad * sinkpad);
+
+/* Caps Functions */
+
+void         gst_harness_set_src_caps  (GstHarness * h, GstCaps * caps);
+
+void         gst_harness_set_sink_caps (GstHarness * h, GstCaps * caps);
+
+void         gst_harness_set_caps (GstHarness * h, GstCaps * in, GstCaps * out);
+
+void         gst_harness_set_src_caps_str  (GstHarness * h, const gchar * str);
+
+void         gst_harness_set_sink_caps_str (GstHarness * h, const gchar * str);
+
+void         gst_harness_set_caps_str (GstHarness  * h,
+                                       const gchar * in,
+                                       const gchar * out);
+
+/* Clock Functions */
+
+void           gst_harness_use_systemclock (GstHarness * h);
+
+void           gst_harness_use_testclock (GstHarness * h);
+
+GstTestClock * gst_harness_get_testclock (GstHarness * h);
+
+gboolean       gst_harness_set_time (GstHarness * h, GstClockTime time);
+
+gboolean       gst_harness_wait_for_clock_id_waits (GstHarness * h,
+                                                    guint waits,
+                                                    guint timeout);
+
+gboolean       gst_harness_crank_single_clock_wait (GstHarness * h);
+
+gboolean       gst_harness_crank_multiple_clock_waits (GstHarness * h,
+                                                       guint waits);
+
+/* misc */
+void           gst_harness_play (GstHarness * h);
+
+void           gst_harness_set_blocking_push_mode (GstHarness * h);
+
+void           gst_harness_set_forwarding (GstHarness * h, gboolean forwarding);
+
+/* buffers */
+
+GstBuffer *    gst_harness_create_buffer (GstHarness * h, gsize size);
+
+GstFlowReturn  gst_harness_push (GstHarness * h, GstBuffer * buffer);
+
+GstBuffer *    gst_harness_pull (GstHarness * h);
+
+GstBuffer *    gst_harness_try_pull (GstHarness * h);
+
+GstBuffer *    gst_harness_push_and_pull (GstHarness * h, GstBuffer * buffer);
+
+guint          gst_harness_buffers_received (GstHarness * h);
+
+guint          gst_harness_buffers_in_queue (GstHarness * h);
+
+void           gst_harness_set_drop_buffers (GstHarness * h, gboolean drop_buffers);
+
+void           gst_harness_dump_to_file (GstHarness * h, const gchar * filename);
+
+GstClockTime   gst_harness_get_last_pushed_timestamp (GstHarness * h);
+
+/* downstream events */
+
+gboolean       gst_harness_push_event (GstHarness * h, GstEvent * event);
+
+GstEvent *     gst_harness_pull_event (GstHarness * h);
+
+GstEvent *     gst_harness_try_pull_event  (GstHarness * h);
+
+guint          gst_harness_events_received (GstHarness * h);
+
+guint          gst_harness_events_in_queue (GstHarness * h);
+
+/* upstream events */
+
+gboolean   gst_harness_push_upstream_event (GstHarness * h, GstEvent * event);
+
+GstEvent * gst_harness_pull_upstream_event (GstHarness * h);
+
+GstEvent * gst_harness_try_pull_upstream_event  (GstHarness * h);
+
+guint      gst_harness_upstream_events_received (GstHarness * h);
+
+guint      gst_harness_upstream_events_in_queue (GstHarness * h);
+
+/* latency */
+
+GstClockTime gst_harness_query_latency (GstHarness * h);
+
+void         gst_harness_set_upstream_latency (GstHarness * h, GstClockTime latency);
+
+/* allocator and allocation params */
+
+void         gst_harness_set_propose_allocator (GstHarness                * h,
+                                                GstAllocator              * allocator,
+                                                const GstAllocationParams * params);
+
+void         gst_harness_get_allocator         (GstHarness          * h,
+                                                GstAllocator       ** allocator,
+                                                GstAllocationParams * params);
+
+/* src-harness */
+
+void          gst_harness_add_src_harness (GstHarness * h,
+                                           GstHarness * src_harness,
+                                           gboolean has_clock_wait);
+
+void          gst_harness_add_src (GstHarness  * h,
+                                   const gchar * src_element_name,
+                                   gboolean      has_clock_wait);
+
+void          gst_harness_add_src_parse (GstHarness  * h,
+                                         const gchar * launchline,
+                                         gboolean      has_clock_wait);
+
+GstFlowReturn gst_harness_push_from_src (GstHarness * h);
+
+GstFlowReturn gst_harness_src_crank_and_push_many (GstHarness * h,
+                                                   gint         cranks,
+                                                   gint         pushes);
+
+gboolean      gst_harness_src_push_event (GstHarness * h);
+
+/* sink-harness */
+
+void          gst_harness_add_sink_harness (GstHarness * h,
+                                            GstHarness * sink_harness);
+
+void          gst_harness_add_sink (GstHarness  * h,
+                                    const gchar * sink_element_name);
+
+void          gst_harness_add_sink_parse (GstHarness  * h,
+                                          const gchar * launchline);
+
+GstFlowReturn gst_harness_push_to_sink   (GstHarness * h);
+
+GstFlowReturn gst_harness_sink_push_many (GstHarness * h, gint pushes);
+
+/* convenience functions */
+
+GstElement *  gst_harness_find_element (GstHarness * h,
+                                       const gchar * element_name);
+
+void          gst_harness_set (GstHarness  * h,
+                               const gchar * element_name,
+                               const gchar * first_property_name, ...);
+
+void          gst_harness_get (GstHarness  * h,
+                               const gchar * element_name,
+                               const gchar * first_property_name, ...);
+
+void          gst_harness_add_probe (GstHarness        * h,
+                                     const gchar       * element_name,
+                                     const gchar       * pad_name,
+                                     GstPadProbeType     mask,
+                                     GstPadProbeCallback callback,
+                                     gpointer            user_data,
+                                     GDestroyNotify      destroy_data);
+
+/* Stress */
+
+guint              gst_harness_stress_thread_stop  (GstHarnessThread * t);
+
+GstHarnessThread * gst_harness_stress_custom_start (GstHarness * h,
+                                                    GFunc        init,
+                                                    GFunc        callback,
+                                                    gpointer     data,
+                                                    gulong       sleep);
+
+#define gst_harness_stress_statechange_start(h)                                \
+  gst_harness_stress_statechange_start_full (h, G_USEC_PER_SEC / 100)
+
+GstHarnessThread * gst_harness_stress_statechange_start_full (GstHarness * h,
+                                                              gulong       sleep);
+
+#define gst_harness_stress_push_buffer_start(h, c, s, b)                       \
+  gst_harness_stress_push_buffer_start_full (h, c, s, b, 0)
+
+GstHarnessThread * gst_harness_stress_push_buffer_start_full (GstHarness * h,
+                                                              GstCaps    * caps,
+                                                              const GstSegment * segment,
+                                                              GstBuffer  * buf,
+                                                              gulong       sleep);
+
+/**
+ * GstHarnessPrepareBufferFunc:
+ * @h: a #GstHarness
+ * @data: user data
+ *
+ * Since: 1.6
+ */
+typedef GstBuffer * (*GstHarnessPrepareBufferFunc) (GstHarness * h, gpointer data);
+
+#define gst_harness_stress_push_buffer_with_cb_start(h, c, s, f, d, n)         \
+  gst_harness_stress_push_buffer_with_cb_start_full (h, c, s, f, d, n, 0)
+
+GstHarnessThread * gst_harness_stress_push_buffer_with_cb_start_full (GstHarness   * h,
+                                                                      GstCaps      * caps,
+                                                                      const GstSegment * segment,
+                                                                      GstHarnessPrepareBufferFunc func,
+                                                                      gpointer       data,
+                                                                      GDestroyNotify notify,
+                                                                      gulong         sleep);
+
+#define gst_harness_stress_push_event_start(h, e)                              \
+  gst_harness_stress_push_event_start_full (h, e, 0)
+
+GstHarnessThread * gst_harness_stress_push_event_start_full (GstHarness * h,
+                                                             GstEvent   * event,
+                                                             gulong       sleep);
+
+#define gst_harness_stress_send_upstream_event_start(h, e)                     \
+  gst_harness_stress_push_upstream_event_start_full (h, e, 0)
+
+GstHarnessThread * gst_harness_stress_push_upstream_event_start_full (GstHarness * h,
+                                                                      GstEvent   * event,
+                                                                      gulong       sleep);
+
+#define gst_harness_stress_property_start(h, n, v)                             \
+  gst_harness_stress_property_start_full (h, n, v, G_USEC_PER_SEC / 1000)
+
+GstHarnessThread * gst_harness_stress_property_start_full (GstHarness   * h,
+                                                           const gchar  * name,
+                                                           const GValue * value,
+                                                           gulong         sleep);
+
+#define gst_harness_stress_requestpad_start(h, t, n, c, r)                     \
+  gst_harness_stress_requestpad_start_full (h, t, n, c, r, G_USEC_PER_SEC / 100)
+
+GstHarnessThread * gst_harness_stress_requestpad_start_full (GstHarness     * h,
+                                                             GstPadTemplate * templ,
+                                                             const gchar    * name,
+                                                             GstCaps        * caps,
+                                                             gboolean         release,
+                                                             gulong           sleep);
+
+G_END_DECLS
+
+#endif /* __GST_HARNESS_H__ */
diff --git a/libs/gst/check/gsttestclock.c b/libs/gst/check/gsttestclock.c
index 0981b0b..2fb30bc 100644
--- a/libs/gst/check/gsttestclock.c
+++ b/libs/gst/check/gsttestclock.c
@@ -139,7 +139,7 @@
  *   g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==, latency);
  *   gst_buffer_unref (buf);
  *   GST_INFO ("Check that element does not wait for any clock notification\n");
- *   g_assert (gst_test_clock_peek_next_pending_id (test_clock, NULL) == FALSE);
+ *   g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL));
  *
  *   GST_INFO ("Set time, create and push the second buffer\n");
  *   gst_test_clock_advance_time (test_clock, 10 * GST_SECOND);
@@ -164,7 +164,7 @@
  *       10 * GST_SECOND + latency + 7 * GST_MSECOND);
  *   gst_buffer_unref (buf);
  *   GST_INFO ("Check that element does not wait for any clock notification\n");
- *   g_assert (gst_test_clock_peek_next_pending_id (test_clock, NULL) == FALSE);
+ *   g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL));
  *   ...
  *   </programlisting>
  * </example>
diff --git a/libs/gst/check/libcheck/Makefile.am b/libs/gst/check/libcheck/Makefile.am
index e814fc8..dfa2062 100644
--- a/libs/gst/check/libcheck/Makefile.am
+++ b/libs/gst/check/libcheck/Makefile.am
@@ -11,10 +11,29 @@
 	check_pack.c	\
 	check_print.c	\
 	check_run.c	\
-	check_str.c
+	check_str.c	\
+	libcompat.c
+
+if !HAVE_ALARM
+CFILES += alarm.c
+endif
+
+if !HAVE_CLOCK_GETTIME
+CFILES += clock_gettime.c
+endif
+
+if !HAVE_STRSIGNAL
+CFILES += strsignal.c
+endif
+
+if !HAVE_TIMER_CREATE_SETTIME_DELETE
+CFILES +=\
+	timer_create.c	\
+	timer_settime.c	\
+	timer_delete.c
+endif
 
 HFILES =\
-	check.h		\
 	check_error.h	\
 	check_impl.h	\
 	check_list.h	\
@@ -22,17 +41,20 @@
 	check_msg.h	\
 	check_pack.h	\
 	check_print.h	\
-	check_str.h
+	check_str.h	\
+	libcompat.h
 
 noinst_HEADERS = $(HFILES)
 
 libcheckinternal_la_SOURCES	= $(CFILES) $(HFILES)
 
+libcheckinternal_la_CFLAGS	= -I$(top_builddir)/libs/gst/check
+libcheckinternal_la_LIBADD	=
+
 # define HAVE_PTHREAD here as well so we keep changes to the code to a minimum
 if HAVE_PTHREAD
-libcheckinternal_la_CFLAGS	= $(PTHREAD_CFLAGS) -D_GNU_SOURCE -DHAVE_PTHREAD
-libcheckinternal_la_LIBADD	= $(PTHREAD_LIBS)
+libcheckinternal_la_CFLAGS	+= $(PTHREAD_CFLAGS) -D_GNU_SOURCE -DHAVE_PTHREAD
+libcheckinternal_la_LIBADD	+= $(PTHREAD_LIBS)
 else
-libcheckinternal_la_CFLAGS	= -D_GNU_SOURCE
-libcheckinternal_la_LIBADD	=
+libcheckinternal_la_CFLAGS	+= -D_GNU_SOURCE
 endif
diff --git a/libs/gst/check/libcheck/Makefile.in b/libs/gst/check/libcheck/Makefile.in
index 1d3988f..2e0a7f2 100644
--- a/libs/gst/check/libcheck/Makefile.in
+++ b/libs/gst/check/libcheck/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,9 +90,20 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
+@HAVE_ALARM_FALSE@am__append_1 = alarm.c
+@HAVE_CLOCK_GETTIME_FALSE@am__append_2 = clock_gettime.c
+@HAVE_STRSIGNAL_FALSE@am__append_3 = strsignal.c
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@am__append_4 = \
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@	timer_create.c	\
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@	timer_settime.c	\
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@	timer_delete.c
+
+
+# define HAVE_PTHREAD here as well so we keep changes to the code to a minimum
+@HAVE_PTHREAD_TRUE@am__append_5 = $(PTHREAD_CFLAGS) -D_GNU_SOURCE -DHAVE_PTHREAD
+@HAVE_PTHREAD_TRUE@am__append_6 = $(PTHREAD_LIBS)
+@HAVE_PTHREAD_FALSE@am__append_7 = -D_GNU_SOURCE
 subdir = libs/gst/check/libcheck
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/check.h.in $(top_srcdir)/depcomp $(noinst_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +112,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +130,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,15 +143,31 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = check.h
+CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-@HAVE_PTHREAD_TRUE@libcheckinternal_la_DEPENDENCIES =  \
-@HAVE_PTHREAD_TRUE@	$(am__DEPENDENCIES_1)
-am__objects_1 = libcheckinternal_la-check.lo \
+@HAVE_PTHREAD_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+libcheckinternal_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am__libcheckinternal_la_SOURCES_DIST = check.c check_error.c \
+	check_list.c check_log.c check_msg.c check_pack.c \
+	check_print.c check_run.c check_str.c libcompat.c alarm.c \
+	clock_gettime.c strsignal.c timer_create.c timer_settime.c \
+	timer_delete.c check_error.h check_impl.h check_list.h \
+	check_log.h check_msg.h check_pack.h check_print.h check_str.h \
+	libcompat.h
+@HAVE_ALARM_FALSE@am__objects_1 = libcheckinternal_la-alarm.lo
+@HAVE_CLOCK_GETTIME_FALSE@am__objects_2 = libcheckinternal_la-clock_gettime.lo
+@HAVE_STRSIGNAL_FALSE@am__objects_3 =  \
+@HAVE_STRSIGNAL_FALSE@	libcheckinternal_la-strsignal.lo
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@am__objects_4 = libcheckinternal_la-timer_create.lo \
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@	libcheckinternal_la-timer_settime.lo \
+@HAVE_TIMER_CREATE_SETTIME_DELETE_FALSE@	libcheckinternal_la-timer_delete.lo
+am__objects_5 = libcheckinternal_la-check.lo \
 	libcheckinternal_la-check_error.lo \
 	libcheckinternal_la-check_list.lo \
 	libcheckinternal_la-check_log.lo \
@@ -137,9 +175,11 @@
 	libcheckinternal_la-check_pack.lo \
 	libcheckinternal_la-check_print.lo \
 	libcheckinternal_la-check_run.lo \
-	libcheckinternal_la-check_str.lo
-am__objects_2 =
-am_libcheckinternal_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+	libcheckinternal_la-check_str.lo \
+	libcheckinternal_la-libcompat.lo $(am__objects_1) \
+	$(am__objects_2) $(am__objects_3) $(am__objects_4)
+am__objects_6 =
+am_libcheckinternal_la_OBJECTS = $(am__objects_5) $(am__objects_6)
 libcheckinternal_la_OBJECTS = $(am_libcheckinternal_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -184,7 +224,7 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libcheckinternal_la_SOURCES)
-DIST_SOURCES = $(libcheckinternal_la_SOURCES)
+DIST_SOURCES = $(am__libcheckinternal_la_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -210,6 +250,7 @@
   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@
@@ -221,7 +262,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -312,6 +358,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -323,9 +370,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -347,6 +396,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -408,8 +458,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -475,6 +527,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -489,19 +542,11 @@
 top_srcdir = @top_srcdir@
 noinst_LTLIBRARIES = libcheckinternal.la
 EXTRA_DIST = check.h.in
-CFILES = \
-	check.c		\
-	check_error.c	\
-	check_list.c	\
-	check_log.c	\
-	check_msg.c	\
-	check_pack.c	\
-	check_print.c	\
-	check_run.c	\
-	check_str.c
-
+CFILES = check.c check_error.c check_list.c check_log.c check_msg.c \
+	check_pack.c check_print.c check_run.c check_str.c libcompat.c \
+	$(am__append_1) $(am__append_2) $(am__append_3) \
+	$(am__append_4)
 HFILES = \
-	check.h		\
 	check_error.h	\
 	check_impl.h	\
 	check_list.h	\
@@ -509,16 +554,14 @@
 	check_msg.h	\
 	check_pack.h	\
 	check_print.h	\
-	check_str.h
+	check_str.h	\
+	libcompat.h
 
 noinst_HEADERS = $(HFILES)
 libcheckinternal_la_SOURCES = $(CFILES) $(HFILES)
-@HAVE_PTHREAD_FALSE@libcheckinternal_la_CFLAGS = -D_GNU_SOURCE
-
-# define HAVE_PTHREAD here as well so we keep changes to the code to a minimum
-@HAVE_PTHREAD_TRUE@libcheckinternal_la_CFLAGS = $(PTHREAD_CFLAGS) -D_GNU_SOURCE -DHAVE_PTHREAD
-@HAVE_PTHREAD_FALSE@libcheckinternal_la_LIBADD = 
-@HAVE_PTHREAD_TRUE@libcheckinternal_la_LIBADD = $(PTHREAD_LIBS)
+libcheckinternal_la_CFLAGS = -I$(top_builddir)/libs/gst/check \
+	$(am__append_5) $(am__append_7)
+libcheckinternal_la_LIBADD = $(am__append_6)
 all: all-am
 
 .SUFFIXES:
@@ -535,7 +578,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/check/libcheck/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/check/libcheck/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -553,8 +595,6 @@
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
-check.h: $(top_builddir)/config.status $(srcdir)/check.h.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -576,6 +616,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-alarm.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-check.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-check_error.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-check_list.Plo@am__quote@
@@ -585,6 +626,12 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-check_print.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-check_run.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-check_str.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-clock_gettime.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-libcompat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-strsignal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-timer_create.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-timer_delete.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheckinternal_la-timer_settime.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -673,6 +720,55 @@
 @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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-check_str.lo `test -f 'check_str.c' || echo '$(srcdir)/'`check_str.c
 
+libcheckinternal_la-libcompat.lo: libcompat.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-libcompat.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-libcompat.Tpo -c -o libcheckinternal_la-libcompat.lo `test -f 'libcompat.c' || echo '$(srcdir)/'`libcompat.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-libcompat.Tpo $(DEPDIR)/libcheckinternal_la-libcompat.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libcompat.c' object='libcheckinternal_la-libcompat.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-libcompat.lo `test -f 'libcompat.c' || echo '$(srcdir)/'`libcompat.c
+
+libcheckinternal_la-alarm.lo: alarm.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-alarm.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-alarm.Tpo -c -o libcheckinternal_la-alarm.lo `test -f 'alarm.c' || echo '$(srcdir)/'`alarm.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-alarm.Tpo $(DEPDIR)/libcheckinternal_la-alarm.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='alarm.c' object='libcheckinternal_la-alarm.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-alarm.lo `test -f 'alarm.c' || echo '$(srcdir)/'`alarm.c
+
+libcheckinternal_la-clock_gettime.lo: clock_gettime.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-clock_gettime.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-clock_gettime.Tpo -c -o libcheckinternal_la-clock_gettime.lo `test -f 'clock_gettime.c' || echo '$(srcdir)/'`clock_gettime.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-clock_gettime.Tpo $(DEPDIR)/libcheckinternal_la-clock_gettime.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='clock_gettime.c' object='libcheckinternal_la-clock_gettime.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-clock_gettime.lo `test -f 'clock_gettime.c' || echo '$(srcdir)/'`clock_gettime.c
+
+libcheckinternal_la-strsignal.lo: strsignal.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-strsignal.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-strsignal.Tpo -c -o libcheckinternal_la-strsignal.lo `test -f 'strsignal.c' || echo '$(srcdir)/'`strsignal.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-strsignal.Tpo $(DEPDIR)/libcheckinternal_la-strsignal.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='strsignal.c' object='libcheckinternal_la-strsignal.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-strsignal.lo `test -f 'strsignal.c' || echo '$(srcdir)/'`strsignal.c
+
+libcheckinternal_la-timer_create.lo: timer_create.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-timer_create.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-timer_create.Tpo -c -o libcheckinternal_la-timer_create.lo `test -f 'timer_create.c' || echo '$(srcdir)/'`timer_create.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-timer_create.Tpo $(DEPDIR)/libcheckinternal_la-timer_create.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='timer_create.c' object='libcheckinternal_la-timer_create.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-timer_create.lo `test -f 'timer_create.c' || echo '$(srcdir)/'`timer_create.c
+
+libcheckinternal_la-timer_settime.lo: timer_settime.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-timer_settime.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-timer_settime.Tpo -c -o libcheckinternal_la-timer_settime.lo `test -f 'timer_settime.c' || echo '$(srcdir)/'`timer_settime.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-timer_settime.Tpo $(DEPDIR)/libcheckinternal_la-timer_settime.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='timer_settime.c' object='libcheckinternal_la-timer_settime.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-timer_settime.lo `test -f 'timer_settime.c' || echo '$(srcdir)/'`timer_settime.c
+
+libcheckinternal_la-timer_delete.lo: timer_delete.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -MT libcheckinternal_la-timer_delete.lo -MD -MP -MF $(DEPDIR)/libcheckinternal_la-timer_delete.Tpo -c -o libcheckinternal_la-timer_delete.lo `test -f 'timer_delete.c' || echo '$(srcdir)/'`timer_delete.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcheckinternal_la-timer_delete.Tpo $(DEPDIR)/libcheckinternal_la-timer_delete.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='timer_delete.c' object='libcheckinternal_la-timer_delete.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) $(libcheckinternal_la_CFLAGS) $(CFLAGS) -c -o libcheckinternal_la-timer_delete.lo `test -f 'timer_delete.c' || echo '$(srcdir)/'`timer_delete.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -882,6 +978,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libs/gst/check/libcheck/alarm.c b/libs/gst/check/libcheck/alarm.c
new file mode 100644
index 0000000..9f87019
--- /dev/null
+++ b/libs/gst/check/libcheck/alarm.c
@@ -0,0 +1,8 @@
+#include "libcompat.h"
+
+unsigned int
+alarm (unsigned int seconds CK_ATTRIBUTE_UNUSED)
+{
+  assert (0);
+  return 0;
+}
diff --git a/libs/gst/check/libcheck/check.c b/libs/gst/check/libcheck/check.c
index 2b7f481..5a50d7d 100644
--- a/libs/gst/check/libcheck/check.c
+++ b/libs/gst/check/libcheck/check.c
@@ -18,14 +18,15 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
+#include <math.h>
 
-#include "check.h"
+#include "internal-check.h"
 #include "check_error.h"
 #include "check_list.h"
 #include "check_impl.h"
@@ -39,6 +40,14 @@
 #define DEFAULT_TIMEOUT 4
 #endif
 
+/*
+ * When a process exits either normally, with exit(), or
+ * by an uncaught signal, The lower 0x377 bits are passed
+ * to the parent. Of those, only the lower 8 bits are
+ * returned by the WEXITSTATUS() macro.
+ */
+#define WEXITSTATUS_MASK 0xFF
+
 int check_major_version = CHECK_MAJOR_VERSION;
 int check_minor_version = CHECK_MINOR_VERSION;
 int check_micro_version = CHECK_MICRO_VERSION;
@@ -55,7 +64,8 @@
 suite_create (const char *name)
 {
   Suite *s;
-  s = emalloc (sizeof (Suite)); /* freed in suite_free */
+
+  s = (Suite *) emalloc (sizeof (Suite));       /* freed in suite_free */
   if (name == NULL)
     s->name = "";
   else
@@ -64,17 +74,37 @@
   return s;
 }
 
+int
+suite_tcase (Suite * s, const char *tcname)
+{
+  List *l;
+  TCase *tc;
+
+  if (s == NULL)
+    return 0;
+
+  l = s->tclst;
+  for (check_list_front (l); !check_list_at_end (l); check_list_advance (l)) {
+    tc = (TCase *) check_list_val (l);
+    if (strcmp (tcname, tc->name) == 0)
+      return 1;
+  }
+
+  return 0;
+}
+
 static void
 suite_free (Suite * s)
 {
   List *l;
+
   if (s == NULL)
     return;
   l = s->tclst;
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    tcase_free (list_val (l));
+  for (check_list_front (l); !check_list_at_end (l); check_list_advance (l)) {
+    tcase_free ((TCase *) check_list_val (l));
   }
-  list_free (s->tclst);
+  check_list_free (s->tclst);
   free (s);
 }
 
@@ -82,8 +112,10 @@
 tcase_create (const char *name)
 {
   char *env;
-  int timeout = DEFAULT_TIMEOUT;
-  TCase *tc = emalloc (sizeof (TCase)); /*freed in tcase_free */
+  double timeout_sec = DEFAULT_TIMEOUT;
+
+  TCase *tc = (TCase *) emalloc (sizeof (TCase));       /*freed in tcase_free */
+
   if (name == NULL)
     tc->name = "";
   else
@@ -91,21 +123,28 @@
 
   env = getenv ("CK_DEFAULT_TIMEOUT");
   if (env != NULL) {
-    int tmp = atoi (env);
-    if (tmp >= 0) {
-      timeout = tmp;
+    char *endptr = NULL;
+    double tmp = strtod (env, &endptr);
+
+    if (tmp >= 0 && endptr != env && (*endptr) == '\0') {
+      timeout_sec = tmp;
     }
   }
 
   env = getenv ("CK_TIMEOUT_MULTIPLIER");
   if (env != NULL) {
-    int tmp = atoi (env);
-    if (tmp >= 0) {
-      timeout = timeout * tmp;
+    char *endptr = NULL;
+    double tmp = strtod (env, &endptr);
+
+    if (tmp >= 0 && endptr != env && (*endptr) == '\0') {
+      timeout_sec = timeout_sec * tmp;
     }
   }
 
-  tc->timeout = timeout;
+  tc->timeout.tv_sec = (time_t) floor (timeout_sec);
+  tc->timeout.tv_nsec =
+      (long) ((timeout_sec - floor (timeout_sec)) * (double) NANOS_PER_SECONDS);
+
   tc->tflst = check_list_create ();
   tc->unch_sflst = check_list_create ();
   tc->ch_sflst = check_list_create ();
@@ -119,16 +158,16 @@
 static void
 tcase_free (TCase * tc)
 {
-  list_apply (tc->tflst, free);
-  list_apply (tc->unch_sflst, free);
-  list_apply (tc->ch_sflst, free);
-  list_apply (tc->unch_tflst, free);
-  list_apply (tc->ch_tflst, free);
-  list_free (tc->tflst);
-  list_free (tc->unch_sflst);
-  list_free (tc->ch_sflst);
-  list_free (tc->unch_tflst);
-  list_free (tc->ch_tflst);
+  check_list_apply (tc->tflst, free);
+  check_list_apply (tc->unch_sflst, free);
+  check_list_apply (tc->ch_sflst, free);
+  check_list_apply (tc->unch_tflst, free);
+  check_list_apply (tc->ch_tflst, free);
+  check_list_free (tc->tflst);
+  check_list_free (tc->unch_sflst);
+  check_list_free (tc->ch_sflst);
+  check_list_free (tc->unch_tflst);
+  check_list_free (tc->ch_tflst);
 
   free (tc);
 }
@@ -138,7 +177,7 @@
 {
   if (s == NULL || tc == NULL)
     return;
-  list_add_end (s->tclst, tc);
+  check_list_add_end (s->tclst, tc);
 }
 
 void
@@ -146,23 +185,25 @@
     int allowed_exit_value, int start, int end)
 {
   TF *tf;
+
   if (tc == NULL || fn == NULL || name == NULL)
     return;
-  tf = emalloc (sizeof (TF));   /* freed in tcase_free */
+  tf = (TF *) emalloc (sizeof (TF));    /* freed in tcase_free */
   tf->fn = fn;
   tf->loop_start = start;
   tf->loop_end = end;
   tf->signal = _signal;         /* 0 means no signal expected */
-  tf->allowed_exit_value = allowed_exit_value;  /* 0 is default successful exit */
+  tf->allowed_exit_value = (WEXITSTATUS_MASK & allowed_exit_value);     /* 0 is default successful exit */
   tf->name = name;
-  list_add_end (tc->tflst, tf);
+  check_list_add_end (tc->tflst, tf);
 }
 
 static Fixture *
 fixture_create (SFun fun, int ischecked)
 {
   Fixture *f;
-  f = emalloc (sizeof (Fixture));
+
+  f = (Fixture *) emalloc (sizeof (Fixture));
   f->fun = fun;
   f->ischecked = ischecked;
 
@@ -186,33 +227,48 @@
 {
   if (setup) {
     if (ischecked)
-      list_add_end (tc->ch_sflst, fixture_create (setup, ischecked));
+      check_list_add_end (tc->ch_sflst, fixture_create (setup, ischecked));
     else
-      list_add_end (tc->unch_sflst, fixture_create (setup, ischecked));
+      check_list_add_end (tc->unch_sflst, fixture_create (setup, ischecked));
   }
 
   /* Add teardowns at front so they are run in reverse order. */
   if (teardown) {
     if (ischecked)
-      list_add_front (tc->ch_tflst, fixture_create (teardown, ischecked));
+      check_list_add_front (tc->ch_tflst, fixture_create (teardown, ischecked));
     else
-      list_add_front (tc->unch_tflst, fixture_create (teardown, ischecked));
+      check_list_add_front (tc->unch_tflst,
+          fixture_create (teardown, ischecked));
   }
 }
 
 void
-tcase_set_timeout (TCase * tc, int timeout)
+tcase_set_timeout (TCase * tc, double timeout)
 {
+#if defined(HAVE_FORK)
   if (timeout >= 0) {
     char *env = getenv ("CK_TIMEOUT_MULTIPLIER");
+
     if (env != NULL) {
-      int tmp = atoi (env);
-      if (tmp >= 0) {
+      char *endptr = NULL;
+      double tmp = strtod (env, &endptr);
+
+      if (tmp >= 0 && endptr != env && (*endptr) == '\0') {
         timeout = timeout * tmp;
       }
     }
-    tc->timeout = timeout;
+
+    tc->timeout.tv_sec = (time_t) floor (timeout);
+    tc->timeout.tv_nsec =
+        (long) ((timeout - floor (timeout)) * (double) NANOS_PER_SECONDS);
   }
+#else
+  (void) tc;
+  (void) timeout;
+  eprintf
+      ("This version does not support timeouts, as fork is not supported",
+      __FILE__, __LINE__);
+#endif /* HAVE_FORK */
 }
 
 void
@@ -230,44 +286,57 @@
 }
 
 void
-_fail_unless (int result, const char *file, int line, const char *expr, ...)
+_ck_assert_failed (const char *file, int line, const char *expr, ...)
 {
   const char *msg;
+  va_list ap;
+  char buf[BUFSIZ];
 
   send_loc_info (file, line);
-  if (!result) {
-    va_list ap;
-    char buf[BUFSIZ];
 
-    va_start (ap, expr);
-    msg = (const char *) va_arg (ap, char *);
-    if (msg == NULL)
-      msg = expr;
-    vsnprintf (buf, BUFSIZ, msg, ap);
-    va_end (ap);
-    send_failure_info (buf);
-    if (cur_fork_status () == CK_FORK) {
-#ifdef _POSIX_VERSION
-      _exit (1);
-#endif /* _POSIX_VERSION */
-    }
+  va_start (ap, expr);
+  msg = (const char *) va_arg (ap, char *);
+
+  if (msg == NULL)
+    msg = expr;
+  vsnprintf (buf, BUFSIZ, msg, ap);
+  va_end (ap);
+  send_failure_info (buf);
+  if (cur_fork_status () == CK_FORK) {
+#if defined(HAVE_FORK) && HAVE_FORK==1
+    _exit (1);
+#endif /* HAVE_FORK */
+  } else {
+    longjmp (error_jmp_buffer, 1);
   }
 }
 
 SRunner *
 srunner_create (Suite * s)
 {
-  SRunner *sr = emalloc (sizeof (SRunner));     /* freed in srunner_free */
+  SRunner *sr = (SRunner *) emalloc (sizeof (SRunner)); /* freed in srunner_free */
+
   sr->slst = check_list_create ();
   if (s != NULL)
-    list_add_end (sr->slst, s);
-  sr->stats = emalloc (sizeof (TestStats));     /* freed in srunner_free */
+    check_list_add_end (sr->slst, s);
+  sr->stats = (TestStats *) emalloc (sizeof (TestStats));       /* freed in srunner_free */
   sr->stats->n_checked = sr->stats->n_failed = sr->stats->n_errors = 0;
   sr->resultlst = check_list_create ();
   sr->log_fname = NULL;
   sr->xml_fname = NULL;
+  sr->tap_fname = NULL;
   sr->loglst = NULL;
+
+#if defined(HAVE_FORK)
   sr->fstat = CK_FORK_GETENV;
+#else
+  /*
+   * Overriding the default of running tests in fork mode,
+   * as this system does not have fork()
+   */
+  sr->fstat = CK_NOFORK;
+#endif /* HAVE_FORK */
+
   return sr;
 }
 
@@ -277,7 +346,7 @@
   if (s == NULL)
     return;
 
-  list_add_end (sr->slst, s);
+  check_list_add_end (sr->slst, s);
 }
 
 void
@@ -285,24 +354,23 @@
 {
   List *l;
   TestResult *tr;
+
   if (sr == NULL)
     return;
 
   free (sr->stats);
   l = sr->slst;
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    suite_free (list_val (l));
+  for (check_list_front (l); !check_list_at_end (l); check_list_advance (l)) {
+    suite_free ((Suite *) check_list_val (l));
   }
-  list_free (sr->slst);
+  check_list_free (sr->slst);
 
   l = sr->resultlst;
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    tr = list_val (l);
-    free (tr->file);
-    free (tr->msg);
-    free (tr);
+  for (check_list_front (l); !check_list_at_end (l); check_list_advance (l)) {
+    tr = (TestResult *) check_list_val (l);
+    tr_free (tr);
   }
-  list_free (sr->resultlst);
+  check_list_free (sr->resultlst);
 
   free (sr);
 }
@@ -325,11 +393,16 @@
   int i = 0;
   TestResult **trarray;
   List *rlst;
-  trarray = malloc (sizeof (trarray[0]) * srunner_ntests_failed (sr));
+
+  trarray =
+      (TestResult **) emalloc (sizeof (trarray[0]) *
+      srunner_ntests_failed (sr));
 
   rlst = sr->resultlst;
-  for (list_front (rlst); !list_at_end (rlst); list_advance (rlst)) {
-    TestResult *tr = list_val (rlst);
+  for (check_list_front (rlst); !check_list_at_end (rlst);
+      check_list_advance (rlst)) {
+    TestResult *tr = (TestResult *) check_list_val (rlst);
+
     if (non_pass (tr->rtype))
       trarray[i++] = tr;
 
@@ -344,11 +417,13 @@
   TestResult **trarray;
   List *rlst;
 
-  trarray = malloc (sizeof (trarray[0]) * srunner_ntests_run (sr));
+  trarray =
+      (TestResult **) emalloc (sizeof (trarray[0]) * srunner_ntests_run (sr));
 
   rlst = sr->resultlst;
-  for (list_front (rlst); !list_at_end (rlst); list_advance (rlst)) {
-    trarray[i++] = list_val (rlst);
+  for (check_list_front (rlst); !check_list_at_end (rlst);
+      check_list_advance (rlst)) {
+    trarray[i++] = (TestResult *) check_list_val (rlst);
   }
   return trarray;
 }
@@ -364,17 +439,11 @@
 {
   TestResult *tr;
 
-  tr = emalloc (sizeof (TestResult));
+  tr = (TestResult *) emalloc (sizeof (TestResult));
   tr_init (tr);
   return tr;
 }
 
-void
-tr_reset (TestResult * tr)
-{
-  tr_init (tr);
-}
-
 static void
 tr_init (TestResult * tr)
 {
@@ -385,6 +454,15 @@
   tr->file = NULL;
   tr->tcname = NULL;
   tr->tname = NULL;
+  tr->duration = -1;
+}
+
+void
+tr_free (TestResult * tr)
+{
+  free (tr->file);
+  free (tr->msg);
+  free (tr);
 }
 
 
@@ -424,7 +502,7 @@
   return tr->tcname;
 }
 
-static int _fstat = CK_FORK;
+static enum fork_status _fstat = CK_FORK;
 
 void
 set_fork_status (enum fork_status fstat)
@@ -440,3 +518,41 @@
 {
   return _fstat;
 }
+
+/**
+ * Not all systems support the same clockid_t's. This call checks
+ * if the CLOCK_MONOTONIC clockid_t is valid. If so, that is returned,
+ * otherwise, CLOCK_REALTIME is returned.
+ *
+ * The clockid_t that was found to work on the first call is
+ * cached for subsequent calls.
+ */
+clockid_t
+check_get_clockid ()
+{
+  static clockid_t clockid = -1;
+
+  if (clockid == -1) {
+/*
+ * Only check if we have librt available. Otherwise, the clockid
+ * will be ignored anyway, as the clock_gettime() and
+ * timer_create() functions will be re-implemented in libcompat.
+ * Worse, if librt and alarm() are unavailable, this check
+ * will result in an assert(0).
+ */
+#if defined(HAVE_POSIX_TIMERS) && defined(HAVE_MONOTONIC_CLOCK)
+    timer_t timerid;
+
+    if (timer_create (CLOCK_MONOTONIC, NULL, &timerid) == 0) {
+      timer_delete (timerid);
+      clockid = CLOCK_MONOTONIC;
+    } else {
+      clockid = CLOCK_REALTIME;
+    }
+#else
+    clockid = CLOCK_MONOTONIC;
+#endif
+  }
+
+  return clockid;
+}
diff --git a/libs/gst/check/libcheck/check.h b/libs/gst/check/libcheck/check.h
deleted file mode 100644
index 25dac71..0000000
--- a/libs/gst/check/libcheck/check.h
+++ /dev/null
@@ -1,418 +0,0 @@
-/*-*- mode:C; -*- */
-/*
- * Check: a unit test framework for C
- * Copyright (C) 2001, 2002, Arien Malec
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef CHECK_H
-#define CHECK_H
-
-#include <stddef.h>
-#include <string.h>
-
-/* Check: a unit test framework for C
-
-   Check is a unit test framework for C. It features a simple
-   interface for defining unit tests, putting little in the way of the
-   developer. Tests are run in a separate address space, so Check can
-   catch both assertion failures and code errors that cause
-   segmentation faults or other signals. The output from unit tests
-   can be used within source code editors and IDEs.
-
-   Unit tests are created with the START_TEST/END_TEST macro
-   pair. The fail_unless and fail macros are used for creating
-   checks within unit tests; the mark_point macro is useful for
-   trapping the location of signals and/or early exits.
-
-
-   Test cases are created with tcase_create, unit tests are added
-   with tcase_add_test
-
-
-   Suites are created with suite_create; test cases are added
-   with suite_add_tcase
-
-   Suites are run through an SRunner, which is created with
-   srunner_create. Additional suites can be added to an SRunner with
-   srunner_add_suite. An SRunner is freed with srunner_free, which also
-   frees all suites added to the runner. 
-
-   Use srunner_run_all to run a suite and print results.
-
-   Macros and functions starting with _ (underscore) are internal and
-   may change without notice. You have been warned!.
-
-*/
-
-
-#ifdef __cplusplus
-#define CK_CPPSTART extern "C" {
-#define CK_CPPEND }
-CK_CPPSTART
-#endif
-
-#if defined(__GNUC__) && defined(__GNUC_MINOR__)
-#define GCC_VERSION_AT_LEAST(major, minor) \
-((__GNUC__ > (major)) || \
- (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
-#else
-#define GCC_VERSION_AT_LEAST(major, minor) 0
-#endif
-
-#if GCC_VERSION_AT_LEAST(2,95)
-#define CK_ATTRIBUTE_UNUSED __attribute__ ((unused))
-#else
-#define CK_ATTRIBUTE_UNUSED              
-#endif /* GCC 2.95 */
-
-#include <sys/types.h>
-
-/* Used to create the linker script for hiding lib-local symbols. Shall
-   be put directly in front of the exported symbol. */
-#define CK_EXPORT
-
-/* check version numbers */
-  
-#define CHECK_MAJOR_VERSION (0)
-#define CHECK_MINOR_VERSION (9)
-#define CHECK_MICRO_VERSION (8)
-
-extern int CK_EXPORT check_major_version;
-extern int CK_EXPORT check_minor_version;
-extern int CK_EXPORT check_micro_version;
-
-#ifndef NULL
-#define NULL ((void*)0)
-#endif
-
-/* opaque type for a test case
-
-   A TCase represents a test case.  Create with tcase_create, free
-   with tcase_free.  For the moment, test cases can only be run
-   through a suite
-*/
-typedef struct TCase TCase; 
-
-/* type for a test function */
-typedef void (*TFun) (int);
-
-/* type for a setup/teardown function */
-typedef void (*SFun) (void);
- 
-/* Opaque type for a test suite */
-typedef struct Suite Suite;
- 
-/* Creates a test suite with the given name */
-Suite * CK_EXPORT suite_create (const char *name);
-
-/* Add a test case to a suite */
-void CK_EXPORT suite_add_tcase (Suite *s, TCase *tc);
-
-/* Create a test case */
-TCase * CK_EXPORT tcase_create (const char *name);
-
-/* Add a test function to a test case (macro version) */
-#define tcase_add_test(tc,tf) tcase_add_test_raise_signal(tc,tf,0)
-
-/* Add a test function with signal handling to a test case (macro version) */
-#define tcase_add_test_raise_signal(tc,tf,signal) \
-   _tcase_add_test((tc),(tf),"" # tf "",(signal), 0, 0, 1)
-
-/* Add a test function with an expected exit value to a test case (macro version) */
-#define tcase_add_exit_test(tc, tf, expected_exit_value) \
-  _tcase_add_test((tc),(tf),"" # tf "",0,(expected_exit_value),0,1)
-
-/* Add a looping test function to a test case (macro version)
-
-   The test will be called in a for(i = s; i < e; i++) loop with each
-   iteration being executed in a new context. The loop variable 'i' is
-   available in the test.
- */
-#define tcase_add_loop_test(tc,tf,s,e) \
-  _tcase_add_test((tc),(tf),"" # tf "",0,0,(s),(e))
- 
-/* Signal version of loop test.  
-   FIXME: add a test case; this is untested as part of Check's tests.
- */
-#define tcase_add_loop_test_raise_signal(tc,tf,signal,s,e) \
-  _tcase_add_test((tc),(tf),"" # tf "",(signal),0,(s),(e))
-
-/* allowed exit value version of loop test. */
-#define tcase_add_loop_exit_test(tc,tf,expected_exit_value,s,e) \
-  _tcase_add_test((tc),(tf),"" # tf "",0,(expected_exit_value),(s),(e))
-
-/* Add a test function to a test case
-  (function version -- use this when the macro won't work
-*/
-void CK_EXPORT _tcase_add_test (TCase *tc, TFun tf, const char *fname, int _signal, int allowed_exit_value, int start, int end);
-
-/* Add unchecked fixture setup/teardown functions to a test case
-
-   If unchecked fixture functions are run at the start and end of the
-   test case, and not before and after unit tests. Note that unchecked
-   setup/teardown functions are not run in a separate address space,
-   like test functions, and so must not exit or signal (e.g.,
-   segfault)
-
-   Also, when run in CK_NOFORK mode, unchecked fixture functions may
-   lead to different unit test behavior IF unit tests change data
-   setup by the fixture functions.
-*/
-void CK_EXPORT tcase_add_unchecked_fixture (TCase *tc, SFun setup, SFun teardown);
-
-/* Add fixture setup/teardown functions to a test case
-
-   Checked fixture functions are run before and after unit
-   tests. Unlike unchecked fixture functions, checked fixture
-   functions are run in the same separate address space as the test
-   program, and thus the test function will survive signals or
-   unexpected exits in the fixture function. Also, IF the setup
-   function is idempotent, unit test behavior will be the same in
-   CK_FORK and CK_NOFORK modes.
-
-   However, since fixture functions are run before and after each unit
-   test, they should not be expensive code.
-
-*/ 
-void CK_EXPORT tcase_add_checked_fixture (TCase *tc, SFun setup, SFun teardown);
-
-/* Set the timeout for all tests in a test case. A test that lasts longer
-   than the timeout (in seconds) will be killed and thus fail with an error.
-   The timeout can also be set globaly with the environment variable
-   CK_DEFAULT_TIMEOUT, the specific setting always takes precedence.
-*/
-void CK_EXPORT tcase_set_timeout (TCase *tc, int timeout);
- 
-/* Internal function to mark the start of a test function */
-void CK_EXPORT tcase_fn_start (const char *fname, const char *file, int line);
-
-/* Start a unit test with START_TEST(unit_name), end with END_TEST
-   One must use braces within a START_/END_ pair to declare new variables
-*/ 
-#define START_TEST(__testname)\
-static void __testname (int _i CK_ATTRIBUTE_UNUSED)\
-{\
-  tcase_fn_start (""# __testname, __FILE__, __LINE__);
-
-/* End a unit test */
-#define END_TEST }
-
-/* Fail the test case unless expr is true */
-/* The space before the comma sign before ## is essential to be compatible
-   with gcc 2.95.3 and earlier.
-*/
-#define fail_unless(expr, ...)\
-        _fail_unless(expr, __FILE__, __LINE__,\
-        "Assertion '"#expr"' failed" , ## __VA_ARGS__, NULL)
-
-/* Fail the test case if expr is true */
-/* The space before the comma sign before ## is essential to be compatible
-   with gcc 2.95.3 and earlier.
-*/
-
-/* FIXME: these macros may conflict with C89 if expr is 
-   FIXME:   strcmp (str1, str2) due to excessive string length. */
-#define fail_if(expr, ...)\
-        _fail_unless(!(expr), __FILE__, __LINE__,\
-        "Failure '"#expr"' occured" , ## __VA_ARGS__, NULL)
-
-/* Always fail */
-#define fail(...) _fail_unless(0, __FILE__, __LINE__, "Failed", __VA_ARGS__, NULL)
-
-/* Non macro version of #fail_unless, with more complicated interface */
-void CK_EXPORT _fail_unless (int result, const char *file,
-                             int line, const char *expr, ...);
-
-/* New check fail API. */
-#define ck_abort() ck_abort_msg(NULL)
-#define ck_abort_msg fail
-#define ck_assert(C) ck_assert_msg(C, NULL)
-#define ck_assert_msg fail_unless
-
-/* Integer comparsion macros with improved output compared to fail_unless(). */
-/* O may be any comparion operator. */
-#define _ck_assert_int(X, O, Y) ck_assert_msg((X) O (Y), "Assertion '"#X#O#Y"' failed: "#X"==%d, "#Y"==%d", X, Y) 
-#define ck_assert_int_eq(X, Y) _ck_assert_int(X, ==, Y) 
-#define ck_assert_int_ne(X, Y) _ck_assert_int(X, !=, Y) 
-
-/* String comparsion macros with improved output compared to fail_unless() */
-#define _ck_assert_str(C, X, O, Y) ck_assert_msg(C, "Assertion '"#X#O#Y"' failed: "#X"==\"%s\", "#Y"==\"%s\"", X, Y) 
-#define ck_assert_str_eq(X, Y) _ck_assert_str(!strcmp(X, Y), X, ==, Y)
-#define ck_assert_str_ne(X, Y) _ck_assert_str(strcmp(X, Y), X, !=, Y)
-
-
-/* Mark the last point reached in a unit test
-   (useful for tracking down where a segfault, etc. occurs)
-*/
-#define mark_point() _mark_point(__FILE__,__LINE__)
-
-/* Non macro version of #mark_point */
-void CK_EXPORT _mark_point (const char *file, int line);
-
-/* Result of a test */
-enum test_result {
-  CK_TEST_RESULT_INVALID, /* Default value; should not encounter this */
-  CK_PASS, /* Test passed*/
-  CK_FAILURE, /* Test completed but failed */
-  CK_ERROR /* Test failed to complete
-	      (unexpected signal or non-zero early exit) */ 
-};
-
-/* Specifies the how much output an SRunner should produce */
-enum print_output {
-  CK_SILENT, /* No output */
-  CK_MINIMAL, /* Only summary output */
-  CK_NORMAL, /* All failed tests */
-  CK_VERBOSE, /* All tests */
-  CK_ENV, /* Look at environment var */
-#if 0
-  CK_SUBUNIT, /* Run as a subunit child process */
-#endif
-  CK_LAST
-};
-
-/* Holds state for a running of a test suite */
-typedef struct SRunner SRunner;
-
-/* Opaque type for a test failure */
-typedef struct TestResult TestResult;
-
-/* accessors for tr fields */
-enum ck_result_ctx {
-  CK_CTX_INVALID, /* Default value; should not encounter this */
-  CK_CTX_SETUP,
-  CK_CTX_TEST,
-  CK_CTX_TEARDOWN
-};
-
-/* Type of result */
-int CK_EXPORT tr_rtype (TestResult *tr);
-/* Context in which the result occurred */ 
-enum ck_result_ctx CK_EXPORT tr_ctx (TestResult *tr); 
-/* Failure message */
-const char * CK_EXPORT tr_msg (TestResult *tr);
-/* Line number at which failure occured */
-int CK_EXPORT tr_lno (TestResult *tr);
-/* File name at which failure occured */
-const char * CK_EXPORT tr_lfile (TestResult *tr);
-/* Test case in which unit test was run */
-const char * CK_EXPORT tr_tcname (TestResult *tr);
-
-/* Creates an SRunner for the given suite */
-SRunner * CK_EXPORT srunner_create (Suite *s);
-
-/* Adds a Suite to an SRunner */
-void CK_EXPORT srunner_add_suite (SRunner *sr, Suite *s);
-
-/* Frees an SRunner, all suites added to it and all contained test cases */
-void CK_EXPORT srunner_free (SRunner *sr);
-
- 
-/* Test running */
-
-/* Runs an SRunner, printing results as specified (see enum print_output) */
-void CK_EXPORT srunner_run_all (SRunner *sr, enum print_output print_mode);
-
- 
-/* Next functions are valid only after the suite has been
-   completely run, of course */
-
-/* Number of failed tests in a run suite. Includes failures + errors */
-int CK_EXPORT srunner_ntests_failed (SRunner *sr);
-
-/* Total number of tests run in a run suite */
-int CK_EXPORT srunner_ntests_run (SRunner *sr);
-
-/* Return an array of results for all failures
-  
-   Number of failures is equal to srunner_nfailed_tests.  Memory for
-   the array is malloc'ed and must be freed, but individual TestResults
-   must not
-*/
-TestResult ** CK_EXPORT srunner_failures (SRunner *sr);
-
-/* Return an array of results for all run tests
-
-   Number of results is equal to srunner_ntests_run, and excludes
-   failures due to setup function failure.
-
-   Memory is malloc'ed and must be freed, but individual TestResults
-   must not
-*/  
-TestResult ** CK_EXPORT srunner_results (SRunner *sr);
-
- 
-/* Printing */
-
-/* Print the results contained in an SRunner */
-void CK_EXPORT srunner_print (SRunner *sr, enum print_output print_mode);
-  
-  
-/* Set a log file to which to write during test running.
-
-  Log file setting is an initialize only operation -- it should be
-  done immediatly after SRunner creation, and the log file can't be
-  changed after being set.
-*/
-void CK_EXPORT srunner_set_log (SRunner *sr, const char *fname);
-
-/* Does the SRunner have a log file? */
-int CK_EXPORT srunner_has_log (SRunner *sr);
-
-/* Return the name of the log file, or NULL if none */
-const char * CK_EXPORT srunner_log_fname (SRunner *sr);
-
-/* Set a xml file to which to write during test running.
-
-  XML file setting is an initialize only operation -- it should be
-  done immediatly after SRunner creation, and the XML file can't be
-  changed after being set.
-*/
-void CK_EXPORT srunner_set_xml (SRunner *sr, const char *fname);
-
-/* Does the SRunner have an XML log file? */
-int CK_EXPORT srunner_has_xml (SRunner *sr);
-
-/* Return the name of the XML file, or NULL if none */
-const char * CK_EXPORT srunner_xml_fname (SRunner *sr);
-
-
-/* Control forking */
-enum fork_status {
-  CK_FORK_GETENV, /* look in the environment for CK_FORK */
-  CK_FORK,        /* call fork to run tests */
-  CK_NOFORK       /* don't call fork */
-};
- 
-/* Get the current fork status */
-enum fork_status CK_EXPORT srunner_fork_status (SRunner *sr);
-
-/* Set the current fork status */
-void CK_EXPORT srunner_set_fork_status (SRunner *sr, enum fork_status fstat); 
-  
-/* Fork in a test and make sure messaging and tests work. */
-pid_t CK_EXPORT check_fork(void);
-
-/* Wait for the pid and exit. If pid is zero, just exit. */
-void CK_EXPORT check_waitpid_and_exit(pid_t pid);
-
-#ifdef __cplusplus 
-CK_CPPEND
-#endif
-
-#endif /* CHECK_H */
diff --git a/libs/gst/check/libcheck/check.h.in b/libs/gst/check/libcheck/check.h.in
index 3741ad0..996be7b 100644
--- a/libs/gst/check/libcheck/check.h.in
+++ b/libs/gst/check/libcheck/check.h.in
@@ -15,8 +15,8 @@
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef CHECK_H
@@ -25,38 +25,9 @@
 #include <stddef.h>
 #include <string.h>
 
-/* Check: a unit test framework for C
-
-   Check is a unit test framework for C. It features a simple
-   interface for defining unit tests, putting little in the way of the
-   developer. Tests are run in a separate address space, so Check can
-   catch both assertion failures and code errors that cause
-   segmentation faults or other signals. The output from unit tests
-   can be used within source code editors and IDEs.
-
-   Unit tests are created with the START_TEST/END_TEST macro
-   pair. The fail_unless and fail macros are used for creating
-   checks within unit tests; the mark_point macro is useful for
-   trapping the location of signals and/or early exits.
-
-
-   Test cases are created with tcase_create, unit tests are added
-   with tcase_add_test
-
-
-   Suites are created with suite_create; test cases are added
-   with suite_add_tcase
-
-   Suites are run through an SRunner, which is created with
-   srunner_create. Additional suites can be added to an SRunner with
-   srunner_add_suite. An SRunner is freed with srunner_free, which also
-   frees all suites added to the runner. 
-
-   Use srunner_run_all to run a suite and print results.
-
+/*
    Macros and functions starting with _ (underscore) are internal and
    may change without notice. You have been warned!.
-
 */
 
 
@@ -65,7 +36,6 @@
 #define CK_CPPEND }
 CK_CPPSTART
 #endif
-
 #if defined(__GNUC__) && defined(__GNUC_MINOR__)
 #define GCC_VERSION_AT_LEAST(major, minor) \
 ((__GNUC__ > (major)) || \
@@ -73,346 +43,1200 @@
 #else
 #define GCC_VERSION_AT_LEAST(major, minor) 0
 #endif
-
 #if GCC_VERSION_AT_LEAST(2,95)
 #define CK_ATTRIBUTE_UNUSED __attribute__ ((unused))
 #else
-#define CK_ATTRIBUTE_UNUSED              
+#define CK_ATTRIBUTE_UNUSED
 #endif /* GCC 2.95 */
-
+#if GCC_VERSION_AT_LEAST(2,5)
+#define CK_ATTRIBUTE_NORETURN __attribute__ ((noreturn))
+#else
+#define CK_ATTRIBUTE_NORETURN
+#endif /* GCC 2.5 */
 #include <sys/types.h>
-
-/* Used to create the linker script for hiding lib-local symbols. Shall
-   be put directly in front of the exported symbol. */
+/*
+ * Used to create the linker script for hiding lib-local symbols. Shall
+ * be put directly in front of the exported symbol.
+ */
 #define CK_EXPORT
-
+/*
+ * Used for MSVC to create the export attribute
+ * CK_DLL_EXP is defined during the compilation of the library
+ * on the command line.
+ */
+#ifndef CK_DLL_EXP
+#define CK_DLL_EXP
+#endif
 /* check version numbers */
-  
 #define CHECK_MAJOR_VERSION (@CHECK_MAJOR_VERSION@)
 #define CHECK_MINOR_VERSION (@CHECK_MINOR_VERSION@)
 #define CHECK_MICRO_VERSION (@CHECK_MICRO_VERSION@)
-
-extern int CK_EXPORT check_major_version;
-extern int CK_EXPORT check_minor_version;
-extern int CK_EXPORT check_micro_version;
+CK_DLL_EXP extern int CK_EXPORT check_major_version;
+CK_DLL_EXP extern int CK_EXPORT check_minor_version;
+CK_DLL_EXP extern int CK_EXPORT check_micro_version;
 
 #ifndef NULL
 #define NULL ((void*)0)
 #endif
 
-/* opaque type for a test case
-
-   A TCase represents a test case.  Create with tcase_create, free
-   with tcase_free.  For the moment, test cases can only be run
-   through a suite
+/**
+ * Type for a test case
+ *
+ * A TCase represents a test case.  Create with tcase_create, free
+ * with tcase_free.  For the moment, test cases can only be run
+ * through a suite
 */
-typedef struct TCase TCase; 
+typedef struct TCase TCase;
 
-/* type for a test function */
+/**
+ * Type for a test function
+ */
 typedef void (*TFun) (int);
 
-/* type for a setup/teardown function */
+/**
+ * Type for a setup/teardown function
+ */
 typedef void (*SFun) (void);
- 
-/* Opaque type for a test suite */
+
+/**
+ * Type for a test suite
+ */
 typedef struct Suite Suite;
- 
-/* Creates a test suite with the given name */
-Suite * CK_EXPORT suite_create (const char *name);
 
-/* Add a test case to a suite */
-void CK_EXPORT suite_add_tcase (Suite *s, TCase *tc);
+/**
+ * Creates a test suite with the given name.
+ *
+ * Create a suite, which will contain test cases. Once
+ * created, use suite_add_tcase() to add test cases.
+ * When finished, create a suite runner from the
+ * suite using srunner_create()
+ *
+ * @param name name of the suite
+ *
+ * @return suite
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP Suite *CK_EXPORT suite_create (const char *name);
 
-/* Create a test case */
-TCase * CK_EXPORT tcase_create (const char *name);
+/**
+ * Determines whether a given test suite contains a case named after a
+ * given string.
+ *
+ * @param s suite to check
+ * @param tcname test case to look for
+ *
+ * @return 1 iff the given test case is within the given suite;
+ *          0 otherwise
+ *
+ * @since 0.9.9
+ */
+CK_DLL_EXP int CK_EXPORT suite_tcase (Suite * s, const char *tcname);
 
-/* Add a test function to a test case (macro version) */
+/**
+ * Add a test case to a suite
+ *
+ * @param s suite to add test case to
+ * @param tc test case to add to suite
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP void CK_EXPORT suite_add_tcase (Suite * s, TCase * tc);
+
+/**
+ * Create a test case.
+ *
+ * Once created, tests can be added with the tcase_add_test()
+ * function, and the test case assigned to a suite with the
+ * suite_add_tcase() function.
+ *
+ * @param name name of the test case
+ *
+ * @return test case containing no tests
+ *
+ * @since 0.6.0
+ * */
+CK_DLL_EXP TCase *CK_EXPORT tcase_create (const char *name);
+
+/**
+ * Add a test function to a test case
+ *
+ * @param tc test case to add test to
+ * @param tf test function to add to test case
+ *
+ * @since 0.6.0
+ * */
 #define tcase_add_test(tc,tf) tcase_add_test_raise_signal(tc,tf,0)
 
-/* Add a test function with signal handling to a test case (macro version) */
+/**
+ * Add a test function with signal handling to a test case
+ *
+ * The added test is expected to terminate by throwing the given signal
+ *
+ * @param tc test case to add test to
+ * @param tf test function to add to test case
+ * @param signal expected signal for test function to throw in order for
+ *                the test to be considered passing
+ *
+ * @since 0.9.2
+ * */
 #define tcase_add_test_raise_signal(tc,tf,signal) \
    _tcase_add_test((tc),(tf),"" # tf "",(signal), 0, 0, 1)
 
-/* Add a test function with an expected exit value to a test case (macro version) */
+/**
+ * Add a test function with an expected exit value to a test case
+ *
+ * The added test is expected to terminate by exiting with the given value
+ *
+ * @param tc test case to add test to
+ * @param tf test function to add to test case
+ * @param expected_exit_value exit value for test function to return in
+ *                             order for the test to be considered passing
+ *
+ * @since 0.9.7
+ */
 #define tcase_add_exit_test(tc, tf, expected_exit_value) \
   _tcase_add_test((tc),(tf),"" # tf "",0,(expected_exit_value),0,1)
 
-/* Add a looping test function to a test case (macro version)
-
-   The test will be called in a for(i = s; i < e; i++) loop with each
-   iteration being executed in a new context. The loop variable 'i' is
-   available in the test.
+/**
+ * Add a looping test function to a test case
+ *
+ * The test will be called in a for(i = s; i < e; i++) loop with each
+ * iteration being executed in a new context. The loop variable 'i' is
+ * available in the test.
+ *
+ * @param tc test case to add test to
+ * @param tf function to add to test case
+ * @param s starting index for value "i" in test
+ * @param e ending index for value "i" in test
+ *
+ * @since 0.9.4
  */
 #define tcase_add_loop_test(tc,tf,s,e) \
   _tcase_add_test((tc),(tf),"" # tf "",0,0,(s),(e))
- 
-/* Signal version of loop test.  
-   FIXME: add a test case; this is untested as part of Check's tests.
+
+/**
+ * Add a looping test function with signal handling to a test case
+ *
+ * The test will be called in a for(i = s; i < e; i++) loop with each
+ * iteration being executed in a new context. The loop variable 'i' is
+ * available in the test.
+ *
+ * The added test is expected to terminate by throwing the given signal
+ *
+ * @param tc test case to add test to
+ * @param tf function to add to test case
+ * @param signal expected signal for test function to throw in order for
+ *                the test to be considered passing
+ * @param s starting index for value "i" in test
+ * @param e ending index for value "i" in test
+ *
+ * @since 0.9.5
  */
 #define tcase_add_loop_test_raise_signal(tc,tf,signal,s,e) \
   _tcase_add_test((tc),(tf),"" # tf "",(signal),0,(s),(e))
 
-/* allowed exit value version of loop test. */
+/**
+ * Add a looping test function with an expected exit value to a test case
+ *
+ * The test will be called in a for(i = s; i < e; i++) loop with each
+ * iteration being executed in a new context. The loop variable 'i' is
+ * available in the test.
+ *
+ * The added test is expected to terminate by exiting with the given value
+ *
+ * @param tc test case to add test to
+ * @param tf function to add to test case
+ * @param expected_exit_value exit value for test function to return in
+ *                             order for the test to be considered passing
+ * @param s starting index for value "i" in test
+ * @param e ending index for value "i" in test
+ *
+ * @since 0.9.7
+ */
 #define tcase_add_loop_exit_test(tc,tf,expected_exit_value,s,e) \
   _tcase_add_test((tc),(tf),"" # tf "",0,(expected_exit_value),(s),(e))
 
 /* Add a test function to a test case
   (function version -- use this when the macro won't work
 */
-void CK_EXPORT _tcase_add_test (TCase *tc, TFun tf, const char *fname, int _signal, int allowed_exit_value, int start, int end);
+CK_DLL_EXP void CK_EXPORT _tcase_add_test (TCase * tc, TFun tf,
+    const char *fname, int _signal, int allowed_exit_value, int start, int end);
 
-/* Add unchecked fixture setup/teardown functions to a test case
+/**
+ * Add unchecked fixture setup/teardown functions to a test case
+ *
+ * Unchecked fixture functions are run at the start and end of the
+ * test case, and not before and after unit tests. Further,
+ * unchecked fixture functions are not run in a separate address space,
+ * like test functions, and so must not exit or signal (e.g.,
+ * segfault).
+ *
+ * Also, when run in CK_NOFORK mode, unchecked fixture functions may
+ * lead to different unit test behavior if unit tests change data
+ * setup by the fixture functions.
+ *
+ * Note that if a setup function fails, the remaining setup functions
+ * will be omitted, as will the test case and the teardown functions.
+ * If a teardown function fails the remaining teardown functins will be
+ * omitted.
+ *
+ * @param tc test case to add unchecked fixture setup/teardown to
+ * @param setup function to add to be executed before the test case;
+ *               if NULL no setup function is added
+ * @param teardown function to add to be executed after the test case;
+ *               if NULL no teardown function is added
+ * @since 0.8.0
+ */
+CK_DLL_EXP void CK_EXPORT tcase_add_unchecked_fixture (TCase * tc, SFun setup,
+    SFun teardown);
 
-   If unchecked fixture functions are run at the start and end of the
-   test case, and not before and after unit tests. Note that unchecked
-   setup/teardown functions are not run in a separate address space,
-   like test functions, and so must not exit or signal (e.g.,
-   segfault)
-
-   Also, when run in CK_NOFORK mode, unchecked fixture functions may
-   lead to different unit test behavior IF unit tests change data
-   setup by the fixture functions.
+/**
+ * Add checked fixture setup/teardown functions to a test case
+ *
+ * Checked fixture functions are run before and after each unit test inside
+ * of the address space of the test. Thus, if using CK_FORK
+ * mode the separate process running the unit test will survive signals
+ * or unexpected exits in the fixture function. Also, if the setup
+ * function is idempotent, unit test behavior will be the same in
+ * CK_FORK and CK_NOFORK modes.
+ *
+ * However, since fixture functions are run before and after each unit
+ * test, they should not be expensive code.
+ *
+ * Note that if a setup function fails, the remaining setup functions
+ * will be omitted, as will the test and the teardown functions. If a
+ * teardown function fails the remaining teardown functins will be
+ * omitted.
+ *
+ * @param tc test case to add checked fixture setup/teardown to
+ * @param setup function to add to be executed before each unit test in
+ *               the test case;  if NULL no setup function is added
+ * @param teardown function to add to be executed after each unit test in
+ *               the test case; if NULL no teardown function is added
+ *
+ * @since 0.8.0
 */
-void CK_EXPORT tcase_add_unchecked_fixture (TCase *tc, SFun setup, SFun teardown);
+CK_DLL_EXP void CK_EXPORT tcase_add_checked_fixture (TCase * tc, SFun setup,
+    SFun teardown);
 
-/* Add fixture setup/teardown functions to a test case
+/**
+ * Set the timeout for all tests in a test case.
+ *
+ * A test that lasts longer than the timeout (in seconds) will be killed
+ * and thus fail with an error.
+ *
+ * If not set, the default timeout is one assigned at compile time. If
+ * the environment variable CK_DEFAULT_TIMEOUT is defined and no timeout
+ * is set, the value in the environment variable is used.
+ *
+ * @param tc test case to assign timeout to
+ * @param timeout to use, in seconds. If the value contains a decimal
+ *                 portion, but no high resolution timer is available,
+ *                 the value is rounded up to the nearest second.
+ *
+ * @since 0.9.2
+ */
+CK_DLL_EXP void CK_EXPORT tcase_set_timeout (TCase * tc, double timeout);
 
-   Checked fixture functions are run before and after unit
-   tests. Unlike unchecked fixture functions, checked fixture
-   functions are run in the same separate address space as the test
-   program, and thus the test function will survive signals or
-   unexpected exits in the fixture function. Also, IF the setup
-   function is idempotent, unit test behavior will be the same in
-   CK_FORK and CK_NOFORK modes.
-
-   However, since fixture functions are run before and after each unit
-   test, they should not be expensive code.
-
-*/ 
-void CK_EXPORT tcase_add_checked_fixture (TCase *tc, SFun setup, SFun teardown);
-
-/* Set the timeout for all tests in a test case. A test that lasts longer
-   than the timeout (in seconds) will be killed and thus fail with an error.
-   The timeout can also be set globaly with the environment variable
-   CK_DEFAULT_TIMEOUT, the specific setting always takes precedence.
-*/
-void CK_EXPORT tcase_set_timeout (TCase *tc, int timeout);
- 
 /* Internal function to mark the start of a test function */
-void CK_EXPORT tcase_fn_start (const char *fname, const char *file, int line);
+CK_DLL_EXP void CK_EXPORT tcase_fn_start (const char *fname, const char *file,
+    int line);
 
-/* Start a unit test with START_TEST(unit_name), end with END_TEST
-   One must use braces within a START_/END_ pair to declare new variables
-*/ 
+/**
+ * Start a unit test with START_TEST(unit_name), end with END_TEST.
+ *
+ * One must use braces within a START_/END_ pair to declare new variables
+ *
+ * @since 0.6.0
+ */
 #define START_TEST(__testname)\
 static void __testname (int _i CK_ATTRIBUTE_UNUSED)\
 {\
   tcase_fn_start (""# __testname, __FILE__, __LINE__);
 
-/* End a unit test */
+/**
+ *  End a unit test
+ *
+ * @since 0.6.0
+ */
 #define END_TEST }
 
-/* Fail the test case unless expr is true */
-/* The space before the comma sign before ## is essential to be compatible
-   with gcc 2.95.3 and earlier.
-*/
-#define fail_unless(expr, ...)\
-        _fail_unless(expr, __FILE__, __LINE__,\
-        "Assertion '"#expr"' failed" , ## __VA_ARGS__, NULL)
+/*
+ * Fail the test case unless expr is false
+ *
+ * This call is deprecated.
+ */
+#define fail_unless ck_assert_msg
 
-/* Fail the test case if expr is true */
-/* The space before the comma sign before ## is essential to be compatible
-   with gcc 2.95.3 and earlier.
-*/
-
-/* FIXME: these macros may conflict with C89 if expr is 
-   FIXME:   strcmp (str1, str2) due to excessive string length. */
+/*
+ * Fail the test case if expr is false
+ *
+ * This call is deprecated.
+ *
+ * NOTE: The space before the comma sign before ## is essential to be compatible
+ * with gcc 2.95.3 and earlier.
+ * FIXME: these macros may conflict with C89 if expr is
+ * FIXME:   strcmp (str1, str2) due to excessive string length.
+ */
 #define fail_if(expr, ...)\
-        _fail_unless(!(expr), __FILE__, __LINE__,\
-        "Failure '"#expr"' occured" , ## __VA_ARGS__, NULL)
+  (expr) ? \
+     _ck_assert_failed(__FILE__, __LINE__, "Failure '"#expr"' occurred" , ## __VA_ARGS__, NULL) \
+     : _mark_point(__FILE__, __LINE__)
 
-/* Always fail */
-#define fail(...) _fail_unless(0, __FILE__, __LINE__, "Failed", __VA_ARGS__, NULL)
+/*
+ * Fail the test
+ *
+ * This call is deprecated.
+ */
+#define fail ck_abort_msg
 
-/* Non macro version of #fail_unless, with more complicated interface */
-void CK_EXPORT _fail_unless (int result, const char *file,
-                             int line, const char *expr, ...);
+/*
+ * This is called whenever an assertion fails.
+ * Note that it only has the noreturn modifier when
+ * using fork. If fork is unavailable, the function
+ * calls longjmp() when a test assertion fails. Marking
+ * the function as noreturn causes gcc to make assumptions
+ * which are not valid, as longjmp() is like a return.
+ */
+#if @HAVE_FORK@
+CK_DLL_EXP void CK_EXPORT
+_ck_assert_failed (const char *file, int line, const char *expr, ...)
+    CK_ATTRIBUTE_NORETURN;
+#else
+CK_DLL_EXP void CK_EXPORT _ck_assert_failed (const char *file, int line,
+    const char *expr, ...);
+#endif
 
-/* New check fail API. */
+/**
+ * Fail the test if expression is false
+ *
+ * @param expr expression to evaluate
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_assert(expr) ck_assert_msg(expr, NULL)
+
+/* The space before the comma sign before ## is essential to be compatible
+   with gcc 2.95.3 and earlier.
+*/
+/**
+ * Fail the test if the expression is false; print message on failure
+ *
+ * @param expr expression to evaluate
+ * @param ... message to print (in printf format) if expression is false
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_assert_msg(expr, ...) \
+  (expr) ? \
+     _mark_point(__FILE__, __LINE__) : \
+     _ck_assert_failed(__FILE__, __LINE__, "Assertion '"#expr"' failed" , ## __VA_ARGS__, NULL)
+
+/**
+ * Unconditionally fail the test
+ *
+ * @note Once called, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
 #define ck_abort() ck_abort_msg(NULL)
-#define ck_abort_msg fail
-#define ck_assert(C) ck_assert_msg(C, NULL)
-#define ck_assert_msg fail_unless
+/**
+ * Unconditionally fail the test; print a message
+ *
+ * @param ... message to print (in printf format)
+ *
+ * @note Once called, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_abort_msg(...) _ck_assert_failed(__FILE__, __LINE__, "Failed" , ## __VA_ARGS__, NULL)
 
-/* Integer comparsion macros with improved output compared to fail_unless(). */
-/* O may be any comparion operator. */
-#define _ck_assert_int(X, O, Y) ck_assert_msg((X) O (Y), "Assertion '"#X#O#Y"' failed: "#X"==%d, "#Y"==%d", X, Y) 
-#define ck_assert_int_eq(X, Y) _ck_assert_int(X, ==, Y) 
-#define ck_assert_int_ne(X, Y) _ck_assert_int(X, !=, Y) 
+/* Signed and unsigned integer comparison macros with improved output compared to ck_assert(). */
+/* OP may be any comparison operator. */
+#define _ck_assert_int(X, OP, Y) do { \
+  gint64 _ck_x = (X); \
+  gint64 _ck_y = (Y); \
+  ck_assert_msg(_ck_x OP _ck_y, "Assertion '%s' failed: " \
+      "%s==%" G_GINT64_FORMAT ", %s==%" G_GINT64_FORMAT, #X#OP#Y, #X, _ck_x, #Y, _ck_y); \
+} while (0)
 
-/* String comparsion macros with improved output compared to fail_unless() */
-#define _ck_assert_str(C, X, O, Y) ck_assert_msg(C, "Assertion '"#X#O#Y"' failed: "#X"==\"%s\", "#Y"==\"%s\"", X, Y) 
-#define ck_assert_str_eq(X, Y) _ck_assert_str(!strcmp(X, Y), X, ==, Y)
-#define ck_assert_str_ne(X, Y) _ck_assert_str(strcmp(X, Y), X, !=, Y)
+/**
+ * Check two signed integers to determine if X==Y
+ *
+ * If not X==Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_assert_int_eq(X, Y) _ck_assert_int(X, ==, Y)
+/**
+ * Check two signed integers to determine if X!=Y
+ *
+ * If not X!=Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_assert_int_ne(X, Y) _ck_assert_int(X, !=, Y)
+/**
+ * Check two signed integers to determine if X<Y
+ *
+ * If not X<Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_int_lt(X, Y) _ck_assert_int(X, <, Y)
+/**
+ * Check two signed integers to determine if X<=Y
+ *
+ * If not X<=Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_int_le(X, Y) _ck_assert_int(X, <=, Y)
+/**
+ * Check two signed integers to determine if X>Y
+ *
+ * If not X>Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_int_gt(X, Y) _ck_assert_int(X, >, Y)
+/**
+ * Check two signed integers to determine if X>=Y
+ *
+ * If not X>=Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_int_ge(X, Y) _ck_assert_int(X, >=, Y)
 
+#define _ck_assert_uint(X, OP, Y) do { \
+  guint64 _ck_x = (X); \
+  guint64 _ck_y = (Y); \
+  ck_assert_msg(_ck_x OP _ck_y, "Assertion '%s' failed: " \
+      "%s==%" G_GUINT64_FORMAT ", %s==%" G_GUINT64_FORMAT, #X#OP#Y, #X, _ck_x, #Y, _ck_y); \
+} while (0)
+/**
+ * Check two unsigned integers to determine if X==Y
+ *
+ * If not X==Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_uint_eq(X, Y) _ck_assert_uint(X, ==, Y)
+/**
+ * Check two unsigned integers to determine if X!=Y
+ *
+ * If not X!=Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_uint_ne(X, Y) _ck_assert_uint(X, !=, Y)
+/**
+ * Check two unsigned integers to determine if X<Y
+ *
+ * If not X<Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_uint_lt(X, Y) _ck_assert_uint(X, <, Y)
+/**
+ * Check two unsigned integers to determine if X<=Y
+ *
+ * If not X<=Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_uint_le(X, Y) _ck_assert_uint(X, <=, Y)
+/**
+ * Check two unsigned integers to determine if X>Y
+ *
+ * If not X>Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_uint_gt(X, Y) _ck_assert_uint(X, >, Y)
+/**
+ * Check two unsigned integers to determine if X>=Y
+ *
+ * If not X>=Y, the test fails.
+ *
+ * @param X signed integer
+ * @param Y signed integer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_uint_ge(X, Y) _ck_assert_uint(X, >=, Y)
 
-/* Mark the last point reached in a unit test
-   (useful for tracking down where a segfault, etc. occurs)
+/* String comparison macros with improved output compared to ck_assert() */
+/* OP might be any operator that can be used in '0 OP strcmp(X,Y)' comparison */
+/* The x and y parameter swap in strcmp() is needed to handle >, >=, <, <= operators */
+#define _ck_assert_str(X, OP, Y) do { \
+  const char* _ck_x = (X); \
+  const char* _ck_y = (Y); \
+  ck_assert_msg(0 OP strcmp(_ck_y, _ck_x), \
+    "Assertion '%s' failed: %s==\"%s\", %s==\"%s\"", #X#OP#Y, #X, _ck_x, #Y, _ck_y); \
+} while (0)
+/**
+ * Check two strings to determine if 0==strcmp(X,Y)
+ *
+ * If not 0==strcmp(X,Y), the test fails.
+ *
+ * @param X string
+ * @param Y string to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_assert_str_eq(X, Y) _ck_assert_str(X, ==, Y)
+/**
+ * Check two strings to determine if 0!=strcmp(X,Y)
+ *
+ * If not 0!=strcmp(X,Y), the test fails.
+ *
+ * @param X string
+ * @param Y string to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.6
+ */
+#define ck_assert_str_ne(X, Y) _ck_assert_str(X, !=, Y)
+/**
+ * Check two strings to determine if 0<strcmp(X,Y), (e.g. strcmp(X,Y)>0)
+ *
+ * If not 0<strcmp(X,Y), the test fails.
+ *
+ * @param X string
+ * @param Y string to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_str_lt(X, Y) _ck_assert_str(X, <, Y)
+/**
+ * Check two strings to determine if 0<=strcmp(X,Y) (e.g. strcmp(X,Y)>=0)
+ *
+ * If not 0<=strcmp(X,Y), the test fails.
+ *
+ * @param X string
+ * @param Y string to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_str_le(X, Y) _ck_assert_str(X, <=, Y)
+/**
+ * Check two strings to determine if 0<strcmp(X,Y) (e.g. strcmp(X,Y)>0)
+ *
+ * If not 0<strcmp(X,Y), the test fails.
+ *
+ * @param X string
+ * @param Y string to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_str_gt(X, Y) _ck_assert_str(X, >, Y)
+/**
+ * Check two strings to determine if 0>=strcmp(X,Y) (e.g. strcmp(X,Y)<=0)
+ *
+ * If not 0>=strcmp(X,Y), the test fails.
+ *
+ * @param X string
+ * @param Y string to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_str_ge(X, Y) _ck_assert_str(X, >=, Y)
+
+/* Pointer comparison macros with improved output compared to ck_assert(). */
+/* OP may only be == or !=  */
+#define _ck_assert_ptr(X, OP, Y) do { \
+  const void* _ck_x = (X); \
+  const void* _ck_y = (Y); \
+  ck_assert_msg(_ck_x OP _ck_y, "Assertion '%s' failed: %s==%#x, %s==%#x", #X#OP#Y, #X, _ck_x, #Y, _ck_y); \
+} while (0)
+
+/**
+ * Check if two pointers are equal.
+ *
+ * If the two passed pointers are not equal, the test
+ * fails.
+ *
+ * @param X pointer
+ * @param Y pointer to compare against X
+ *
+ * @note If the check fails, the remaining of the test is aborted
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_ptr_eq(X, Y) _ck_assert_ptr(X, ==, Y)
+
+/**
+ * Check if two pointers are not.
+ *
+ * If the two passed pointers are equal, the test fails.
+ *
+ * @param X pointer
+ * @param Y pointer to compare against X
+ *
+ * @since 0.9.10
+ */
+#define ck_assert_ptr_ne(X, Y) _ck_assert_ptr(X, !=, Y)
+
+/**
+ * Mark the last point reached in a unit test.
+ *
+ * If the test throws a signal or exits, the location noted with the
+ * failure is the last location of a ck_assert*() or ck_abort() call.
+ * Use mark_point() to record intermediate locations (useful for tracking down
+ * crashes or exits).
+ *
+ * @since 0.6.0
 */
 #define mark_point() _mark_point(__FILE__,__LINE__)
 
 /* Non macro version of #mark_point */
-void CK_EXPORT _mark_point (const char *file, int line);
+CK_DLL_EXP void CK_EXPORT _mark_point (const char *file, int line);
 
-/* Result of a test */
-enum test_result {
-  CK_TEST_RESULT_INVALID, /* Default value; should not encounter this */
-  CK_PASS, /* Test passed*/
-  CK_FAILURE, /* Test completed but failed */
-  CK_ERROR /* Test failed to complete
-	      (unexpected signal or non-zero early exit) */ 
+/**
+ * Enum describing the possible results of a test
+ */
+enum test_result
+{
+  CK_TEST_RESULT_INVALID,       /**< Default value; should not encounter this */
+  CK_PASS,                      /**< Test passed */
+  CK_FAILURE,                   /**< Test completed but failed */
+  CK_ERROR                      /**< Test failed to complete
+                                   (unexpected signal or non-zero early exit) */
 };
 
-/* Specifies the how much output an SRunner should produce */
-enum print_output {
-  CK_SILENT, /* No output */
-  CK_MINIMAL, /* Only summary output */
-  CK_NORMAL, /* All failed tests */
-  CK_VERBOSE, /* All tests */
-  CK_ENV, /* Look at environment var */
+/**
+ * Enum specifying the verbosity of output a SRunner should produce
+ */
+enum print_output
+{
+  CK_SILENT,                    /**< No output */
+  CK_MINIMAL,                   /**< Only summary output */
+  CK_NORMAL,                    /**< All failed tests */
+  CK_VERBOSE,                   /**< All tests */
+  CK_ENV,                       /**< Look at environment var CK_VERBOSITY
+                                     for what verbosity to use, which can be
+                                     either "silent", "minimal", "normal",
+                                     or "verbose". If the environment variable
+                                     is not set, then CK_NORMAL will be used.*/
 #if @ENABLE_SUBUNIT@
-  CK_SUBUNIT, /* Run as a subunit child process */
+  CK_SUBUNIT,                   /**< Run as a subunit child process */
 #endif
-  CK_LAST
+  CK_LAST                       /**< Not a valid option */
 };
 
-/* Holds state for a running of a test suite */
+/**
+ * Holds state for a running of a test suite
+ */
 typedef struct SRunner SRunner;
 
-/* Opaque type for a test failure */
+/**
+ * Opaque type for a test failure
+ */
 typedef struct TestResult TestResult;
 
-/* accessors for tr fields */
-enum ck_result_ctx {
-  CK_CTX_INVALID, /* Default value; should not encounter this */
-  CK_CTX_SETUP,
-  CK_CTX_TEST,
-  CK_CTX_TEARDOWN
+/**
+ * Enum representing the types of contexts for a test
+ */
+enum ck_result_ctx
+{
+  CK_CTX_INVALID,               /**< Default value; should not encounter this */
+  CK_CTX_SETUP,                 /**< Setup before a test */
+  CK_CTX_TEST,                  /**< Body of test itself */
+  CK_CTX_TEARDOWN               /**< Teardown after a test */
 };
 
-/* Type of result */
-int CK_EXPORT tr_rtype (TestResult *tr);
-/* Context in which the result occurred */ 
-enum ck_result_ctx CK_EXPORT tr_ctx (TestResult *tr); 
-/* Failure message */
-const char * CK_EXPORT tr_msg (TestResult *tr);
-/* Line number at which failure occured */
-int CK_EXPORT tr_lno (TestResult *tr);
-/* File name at which failure occured */
-const char * CK_EXPORT tr_lfile (TestResult *tr);
-/* Test case in which unit test was run */
-const char * CK_EXPORT tr_tcname (TestResult *tr);
+/**
+ * Retrieve type of result that the given test result represents.
+ *
+ * This is a member of test_result, and can represent a
+ * pass, failure, or error.
+ *
+ * @param tr test result to retrieve result from
+ *
+ * @return result of given test
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP int CK_EXPORT tr_rtype (TestResult * tr);
 
-/* Creates an SRunner for the given suite */
-SRunner * CK_EXPORT srunner_create (Suite *s);
+/**
+ * Retrieve context in which the result occurred for the given test result.
+ *
+ * The types of contents include the test setup, teardown, or the
+ * body of the test itself.
+ *
+ * @param tr test result to retrieve context from
+ *
+ * @return context to which the given test result applies
+ *
+ * @since 0.8.0
+ */
+CK_DLL_EXP enum ck_result_ctx CK_EXPORT tr_ctx (TestResult * tr);
 
-/* Adds a Suite to an SRunner */
-void CK_EXPORT srunner_add_suite (SRunner *sr, Suite *s);
+/**
+ * Retrieve failure message from test result, if applicable.
+ *
+ * @return pointer to a message, if one exists. NULL otherwise.
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP const char *CK_EXPORT tr_msg (TestResult * tr);
 
-/* Frees an SRunner, all suites added to it and all contained test cases */
-void CK_EXPORT srunner_free (SRunner *sr);
+/**
+ * Retrieve line number at which a failure occurred, if applicable.
+ *
+ * @return If the test resulted in a failure, returns the line number
+ *          that the failure occurred on; otherwise returns -1.
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP int CK_EXPORT tr_lno (TestResult * tr);
 
- 
-/* Test running */
+/**
+ * Retrieve file name at which a failure occurred, if applicable.
+ *
+ * @return If the test resulted in a failure, returns a string
+ *          containing the name of the file where the failure
+ *          occurred; otherwise returns NULL.
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP const char *CK_EXPORT tr_lfile (TestResult * tr);
 
-/* Runs an SRunner, printing results as specified (see enum print_output) */
-void CK_EXPORT srunner_run_all (SRunner *sr, enum print_output print_mode);
+/**
+ * Retrieve test case name in which a failure occurred, if applicable.
+ *
+ * @return If the test resulted in a failure, returns a string
+ *          containing the name of the test suite where the failure
+ *          occurred; otherwise returns NULL.
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP const char *CK_EXPORT tr_tcname (TestResult * tr);
 
- 
-/* Next functions are valid only after the suite has been
-   completely run, of course */
+/**
+ * Creates a suite runner for the given suite.
+ *
+ * Once created, additional suites can be added to the
+ * suite runner using srunner_add_suite(), and the suite runner can be
+ * run with srunner_run_all(). Once finished, the suite runner
+ * must be freed with srunner_free().
+ *
+ * @param s suite to generate a suite runner for
+ *
+ * @return suite runner for the given suite
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP SRunner *CK_EXPORT srunner_create (Suite * s);
 
-/* Number of failed tests in a run suite. Includes failures + errors */
-int CK_EXPORT srunner_ntests_failed (SRunner *sr);
+/**
+ * Add an additional suite to a suite runner.
+ *
+ * The first suite in a suite runner is always added in srunner_create().
+ * This call adds additional suites to a suite runner.
+ *
+ * @param sr suite runner to add the given suite
+ * @param s suite to add to the given suite runner
+ *
+ * @since 0.7.0
+ */
+CK_DLL_EXP void CK_EXPORT srunner_add_suite (SRunner * sr, Suite * s);
 
-/* Total number of tests run in a run suite */
-int CK_EXPORT srunner_ntests_run (SRunner *sr);
+/**
+ * Frees a suite runner, including all contained suite and test cases.
+ *
+ * This call is responsible for freeing all resources related to a
+ * suite runner and all contained suites and test cases. Suite and
+ * test cases need not be freed individually, as this call handles that.
+ *
+ * @param sr suite runner to free
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP void CK_EXPORT srunner_free (SRunner * sr);
 
-/* Return an array of results for all failures
-  
-   Number of failures is equal to srunner_nfailed_tests.  Memory for
-   the array is malloc'ed and must be freed, but individual TestResults
-   must not
+/**
+ * Runs a suite runner and all contained suite, printing results to
+ * stdout as specified by the print_mode.
+ *
+ * In addition to running all suites, if the suite runner has been
+ * configured to output to a log, that is also performed.
+ *
+ * Note that if the CK_RUN_CASE and/or CK_RUN_SUITE environment variables
+ * are defined, then only the named suite and/or test case is run.
+ *
+ * @param sr suite runner to run all suites from
+ * @param print_mode the verbosity in which to report results to stdout
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP void CK_EXPORT srunner_run_all (SRunner * sr,
+    enum print_output print_mode);
+
+/**
+ * Run a specific suite or test case from a suite runner, printing results
+ * to stdout as specified by the print_mode.
+ *
+ * In addition to running any applicable suites or test cases, if the
+ * suite runner has been configured to output to a log, that is also
+ * performed.
+ *
+ * @param sr suite runner where the given suite or test case must be
+ * @param sname suite name to run. A NULL means "any suite".
+ * @param tcname test case name to run. A NULL means "any test case"
+ * @param print_mode the verbosity in which to report results to stdout
+ *
+ * @since 0.9.9
+ */
+CK_DLL_EXP void CK_EXPORT srunner_run (SRunner * sr, const char *sname,
+    const char *tcname, enum print_output print_mode);
+
+
+/**
+ * Retrieve the number of failed tests executed by a suite runner.
+ *
+ * This value represents both test failures and errors.
+ *
+ * @param sr suite runner to query for all failed tests
+ *
+ * @return number of test failures and errors found by the suite runner
+ *
+ * @since 0.6.1
+ */
+CK_DLL_EXP int CK_EXPORT srunner_ntests_failed (SRunner * sr);
+
+/**
+ * Retrieve the total number of tests run by a suite runner.
+ *
+ * @param sr suite runner to query for all tests run
+ *
+ * @return number of all tests run by the suite runner
+ *
+ * @since 0.6.1
+ */
+CK_DLL_EXP int CK_EXPORT srunner_ntests_run (SRunner * sr);
+
+/**
+ * Return an array of results for all failures found by a suite runner.
+ *
+ * Number of results is equal to srunner_nfailed_tests().
+ *
+ * Information about individual results can be queried using:
+ * tr_rtype(), tr_ctx(), tr_msg(), tr_lno(), tr_lfile(), and tr_tcname().
+ *
+ * Memory is malloc'ed and must be freed; however free the entire structure
+ * instead of individual test cases.
+ *
+ * @param sr suite runner to retrieve results from
+ *
+ * @return array of TestResult objects
+ *
+ * @since 0.6.0
+ */
+CK_DLL_EXP TestResult **CK_EXPORT srunner_failures (SRunner * sr);
+
+/**
+ * Return an array of results for all tests run by a suite runner.
+ *
+ * Number of results is equal to srunner_ntests_run(), and excludes
+ * failures due to setup function failure.
+ *
+ * Information about individual results can be queried using:
+ * tr_rtype(), tr_ctx(), tr_msg(), tr_lno(), tr_lfile(), and tr_tcname().
+ *
+ * Memory is malloc'ed and must be freed; however free the entire structure
+ * instead of individual test cases.
+ *
+ * @param sr suite runner to retrieve results from
+ *
+ * @return array of TestResult objects
+ *
+ * @since 0.6.1
 */
-TestResult ** CK_EXPORT srunner_failures (SRunner *sr);
+CK_DLL_EXP TestResult **CK_EXPORT srunner_results (SRunner * sr);
 
-/* Return an array of results for all run tests
+/**
+ * Print the results contained in an SRunner to stdout.
+ *
+ * @param sr suite runner to print results for to stdout
+ * @param print_mode the print_output (verbosity) to use to report
+ *         the result
+ *
+ * @since 0.7.0
+ */
+CK_DLL_EXP void CK_EXPORT srunner_print (SRunner * sr,
+    enum print_output print_mode);
 
-   Number of results is equal to srunner_ntests_run, and excludes
-   failures due to setup function failure.
-
-   Memory is malloc'ed and must be freed, but individual TestResults
-   must not
-*/  
-TestResult ** CK_EXPORT srunner_results (SRunner *sr);
-
- 
-/* Printing */
-
-/* Print the results contained in an SRunner */
-void CK_EXPORT srunner_print (SRunner *sr, enum print_output print_mode);
-  
-  
-/* Set a log file to which to write during test running.
-
-  Log file setting is an initialize only operation -- it should be
-  done immediatly after SRunner creation, and the log file can't be
-  changed after being set.
+/**
+ * Set the suite runner to output the result in log format to the
+ * given file.
+ *
+ * Note: log file setting is an initialize only operation -- it should
+ * be done immediately after SRunner creation, and the log file can't be
+ * changed after being set.
+ *
+ * This setting does not conflict with the other log output types;
+ * all logging types can occur concurrently if configured.
+ *
+ * @param sr suite runner to log results of in log format
+ * @param fname file name to output log results to
+ *
+ * @since 0.7.1
 */
-void CK_EXPORT srunner_set_log (SRunner *sr, const char *fname);
+CK_DLL_EXP void CK_EXPORT srunner_set_log (SRunner * sr, const char *fname);
 
-/* Does the SRunner have a log file? */
-int CK_EXPORT srunner_has_log (SRunner *sr);
+/**
+ * Checks if the suite runner is assigned a file for log output.
+ *
+ * @param sr suite runner to check
+ *
+ * @return 1 iff the suite runner currently is configured to output
+ *         in log format; 0 otherwise
+ *
+ * @since 0.7.1
+ */
+CK_DLL_EXP int CK_EXPORT srunner_has_log (SRunner * sr);
 
-/* Return the name of the log file, or NULL if none */
-const char * CK_EXPORT srunner_log_fname (SRunner *sr);
+/**
+ * Retrieves the name of the currently assigned file
+ * for log output, if any exists.
+ *
+ * @return the name of the log file, or NULL if none is configured
+ *
+ * @since 0.7.1
+ */
+CK_DLL_EXP const char *CK_EXPORT srunner_log_fname (SRunner * sr);
 
-/* Set a xml file to which to write during test running.
-
-  XML file setting is an initialize only operation -- it should be
-  done immediatly after SRunner creation, and the XML file can't be
-  changed after being set.
+/**
+ * Set the suite runner to output the result in XML format to the
+ * given file.
+ *
+ * Note: XML file setting is an initialize only operation -- it should
+ * be done immediately after SRunner creation, and the XML file can't be
+ * changed after being set.
+ *
+ * This setting does not conflict with the other log output types;
+ * all logging types can occur concurrently if configured.
+ *
+ * @param sr suite runner to log results of in XML format
+ * @param fname file name to output XML results to
+ *
+ * @since 0.9.1
 */
-void CK_EXPORT srunner_set_xml (SRunner *sr, const char *fname);
+CK_DLL_EXP void CK_EXPORT srunner_set_xml (SRunner * sr, const char *fname);
 
-/* Does the SRunner have an XML log file? */
-int CK_EXPORT srunner_has_xml (SRunner *sr);
+/**
+ * Checks if the suite runner is assigned a file for XML output.
+ *
+ * @param sr suite runner to check
+ *
+ * @return 1 iff the suite runner currently is configured to output
+ *         in XML format; 0 otherwise
+ *
+ * @since 0.9.1
+ */
+CK_DLL_EXP int CK_EXPORT srunner_has_xml (SRunner * sr);
 
-/* Return the name of the XML file, or NULL if none */
-const char * CK_EXPORT srunner_xml_fname (SRunner *sr);
+/**
+ * Retrieves the name of the currently assigned file
+ * for XML output, if any exists.
+ *
+ * @return the name of the XML file, or NULL if none is configured
+ *
+ * @since 0.9.1
+ */
+CK_DLL_EXP const char *CK_EXPORT srunner_xml_fname (SRunner * sr);
 
+/**
+ * Set the suite runner to output the result in TAP format to the
+ * given file.
+ *
+ * Note: TAP file setting is an initialize only operation -- it should
+ * be done immediately after SRunner creation, and the TAP file can't be
+ * changed after being set.
+ *
+ * This setting does not conflict with the other log output types;
+ * all logging types can occur concurrently if configured.
+ *
+ * @param sr suite runner to log results of in TAP format
+ * @param fname file name to output TAP results to
+ *
+ * @since 0.9.12
+*/
+CK_DLL_EXP void CK_EXPORT srunner_set_tap (SRunner * sr, const char *fname);
 
-/* Control forking */
-enum fork_status {
-  CK_FORK_GETENV, /* look in the environment for CK_FORK */
-  CK_FORK,        /* call fork to run tests */
-  CK_NOFORK       /* don't call fork */
+/**
+ * Checks if the suite runner is assigned a file for TAP output.
+ *
+ * @param sr suite runner to check
+ *
+ * @return 1 iff the suite runner currently is configured to output
+ *         in TAP format; 0 otherwise
+ *
+ * @since 0.9.12
+ */
+CK_DLL_EXP int CK_EXPORT srunner_has_tap (SRunner * sr);
+
+/**
+ * Retrieves the name of the currently assigned file
+ * for TAP output, if any exists.
+ *
+ * @return the name of the TAP file, or NULL if none is configured
+ *
+ * @since 0.9.12
+ */
+CK_DLL_EXP const char *CK_EXPORT srunner_tap_fname (SRunner * sr);
+
+/**
+ * Enum describing the current fork usage.
+ */
+enum fork_status
+{
+  CK_FORK_GETENV,               /**< look in the environment for CK_FORK */
+  CK_FORK,                      /**< call fork to run tests */
+  CK_NOFORK                     /**< don't call fork */
 };
- 
-/* Get the current fork status */
-enum fork_status CK_EXPORT srunner_fork_status (SRunner *sr);
 
-/* Set the current fork status */
-void CK_EXPORT srunner_set_fork_status (SRunner *sr, enum fork_status fstat); 
-  
-/* Fork in a test and make sure messaging and tests work. */
-pid_t CK_EXPORT check_fork(void);
+/**
+ * Retrieve the current fork status for the given suite runner
+ *
+ * @param sr suite runner to check fork status of
+ *
+ * @since 0.8.0
+ */
+CK_DLL_EXP enum fork_status CK_EXPORT srunner_fork_status (SRunner * sr);
 
-/* Wait for the pid and exit. If pid is zero, just exit. */
-void CK_EXPORT check_waitpid_and_exit(pid_t pid);
+/**
+ * Set the fork status for a given suite runner.
+ *
+ * The default fork status is CK_FORK_GETENV, which will look
+ * for the CK_FORK environment variable, which can be set to
+ * "yes" or "no". If the environment variable is not present,
+ * CK_FORK will be used if fork() is available on the system,
+ * otherwise CK_NOFORK is used.
+ *
+ * If set to CK_FORK or CK_NOFORK, the environment variable
+ * if defined is ignored.
+ *
+ * @param sr suite runner to assign the fork status to
+ * @param fstat fork status to assign
+ *
+ * @since 0.8.0
+ */
+CK_DLL_EXP void CK_EXPORT srunner_set_fork_status (SRunner * sr,
+    enum fork_status fstat);
 
-#ifdef __cplusplus 
+/**
+ * Invoke fork() during a test and assign the child to the same
+ * process group that the rest of the test case uses.
+ *
+ * One can invoke fork() directly during a test; however doing so
+ * may not guarantee that any children processes are destroyed once
+ * the test finishes. Once a test has completed, all processes in
+ * the process group will be killed; using this wrapper will prevent
+ * orphan processes.
+ *
+ * @return On success, the PID of the child process is returned in
+ *          the parent, and 0 is returned in the child.  On failure,
+ *          an error will be printed and exit() invoked.
+ *
+ * @since 0.9.3
+ */
+CK_DLL_EXP pid_t CK_EXPORT check_fork (void);
+
+/**
+ * Wait for the pid and exit.
+ *
+ * This is to be used in conjunction with check_fork(). When called,
+ * will wait for the given process to terminate. If the process
+ * exited without error, exit(EXIT_SUCCESS) is invoked; otherwise
+ * exit(EXIT_FAILURE) is invoked.
+ *
+ * @param pid process to wait for, created by check_fork()
+ *
+ * @since 0.9.3
+ */
+CK_DLL_EXP void CK_EXPORT
+check_waitpid_and_exit (pid_t pid)
+    CK_ATTRIBUTE_NORETURN;
+
+#ifdef __cplusplus
 CK_CPPEND
 #endif
-
 #endif /* CHECK_H */
diff --git a/libs/gst/check/libcheck/check_error.c b/libs/gst/check/libcheck/check_error.c
index 247b9ca..9ee1dd1 100644
--- a/libs/gst/check/libcheck/check_error.c
+++ b/libs/gst/check/libcheck/check_error.c
@@ -18,22 +18,29 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <errno.h>
+#include <setjmp.h>
 
 #include "check_error.h"
 
+/**
+ * Storage for setjmp/longjmp context information used in NOFORK mode
+ */
+jmp_buf error_jmp_buffer;
+
 
 /* FIXME: including a colon at the end is a bad way to indicate an error */
 void
 eprintf (const char *fmt, const char *file, int line, ...)
 {
   va_list args;
+
   fflush (stderr);
 
   fprintf (stderr, "%s:%d: ", file, line);
@@ -53,6 +60,7 @@
 emalloc (size_t n)
 {
   void *p;
+
   p = malloc (n);
   if (p == NULL)
     eprintf ("malloc of %u bytes failed:", __FILE__, __LINE__ - 2, n);
@@ -63,6 +71,7 @@
 erealloc (void *ptr, size_t n)
 {
   void *p;
+
   p = realloc (ptr, n);
   if (p == NULL)
     eprintf ("realloc of %u bytes failed:", __FILE__, __LINE__ - 2, n);
diff --git a/libs/gst/check/libcheck/check_error.h b/libs/gst/check/libcheck/check_error.h
index 3fa0129..771a7fd 100644
--- a/libs/gst/check/libcheck/check_error.h
+++ b/libs/gst/check/libcheck/check_error.h
@@ -21,13 +21,20 @@
 #ifndef ERROR_H
 #define ERROR_H
 
+#include "libcompat.h"
+#include <setjmp.h>
+
+extern jmp_buf error_jmp_buffer;
+
 /* Include stdlib.h beforehand */
 
 /* Print error message and die
    If fmt ends in colon, include system error information */
-void eprintf (const char *fmt, const char *file, int line,...);
+void
+eprintf (const char *fmt, const char *file, int line, ...)
+    CK_ATTRIBUTE_NORETURN;
 /* malloc or die */
-void *emalloc(size_t n);
-void *erealloc(void *, size_t n);
+     void *emalloc (size_t n);
+     void *erealloc (void *, size_t n);
 
-#endif /*ERROR_H*/
+#endif /*ERROR_H */
diff --git a/libs/gst/check/libcheck/check_impl.h b/libs/gst/check/libcheck/check_impl.h
index c76488e..e5ca7e9 100644
--- a/libs/gst/check/libcheck/check_impl.h
+++ b/libs/gst/check/libcheck/check_impl.h
@@ -21,97 +21,117 @@
 #ifndef CHECK_IMPL_H
 #define CHECK_IMPL_H
 
-
 /* This header should be included by any module that needs
    to know the implementation details of the check structures
-   Include stdio.h & list.h before this header
+   Include stdio.h, time.h, & list.h before this header
 */
 
-typedef struct TF {
+#define US_PER_SEC 1000000
+#define NANOS_PER_SECONDS 1000000000
+
+/** calculate the difference in useconds out of two "struct timespec"s */
+#define DIFF_IN_USEC(begin, end) \
+  ( (((end).tv_sec - (begin).tv_sec) * US_PER_SEC) + \
+    ((end).tv_nsec/1000) - ((begin).tv_nsec/1000) )
+
+typedef struct TF
+{
   TFun fn;
   int loop_start;
   int loop_end;
   const char *name;
   int signal;
-  unsigned char allowed_exit_value;
+  signed char allowed_exit_value;
 } TF;
 
-struct Suite {
+struct Suite
+{
   const char *name;
-  List *tclst; /* List of test cases */
+  List *tclst;                  /* List of test cases */
 };
 
-typedef struct Fixture 
+typedef struct Fixture
 {
   int ischecked;
   SFun fun;
 } Fixture;
 
-struct TCase {
+struct TCase
+{
   const char *name;
-  int timeout;
-  List *tflst; /* list of test functions */
+  struct timespec timeout;
+  List *tflst;                  /* list of test functions */
   List *unch_sflst;
   List *unch_tflst;
   List *ch_sflst;
   List *ch_tflst;
 };
 
-typedef struct TestStats {
+typedef struct TestStats
+{
   int n_checked;
   int n_failed;
   int n_errors;
 } TestStats;
 
-struct TestResult {
-  enum test_result rtype;     /* Type of result */
-  enum ck_result_ctx ctx;     /* When the result occurred */
-  char *file;    /* File where the test occured */
-  int line;      /* Line number where the test occurred */
-  int iter;      /* The iteration value for looping tests */
-  const char *tcname;  /* Test case that generated the result */
-  const char *tname;  /* Test that generated the result */
-  char *msg;     /* Failure message */
+struct TestResult
+{
+  enum test_result rtype;       /* Type of result */
+  enum ck_result_ctx ctx;       /* When the result occurred */
+  char *file;                   /* File where the test occured */
+  int line;                     /* Line number where the test occurred */
+  int iter;                     /* The iteration value for looping tests */
+  int duration;                 /* duration of this test in microseconds */
+  const char *tcname;           /* Test case that generated the result */
+  const char *tname;            /* Test that generated the result */
+  char *msg;                    /* Failure message */
 };
 
-TestResult *tr_create(void);
-void tr_reset(TestResult *tr);
+TestResult *tr_create (void);
+void tr_reset (TestResult * tr);
+void tr_free (TestResult * tr);
 
-enum cl_event {
-  CLINITLOG_SR,
-  CLENDLOG_SR,
-  CLSTART_SR,
-  CLSTART_S,
-  CLEND_SR,
-  CLEND_S,
-  CLSTART_T, /* A test case is about to run */
-  CLEND_T
+enum cl_event
+{
+  CLINITLOG_SR,                 /* Initialize log file */
+  CLENDLOG_SR,                  /* Tests are complete */
+  CLSTART_SR,                   /* Suite runner start */
+  CLSTART_S,                    /* Suite start */
+  CLEND_SR,                     /* Suite runner end */
+  CLEND_S,                      /* Suite end */
+  CLSTART_T,                    /* A test case is about to run */
+  CLEND_T                       /* Test case end */
 };
 
-typedef void (*LFun) (SRunner *, FILE*, enum print_output,
-		      void *, enum cl_event);
+typedef void (*LFun) (SRunner *, FILE *, enum print_output,
+    void *, enum cl_event);
 
-typedef struct Log {
+typedef struct Log
+{
   FILE *lfile;
   LFun lfun;
   int close;
   enum print_output mode;
 } Log;
 
-struct SRunner {
-  List *slst; /* List of Suite objects */
-  TestStats *stats; /* Run statistics */
-  List *resultlst; /* List of unit test results */
-  const char *log_fname; /* name of log file */
-  const char *xml_fname; /* name of xml output file */
-  List *loglst; /* list of Log objects */
-  enum fork_status fstat; /* controls if suites are forked or not
-			     NOTE: Don't use this value directly,
-			     instead use srunner_fork_status */
+struct SRunner
+{
+  List *slst;                   /* List of Suite objects */
+  TestStats *stats;             /* Run statistics */
+  List *resultlst;              /* List of unit test results */
+  const char *log_fname;        /* name of log file */
+  const char *xml_fname;        /* name of xml output file */
+  const char *tap_fname;        /* name of tap output file */
+  List *loglst;                 /* list of Log objects */
+  enum fork_status fstat;       /* controls if suites are forked or not
+                                   NOTE: Don't use this value directly,
+                                   instead use srunner_fork_status */
 };
 
 
-void set_fork_status(enum fork_status fstat);
+void set_fork_status (enum fork_status fstat);
 enum fork_status cur_fork_status (void);
 
+clockid_t check_get_clockid (void);
+
 #endif /* CHECK_IMPL_H */
diff --git a/libs/gst/check/libcheck/check_list.c b/libs/gst/check/libcheck/check_list.c
index c40ab58..bce19d8 100644
--- a/libs/gst/check/libcheck/check_list.c
+++ b/libs/gst/check/libcheck/check_list.c
@@ -18,7 +18,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -35,11 +35,11 @@
 
 struct List
 {
-  int n_elts;
-  int max_elts;
+  unsigned int n_elts;
+  unsigned int max_elts;
   int current;                  /* pointer to the current node */
   int last;                     /* pointer to the node before END */
-  const void **data;
+  void **data;
 };
 
 static void
@@ -47,7 +47,8 @@
 {
   if (lp->n_elts >= lp->max_elts) {
     lp->max_elts *= LGROW;
-    lp->data = erealloc (lp->data, lp->max_elts * sizeof (lp->data[0]));
+    lp->data =
+        (void **) erealloc (lp->data, lp->max_elts * sizeof (lp->data[0]));
   }
 }
 
@@ -55,16 +56,17 @@
 check_list_create (void)
 {
   List *lp;
-  lp = emalloc (sizeof (List));
+
+  lp = (List *) emalloc (sizeof (List));
   lp->n_elts = 0;
   lp->max_elts = LINIT;
-  lp->data = emalloc (sizeof (lp->data[0]) * LINIT);
+  lp->data = (void **) emalloc (sizeof (lp->data[0]) * LINIT);
   lp->current = lp->last = -1;
   return lp;
 }
 
 void
-list_add_front (List * lp, const void *val)
+check_list_add_front (List * lp, void *val)
 {
   if (lp == NULL)
     return;
@@ -77,7 +79,7 @@
 }
 
 void
-list_add_end (List * lp, const void *val)
+check_list_add_end (List * lp, void *val)
 {
   if (lp == NULL)
     return;
@@ -89,7 +91,7 @@
 }
 
 int
-list_at_end (List * lp)
+check_list_at_end (List * lp)
 {
   if (lp->current == -1)
     return 1;
@@ -98,7 +100,7 @@
 }
 
 void
-list_front (List * lp)
+check_list_front (List * lp)
 {
   if (lp->current == -1)
     return;
@@ -107,7 +109,7 @@
 
 
 void
-list_free (List * lp)
+check_list_free (List * lp)
 {
   if (lp == NULL)
     return;
@@ -117,34 +119,34 @@
 }
 
 void *
-list_val (List * lp)
+check_list_val (List * lp)
 {
   if (lp == NULL)
     return NULL;
   if (lp->current == -1 || lp->current > lp->last)
     return NULL;
 
-  return (void *) lp->data[lp->current];
+  return lp->data[lp->current];
 }
 
 void
-list_advance (List * lp)
+check_list_advance (List * lp)
 {
   if (lp == NULL)
     return;
-  if (list_at_end (lp))
+  if (check_list_at_end (lp))
     return;
   lp->current++;
 }
 
 
 void
-list_apply (List * lp, void (*fp) (void *))
+check_list_apply (List * lp, void (*fp) (void *))
 {
   if (lp == NULL || fp == NULL)
     return;
 
-  for (list_front (lp); !list_at_end (lp); list_advance (lp))
-    fp (list_val (lp));
+  for (check_list_front (lp); !check_list_at_end (lp); check_list_advance (lp))
+    fp (check_list_val (lp));
 
 }
diff --git a/libs/gst/check/libcheck/check_list.h b/libs/gst/check/libcheck/check_list.h
index 7936c19..0270115 100644
--- a/libs/gst/check/libcheck/check_list.h
+++ b/libs/gst/check/libcheck/check_list.h
@@ -24,33 +24,33 @@
 typedef struct List List;
 
 /* Create an empty list */
-List * check_list_create (void);
+List *check_list_create (void);
 
 /* Is list at end? */
-int list_at_end (List * lp);
+int check_list_at_end (List * lp);
 
 /* Position list at front */
-void list_front(List *lp);
+void check_list_front (List * lp);
 
 /* Add a value to the front of the list,
    positioning newly added value as current value.
    More expensive than list_add_end, as it uses memmove. */
-void list_add_front (List *lp, const void *val);
+void check_list_add_front (List * lp, void *val);
 
 /* Add a value to the end of the list,
    positioning newly added value as current value */
-void list_add_end (List *lp, const void *val);
+void check_list_add_end (List * lp, void *val);
 
 /* Give the value of the current node */
-void *list_val (List * lp);
+void *check_list_val (List * lp);
 
 /* Position the list at the next node */
-void list_advance (List * lp);
+void check_list_advance (List * lp);
 
 /* Free a list, but don't free values */
-void list_free (List * lp);
+void check_list_free (List * lp);
 
-void list_apply (List *lp, void (*fp) (void *));
+void check_list_apply (List * lp, void (*fp) (void *));
 
 
 #endif /* CHECK_LIST_H */
diff --git a/libs/gst/check/libcheck/check_log.c b/libs/gst/check/libcheck/check_log.c
index 5f0dd97..ad5bb79 100644
--- a/libs/gst/check/libcheck/check_log.c
+++ b/libs/gst/check/libcheck/check_log.c
@@ -18,16 +18,12 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <stdlib.h>
 #include <stdio.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-#include <check.h>
-#if HAVE_SUBUNIT_CHILD_H
+#include <internal-check.h>
+#if ENABLE_SUBUNIT
 #include <subunit/child.h>
 #endif
 
@@ -38,20 +34,11 @@
 #include "check_print.h"
 #include "check_str.h"
 
-/* localtime_r is apparently not available on Windows */
-#ifndef HAVE_LOCALTIME_R
-static struct tm *
-localtime_r (const time_t * clock, struct tm *result)
-{
-  struct tm *now = localtime (clock);
-  if (now == NULL) {
-    return NULL;
-  } else {
-    *result = *now;
-  }
-  return result;
-}
-#endif /* HAVE_DECL_LOCALTIME_R */
+/*
+ * If a log file is specified to be "-", then instead of
+ * opening a file the log output is printed to stdout.
+ */
+#define STDOUT_OVERRIDE_LOG_FILE_NAME "-"
 
 static void srunner_send_evt (SRunner * sr, void *obj, enum cl_event evt);
 
@@ -66,13 +53,17 @@
 int
 srunner_has_log (SRunner * sr)
 {
-  return sr->log_fname != NULL;
+  return srunner_log_fname (sr) != NULL;
 }
 
 const char *
 srunner_log_fname (SRunner * sr)
 {
-  return sr->log_fname;
+  /* check if log filename have been set explicitly */
+  if (sr->log_fname != NULL)
+    return sr->log_fname;
+
+  return getenv ("CK_LOG_FILE_NAME");
 }
 
 
@@ -87,20 +78,50 @@
 int
 srunner_has_xml (SRunner * sr)
 {
-  return sr->xml_fname != NULL;
+  return srunner_xml_fname (sr) != NULL;
 }
 
 const char *
 srunner_xml_fname (SRunner * sr)
 {
-  return sr->xml_fname;
+  /* check if XML log filename have been set explicitly */
+  if (sr->xml_fname != NULL) {
+    return sr->xml_fname;
+  }
+
+  return getenv ("CK_XML_LOG_FILE_NAME");
+}
+
+void
+srunner_set_tap (SRunner * sr, const char *fname)
+{
+  if (sr->tap_fname)
+    return;
+  sr->tap_fname = fname;
+}
+
+int
+srunner_has_tap (SRunner * sr)
+{
+  return srunner_tap_fname (sr) != NULL;
+}
+
+const char *
+srunner_tap_fname (SRunner * sr)
+{
+  /* check if tap log filename have been set explicitly */
+  if (sr->tap_fname != NULL) {
+    return sr->tap_fname;
+  }
+
+  return getenv ("CK_TAP_LOG_FILE_NAME");
 }
 
 void
 srunner_register_lfun (SRunner * sr, FILE * lfile, int close,
     LFun lfun, enum print_output printmode)
 {
-  Log *l = emalloc (sizeof (Log));
+  Log *l = (Log *) emalloc (sizeof (Log));
 
   if (printmode == CK_ENV) {
     printmode = get_env_printmode ();
@@ -110,7 +131,7 @@
   l->lfun = lfun;
   l->close = close;
   l->mode = printmode;
-  list_add_end (sr->loglst, l);
+  check_list_add_end (sr->loglst, l);
   return;
 }
 
@@ -142,6 +163,7 @@
 log_test_start (SRunner * sr, TCase * tc, TF * tfun)
 {
   char buffer[100];
+
   snprintf (buffer, 99, "%s:%s", tc->name, tfun->name);
   srunner_send_evt (sr, buffer, CLSTART_T);
 }
@@ -157,9 +179,10 @@
 {
   List *l;
   Log *lg;
+
   l = sr->loglst;
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    lg = list_val (l);
+  for (check_list_front (l); !check_list_at_end (l); check_list_advance (l)) {
+    lg = (Log *) check_list_val (l);
     fflush (lg->lfile);
     lg->lfun (sr, lg->lfile, lg->mode, obj, evt);
     fflush (lg->lfile);
@@ -172,10 +195,6 @@
 {
   Suite *s;
 
-  if (printmode == CK_ENV) {
-    printmode = get_env_printmode ();
-  }
-
   switch (evt) {
     case CLINITLOG_SR:
       break;
@@ -187,7 +206,7 @@
       }
       break;
     case CLSTART_S:
-      s = obj;
+      s = (Suite *) obj;
       if (printmode > CK_SILENT) {
         fprintf (file, " %s\n", s->name);
       }
@@ -202,7 +221,6 @@
       }
       break;
     case CLEND_S:
-      s = obj;
       break;
     case CLSTART_T:
       break;
@@ -231,7 +249,7 @@
     case CLSTART_SR:
       break;
     case CLSTART_S:
-      s = obj;
+      s = (Suite *) obj;
       fprintf (file, "Running suite %s\n", s->name);
       break;
     case CLEND_SR:
@@ -239,12 +257,11 @@
       srunner_fprint (file, sr, CK_MINIMAL);
       break;
     case CLEND_S:
-      s = obj;
       break;
     case CLSTART_T:
       break;
     case CLEND_T:
-      tr = obj;
+      tr = (TestResult *) obj;
       tr_fprint (file, tr, CK_VERBOSE);
       break;
     default:
@@ -261,47 +278,60 @@
 {
   TestResult *tr;
   Suite *s;
-  static struct timeval inittv, endtv;
+  static struct timespec ts_start = { 0, 0 };
   static char t[sizeof "yyyy-mm-dd hh:mm:ss"] = { 0 };
 
   if (t[0] == 0) {
+    struct timeval inittv;
     struct tm now;
+
     gettimeofday (&inittv, NULL);
-    localtime_r (&(inittv.tv_sec), &now);
-    strftime (t, sizeof ("yyyy-mm-dd hh:mm:ss"), "%Y-%m-%d %H:%M:%S", &now);
+    clock_gettime (check_get_clockid (), &ts_start);
+    if (localtime_r ((const time_t *) &(inittv.tv_sec), &now) != NULL) {
+      strftime (t, sizeof ("yyyy-mm-dd hh:mm:ss"), "%Y-%m-%d %H:%M:%S", &now);
+    }
   }
 
   switch (evt) {
     case CLINITLOG_SR:
       fprintf (file, "<?xml version=\"1.0\"?>\n");
       fprintf (file,
+          "<?xml-stylesheet type=\"text/xsl\" href=\"http://check.sourceforge.net/xml/check_unittest.xslt\"?>\n");
+      fprintf (file,
           "<testsuites xmlns=\"http://check.sourceforge.net/ns\">\n");
       fprintf (file, "  <datetime>%s</datetime>\n", t);
       break;
     case CLENDLOG_SR:
-      gettimeofday (&endtv, NULL);
-      fprintf (file, "  <duration>%f</duration>\n",
-          (endtv.tv_sec + (float) (endtv.tv_usec) / 1000000) -
-          (inittv.tv_sec + (float) (inittv.tv_usec / 1000000)));
+    {
+      struct timespec ts_end = { 0, 0 };
+      unsigned long duration;
+
+      /* calculate time the test were running */
+      clock_gettime (check_get_clockid (), &ts_end);
+      duration = (unsigned long) DIFF_IN_USEC (ts_start, ts_end);
+      fprintf (file, "  <duration>%lu.%06lu</duration>\n",
+          duration / US_PER_SEC, duration % US_PER_SEC);
       fprintf (file, "</testsuites>\n");
+    }
       break;
     case CLSTART_SR:
       break;
     case CLSTART_S:
-      s = obj;
+      s = (Suite *) obj;
       fprintf (file, "  <suite>\n");
-      fprintf (file, "    <title>%s</title>\n", s->name);
+      fprintf (file, "    <title>");
+      fprint_xml_esc (file, s->name);
+      fprintf (file, "</title>\n");
       break;
     case CLEND_SR:
       break;
     case CLEND_S:
       fprintf (file, "  </suite>\n");
-      s = obj;
       break;
     case CLSTART_T:
       break;
     case CLEND_T:
-      tr = obj;
+      tr = (TestResult *) obj;
       tr_xmlprint (file, tr, CK_VERBOSE);
       break;
     default:
@@ -310,13 +340,55 @@
 
 }
 
+void
+tap_lfun (SRunner * sr CK_ATTRIBUTE_UNUSED, FILE * file,
+    enum print_output printmode CK_ATTRIBUTE_UNUSED, void *obj,
+    enum cl_event evt)
+{
+  TestResult *tr;
+
+  static int num_tests_run = 0;
+
+  switch (evt) {
+    case CLINITLOG_SR:
+      /* As this is a new log file, reset the number of tests executed */
+      num_tests_run = 0;
+      break;
+    case CLENDLOG_SR:
+      /* Output the test plan as the last line */
+      fprintf (file, "1..%d\n", num_tests_run);
+      fflush (file);
+      break;
+    case CLSTART_SR:
+      break;
+    case CLSTART_S:
+      break;
+    case CLEND_SR:
+      break;
+    case CLEND_S:
+      break;
+    case CLSTART_T:
+      break;
+    case CLEND_T:
+      /* Print the test result to the tap file */
+      num_tests_run += 1;
+      tr = (TestResult *) obj;
+      fprintf (file, "%s %d - %s:%s:%s: %s\n",
+          tr->rtype == CK_PASS ? "ok" : "not ok", num_tests_run,
+          tr->file, tr->tcname, tr->tname, tr->msg);
+      fflush (file);
+      break;
+    default:
+      eprintf ("Bad event type received in tap_lfun", __FILE__, __LINE__);
+  }
+}
+
 #if ENABLE_SUBUNIT
 void
 subunit_lfun (SRunner * sr, FILE * file, enum print_output printmode,
     void *obj, enum cl_event evt)
 {
   TestResult *tr;
-  Suite *s;
   char const *name;
 
   /* assert(printmode == CK_SUBUNIT); */
@@ -329,7 +401,6 @@
     case CLSTART_SR:
       break;
     case CLSTART_S:
-      s = obj;
       break;
     case CLEND_SR:
       if (printmode > CK_SILENT) {
@@ -338,17 +409,17 @@
       }
       break;
     case CLEND_S:
-      s = obj;
       break;
     case CLSTART_T:
-      name = obj;
+      name = (const char *) obj;
       subunit_test_start (name);
       break;
     case CLEND_T:
-      tr = obj;
+      tr = (TestResult *) obj;
       {
         char *name = ck_strdup_printf ("%s:%s", tr->tcname, tr->tname);
         char *msg = tr_short_str (tr);
+
         switch (tr->rtype) {
           case CK_PASS:
             subunit_test_pass (name);
@@ -359,6 +430,7 @@
           case CK_ERROR:
             subunit_test_error (name, msg);
             break;
+          case CK_TEST_RESULT_INVALID:
           default:
             eprintf ("Bad result type in subunit_lfun", __FILE__, __LINE__);
             free (name);
@@ -372,15 +444,30 @@
 }
 #endif
 
+static FILE *
+srunner_open_file (const char *filename)
+{
+  FILE *f = NULL;
+
+  if (strcmp (filename, STDOUT_OVERRIDE_LOG_FILE_NAME) == 0) {
+    f = stdout;
+  } else {
+    f = fopen (filename, "w");
+    if (f == NULL) {
+      eprintf ("Error in call to fopen while opening file %s:", __FILE__,
+          __LINE__ - 2, filename);
+    }
+  }
+  return f;
+}
+
 FILE *
 srunner_open_lfile (SRunner * sr)
 {
   FILE *f = NULL;
+
   if (srunner_has_log (sr)) {
-    f = fopen (sr->log_fname, "w");
-    if (f == NULL)
-      eprintf ("Error in call to fopen while opening log file %s:", __FILE__,
-          __LINE__ - 2, sr->log_fname);
+    f = srunner_open_file (srunner_log_fname (sr));
   }
   return f;
 }
@@ -389,11 +476,20 @@
 srunner_open_xmlfile (SRunner * sr)
 {
   FILE *f = NULL;
+
   if (srunner_has_xml (sr)) {
-    f = fopen (sr->xml_fname, "w");
-    if (f == NULL)
-      eprintf ("Error in call to fopen while opening xml file %s:", __FILE__,
-          __LINE__ - 2, sr->xml_fname);
+    f = srunner_open_file (srunner_xml_fname (sr));
+  }
+  return f;
+}
+
+FILE *
+srunner_open_tapfile (SRunner * sr)
+{
+  FILE *f = NULL;
+
+  if (srunner_has_tap (sr)) {
+    f = srunner_open_file (srunner_tap_fname (sr));
   }
   return f;
 }
@@ -402,6 +498,7 @@
 srunner_init_logging (SRunner * sr, enum print_output print_mode)
 {
   FILE *f;
+
   sr->loglst = check_list_create ();
 #if ENABLE_SUBUNIT
   if (print_mode != CK_SUBUNIT)
@@ -413,11 +510,15 @@
 #endif
   f = srunner_open_lfile (sr);
   if (f) {
-    srunner_register_lfun (sr, f, 1, lfile_lfun, print_mode);
+    srunner_register_lfun (sr, f, f != stdout, lfile_lfun, print_mode);
   }
   f = srunner_open_xmlfile (sr);
   if (f) {
-    srunner_register_lfun (sr, f, 2, xml_lfun, print_mode);
+    srunner_register_lfun (sr, f, f != stdout, xml_lfun, print_mode);
+  }
+  f = srunner_open_tapfile (sr);
+  if (f) {
+    srunner_register_lfun (sr, f, f != stdout, tap_lfun, print_mode);
   }
   srunner_send_evt (sr, NULL, CLINITLOG_SR);
 }
@@ -431,16 +532,17 @@
   srunner_send_evt (sr, NULL, CLENDLOG_SR);
 
   l = sr->loglst;
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    Log *lg = list_val (l);
+  for (check_list_front (l); !check_list_at_end (l); check_list_advance (l)) {
+    Log *lg = (Log *) check_list_val (l);
+
     if (lg->close) {
       rval = fclose (lg->lfile);
       if (rval != 0)
-        eprintf ("Error in call to fclose while closing log file:", __FILE__,
-            __LINE__ - 2);
+        eprintf ("Error in call to fclose while closing log file:",
+            __FILE__, __LINE__ - 2);
     }
     free (lg);
   }
-  list_free (l);
+  check_list_free (l);
   sr->loglst = NULL;
 }
diff --git a/libs/gst/check/libcheck/check_log.h b/libs/gst/check/libcheck/check_log.h
index 84c9b7c..8578a90 100644
--- a/libs/gst/check/libcheck/check_log.h
+++ b/libs/gst/check/libcheck/check_log.h
@@ -21,31 +21,35 @@
 #ifndef CHECK_LOG_H
 #define CHECK_LOG_H
 
-void log_srunner_start (SRunner *sr);
-void log_srunner_end (SRunner *sr);
-void log_suite_start (SRunner *sr, Suite *s);
-void log_suite_end (SRunner *sr, Suite *s);
-void log_test_end (SRunner *sr, TestResult *tr);
-void log_test_start (SRunner *sr, TCase *tc, TF *tfun);
+void log_srunner_start (SRunner * sr);
+void log_srunner_end (SRunner * sr);
+void log_suite_start (SRunner * sr, Suite * s);
+void log_suite_end (SRunner * sr, Suite * s);
+void log_test_end (SRunner * sr, TestResult * tr);
+void log_test_start (SRunner * sr, TCase * tc, TF * tfun);
 
-void stdout_lfun (SRunner *sr, FILE *file, enum print_output,
-		  void *obj, enum cl_event evt);
+void stdout_lfun (SRunner * sr, FILE * file, enum print_output,
+    void *obj, enum cl_event evt);
 
-void lfile_lfun (SRunner *sr, FILE *file, enum print_output,
-		  void *obj, enum cl_event evt);
+void lfile_lfun (SRunner * sr, FILE * file, enum print_output,
+    void *obj, enum cl_event evt);
 
-void xml_lfun (SRunner *sr, FILE *file, enum print_output,
-		  void *obj, enum cl_event evt);
+void xml_lfun (SRunner * sr, FILE * file, enum print_output,
+    void *obj, enum cl_event evt);
 
-void subunit_lfun (SRunner *sr, FILE *file, enum print_output,
-		  void *obj, enum cl_event evt);
+void tap_lfun (SRunner * sr, FILE * file, enum print_output,
+    void *obj, enum cl_event evt);
 
-void srunner_register_lfun (SRunner *sr, FILE *lfile, int close,
-			    LFun lfun, enum print_output);
+void subunit_lfun (SRunner * sr, FILE * file, enum print_output,
+    void *obj, enum cl_event evt);
 
-FILE *srunner_open_lfile (SRunner *sr);
-FILE *srunner_open_xmlfile (SRunner *sr);
-void srunner_init_logging (SRunner *sr, enum print_output print_mode);
-void srunner_end_logging (SRunner *sr);
+void srunner_register_lfun (SRunner * sr, FILE * lfile, int close,
+    LFun lfun, enum print_output);
+
+FILE *srunner_open_lfile (SRunner * sr);
+FILE *srunner_open_xmlfile (SRunner * sr);
+FILE *srunner_open_tapfile (SRunner * sr);
+void srunner_init_logging (SRunner * sr, enum print_output print_mode);
+void srunner_end_logging (SRunner * sr);
 
 #endif /* CHECK_LOG_H */
diff --git a/libs/gst/check/libcheck/check_msg.c b/libs/gst/check/libcheck/check_msg.c
index ae653ff..676c18b 100644
--- a/libs/gst/check/libcheck/check_msg.c
+++ b/libs/gst/check/libcheck/check_msg.c
@@ -18,22 +18,20 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
 #include <stdlib.h>
 #include <fcntl.h>
 #include <stdio.h>
 
 #include "check_error.h"
-#include "check.h"
+#include "internal-check.h"
 #include "check_list.h"
 #include "check_impl.h"
 #include "check_msg.h"
 #include "check_pack.h"
+#include "check_str.h"
 
 
 /* 'Pipe' is implemented as a temporary file to overcome message
@@ -57,7 +55,9 @@
  */
 
 static FILE *send_file1;
+static char *send_file1_name;
 static FILE *send_file2;
+static char *send_file2_name;
 
 static FILE *get_pipe (void);
 static void setup_pipe (void);
@@ -86,8 +86,18 @@
 {
   FailMsg fmsg;
 
-  fmsg.msg = (char *) msg;
-  ppack (fileno (get_pipe ()), CK_MSG_FAIL, (CheckMsg *) & fmsg);
+  fmsg.msg = strdup (msg);
+  ppack (get_pipe (), CK_MSG_FAIL, (CheckMsg *) & fmsg);
+  free (fmsg.msg);
+}
+
+void
+send_duration_info (int duration)
+{
+  DurationMsg dmsg;
+
+  dmsg.duration = duration;
+  ppack (get_pipe (), CK_MSG_DURATION, (CheckMsg *) & dmsg);
 }
 
 void
@@ -95,9 +105,10 @@
 {
   LocMsg lmsg;
 
-  lmsg.file = (char *) file;
+  lmsg.file = strdup (file);
   lmsg.line = line;
-  ppack (fileno (get_pipe ()), CK_MSG_LOC, (CheckMsg *) & lmsg);
+  ppack (get_pipe (), CK_MSG_LOC, (CheckMsg *) & lmsg);
+  free (lmsg.file);
 }
 
 void
@@ -106,7 +117,7 @@
   CtxMsg cmsg;
 
   cmsg.ctx = ctx;
-  ppack (fileno (get_pipe ()), CK_MSG_CTX, (CheckMsg *) & cmsg);
+  ppack (get_pipe (), CK_MSG_CTX, (CheckMsg *) & cmsg);
 }
 
 TestResult *
@@ -117,10 +128,17 @@
   TestResult *result;
 
   fp = get_pipe ();
-  if (fp == NULL)
+  if (fp == NULL) {
     eprintf ("Error in call to get_pipe", __FILE__, __LINE__ - 2);
+  }
+
   rewind (fp);
-  rmsg = punpack (fileno (fp));
+  rmsg = punpack (fp);
+
+  if (rmsg == NULL) {
+    eprintf ("Error in call to punpack", __FILE__, __LINE__ - 4);
+  }
+
   teardown_pipe ();
   setup_pipe ();
 
@@ -156,7 +174,7 @@
   tr = tr_create ();
 
   if (rmsg->msg != NULL || waserror) {
-    tr->ctx = (cur_fork_status () == CK_FORK) ? rmsg->lastctx : rmsg->failctx;
+    tr->ctx = rmsg->lastctx;
     tr->msg = rmsg->msg;
     rmsg->msg = NULL;
     tr_set_loc_by_ctx (tr, tr->ctx, rmsg);
@@ -167,6 +185,7 @@
   } else {
     tr->ctx = CK_CTX_TEST;
     tr->msg = NULL;
+    tr->duration = rmsg->duration;
     tr_set_loc_by_ctx (tr, CK_CTX_TEST, rmsg);
   }
 
@@ -185,16 +204,83 @@
   teardown_pipe ();
 }
 
+/**
+ * Open a temporary file.
+ *
+ * If the file could be unlinked upon creation, the name
+ * of the file is not returned via 'name'. However, if the
+ * file could not be unlinked, the name is returned,
+ * expecting the caller to both delete the file and
+ * free the 'name' field after the file is closed.
+ */
+FILE *
+open_tmp_file (char **name)
+{
+  FILE *file = NULL;
+
+  *name = NULL;
+
+#if !HAVE_MKSTEMP
+  /* Windows does not like tmpfile(). This is likely because tmpfile()
+   * call unlink() on the file before returning it, to make sure the
+   * file is deleted when it is closed. The unlink() call also fails
+   * on Windows if the file is still open. */
+  /* also note that mkstemp is apparently a C90 replacement for tmpfile */
+  /* perhaps all we need to do on Windows is set TMPDIR to whatever is
+     stored in TEMP for tmpfile to work */
+  /* and finally, the "b" from "w+b" is ignored on OS X, not sure about WIN32 */
+
+  file = tmpfile ();
+  if (file == NULL) {
+    char *tmp = getenv ("TEMP");
+    char *tmp_file = tempnam (tmp, "check_");
+
+    /*
+     * Note, tempnam is not enough to get a unique name. Between
+     * getting the name and opening the file, something else also
+     * calling tempnam() could get the same name. It has been observed
+     * on MinGW-w64 builds on Wine that this exact thing happens
+     * if multiple instances of a unit tests are running concurrently.
+     * To prevent two concurrent unit tests from getting the same file,
+     * we append the pid to the file. The pid should be unique on the
+     * system.
+     */
+    char *uniq_tmp_file = ck_strdup_printf ("%s.%d", tmp_file, getpid ());
+
+    file = fopen (uniq_tmp_file, "w+b");
+    *name = uniq_tmp_file;
+    free (tmp_file);
+  }
+#else
+  int fd = -1;
+  const char *tmp_dir = getenv ("TEMP");
+  if (!tmp_dir) {
+    tmp_dir = ".";
+  }
+  *name = ck_strdup_printf ("%s/check_XXXXXX", tmp_dir);
+  if (-1 < (fd = mkstemp (*name))) {
+    file = fdopen (fd, "w+b");
+    if (0 == unlink (*name) || NULL == file) {
+      free (*name);
+      *name = NULL;
+    }
+  }
+#endif
+  return file;
+}
+
 static void
 setup_pipe (void)
 {
-  if (send_file1 != 0) {
-    if (send_file2 != 0)
-      eprintf ("Only one nesting of suite runs supported", __FILE__, __LINE__);
-    send_file2 = tmpfile ();
-  } else {
-    send_file1 = tmpfile ();
+  if (send_file1 == NULL) {
+    send_file1 = open_tmp_file (&send_file1_name);
+    return;
   }
+  if (send_file2 == NULL) {
+    send_file2 = open_tmp_file (&send_file2_name);
+    return;
+  }
+  eprintf ("Only one nesting of suite runs supported", __FILE__, __LINE__);
 }
 
 static void
@@ -203,9 +289,19 @@
   if (send_file2 != 0) {
     fclose (send_file2);
     send_file2 = 0;
+    if (send_file2_name != NULL) {
+      unlink (send_file2_name);
+      free (send_file2_name);
+      send_file2_name = NULL;
+    }
   } else if (send_file1 != 0) {
     fclose (send_file1);
     send_file1 = 0;
+    if (send_file1_name != NULL) {
+      unlink (send_file1_name);
+      free (send_file1_name);
+      send_file1_name = NULL;
+    }
   } else {
     eprintf ("No messaging setup", __FILE__, __LINE__);
   }
diff --git a/libs/gst/check/libcheck/check_msg.h b/libs/gst/check/libcheck/check_msg.h
index 6ddaa3d..f84ee8c 100644
--- a/libs/gst/check/libcheck/check_msg.h
+++ b/libs/gst/check/libcheck/check_msg.h
@@ -24,13 +24,16 @@
 
 /* Functions implementing messaging during test runs */
 
-void send_failure_info(const char *msg);
-void send_loc_info(const char *file, int line);
-void send_ctx_info(enum ck_result_ctx ctx);
+void send_failure_info (const char *msg);
+void send_loc_info (const char *file, int line);
+void send_ctx_info (enum ck_result_ctx ctx);
+void send_duration_info (int duration);
 
-TestResult *receive_test_result(int waserror);
+TestResult *receive_test_result (int waserror);
 
-void setup_messaging(void);
-void teardown_messaging(void);
+void setup_messaging (void);
+void teardown_messaging (void);
+
+FILE *open_tmp_file (char **name);
 
 #endif /*CHECK_MSG_NEW_H */
diff --git a/libs/gst/check/libcheck/check_pack.c b/libs/gst/check/libcheck/check_pack.c
index c34644a..5119dfc 100644
--- a/libs/gst/check/libcheck/check_pack.c
+++ b/libs/gst/check/libcheck/check_pack.c
@@ -18,32 +18,37 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include "_stdint.h"
-
-#include "check.h"
+#include "internal-check.h"
 #include "check_error.h"
 #include "check_list.h"
 #include "check_impl.h"
 #include "check_pack.h"
 
-#ifdef HAVE_PTHREAD
-#include <pthread.h>
-pthread_mutex_t lock_mutex = PTHREAD_MUTEX_INITIALIZER;
-#else
+#ifndef HAVE_PTHREAD
 #define pthread_mutex_lock(arg)
 #define pthread_mutex_unlock(arg)
+#define pthread_cleanup_push(f,a) {
+#define pthread_cleanup_pop(e) }
 #endif
 
+/* Maximum size for one message in the message stream. */
+#define CK_MAX_MSG_SIZE 8192
+/* This is used to implement a sliding window on the receiving
+ * side. When sending messages, we assure that no single message
+ * is bigger than this (actually we check against CK_MAX_MSG_SIZE/2).
+ * The usual size for a message is less than 80 bytes.
+ * All this is done instead of the previous approach to allocate (actually
+ * continuously reallocate) one big chunk for the whole message stream.
+ * Problems were seen in the wild with up to 4 GB reallocations.
+ */
+
+
 /* typedef an unsigned int that has at least 4 bytes */
 typedef uint32_t ck_uint32;
 
@@ -56,15 +61,17 @@
 static int pack_ctx (char **buf, CtxMsg * cmsg);
 static int pack_loc (char **buf, LocMsg * lmsg);
 static int pack_fail (char **buf, FailMsg * fmsg);
+static int pack_duration (char **buf, DurationMsg * fmsg);
 static void upack_ctx (char **buf, CtxMsg * cmsg);
 static void upack_loc (char **buf, LocMsg * lmsg);
 static void upack_fail (char **buf, FailMsg * fmsg);
+static void upack_duration (char **buf, DurationMsg * fmsg);
 
 static void check_type (int type, const char *file, int line);
 static enum ck_msg_type upack_type (char **buf);
 static void pack_type (char **buf, enum ck_msg_type type);
 
-static int read_buf (int fdes, char **buf);
+static int read_buf (FILE * fdes, int size, char *buf);
 static int get_result (char *buf, RcvMsg * rmsg);
 static void rcvmsg_update_ctx (RcvMsg * rmsg, enum ck_result_ctx ctx);
 static void rcvmsg_update_loc (RcvMsg * rmsg, const char *file, int line);
@@ -77,13 +84,15 @@
 static pfun pftab[] = {
   (pfun) pack_ctx,
   (pfun) pack_fail,
-  (pfun) pack_loc
+  (pfun) pack_loc,
+  (pfun) pack_duration
 };
 
 static upfun upftab[] = {
   (upfun) upack_ctx,
   (upfun) upack_fail,
-  (upfun) upack_loc
+  (upfun) upack_loc,
+  (upfun) upack_duration
 };
 
 int
@@ -103,7 +112,6 @@
 upack (char *buf, CheckMsg * msg, enum ck_msg_type *type)
 {
   char *obuf;
-  int nread;
 
   if (buf == NULL)
     return -1;
@@ -116,8 +124,7 @@
 
   upftab[*type] (&buf, msg);
 
-  nread = buf - obuf;
-  return nread;
+  return buf - obuf;
 }
 
 static void
@@ -126,10 +133,10 @@
   unsigned char *ubuf = (unsigned char *) *buf;
   ck_uint32 uval = val;
 
-  ubuf[0] = (uval >> 24) & 0xFF;
-  ubuf[1] = (uval >> 16) & 0xFF;
-  ubuf[2] = (uval >> 8) & 0xFF;
-  ubuf[3] = uval & 0xFF;
+  ubuf[0] = (unsigned char) ((uval >> 24) & 0xFF);
+  ubuf[1] = (unsigned char) ((uval >> 16) & 0xFF);
+  ubuf[2] = (unsigned char) ((uval >> 8) & 0xFF);
+  ubuf[3] = (unsigned char) (uval & 0xFF);
 
   *buf += 4;
 }
@@ -140,7 +147,9 @@
   unsigned char *ubuf = (unsigned char *) *buf;
   ck_uint32 uval;
 
-  uval = ((ubuf[0] << 24) | (ubuf[1] << 16) | (ubuf[2] << 8) | ubuf[3]);
+  uval =
+      (ck_uint32) ((ubuf[0] << 24) | (ubuf[1] << 16) | (ubuf[2] << 8) |
+      ubuf[3]);
 
   *buf += 4;
 
@@ -174,12 +183,12 @@
   strsz = upack_int (buf);
 
   if (strsz > 0) {
-    val = emalloc (strsz + 1);
+    val = (char *) emalloc (strsz + 1);
     memcpy (val, *buf, strsz);
     val[strsz] = 0;
     *buf += strsz;
   } else {
-    val = emalloc (1);
+    val = (char *) emalloc (1);
     *val = 0;
   }
 
@@ -206,7 +215,7 @@
   int len;
 
   len = 4 + 4;
-  *buf = ptr = emalloc (len);
+  *buf = ptr = (char *) emalloc (len);
 
   pack_type (&ptr, CK_MSG_CTX);
   pack_int (&ptr, (int) cmsg->ctx);
@@ -217,7 +226,28 @@
 static void
 upack_ctx (char **buf, CtxMsg * cmsg)
 {
-  cmsg->ctx = upack_int (buf);
+  cmsg->ctx = (enum ck_result_ctx) upack_int (buf);
+}
+
+static int
+pack_duration (char **buf, DurationMsg * cmsg)
+{
+  char *ptr;
+  int len;
+
+  len = 4 + 4;
+  *buf = ptr = (char *) emalloc (len);
+
+  pack_type (&ptr, CK_MSG_DURATION);
+  pack_int (&ptr, cmsg->duration);
+
+  return len;
+}
+
+static void
+upack_duration (char **buf, DurationMsg * cmsg)
+{
+  cmsg->duration = upack_int (buf);
 }
 
 static int
@@ -227,7 +257,7 @@
   int len;
 
   len = 4 + 4 + (lmsg->file ? strlen (lmsg->file) : 0) + 4;
-  *buf = ptr = emalloc (len);
+  *buf = ptr = (char *) emalloc (len);
 
   pack_type (&ptr, CK_MSG_LOC);
   pack_str (&ptr, lmsg->file);
@@ -250,7 +280,7 @@
   int len;
 
   len = 4 + 4 + (fmsg->msg ? strlen (fmsg->msg) : 0);
-  *buf = ptr = emalloc (len);
+  *buf = ptr = (char *) emalloc (len);
 
   pack_type (&ptr, CK_MSG_FAIL);
   pack_str (&ptr, fmsg->msg);
@@ -272,54 +302,52 @@
 }
 
 #ifdef HAVE_PTHREAD
-pthread_mutex_t mutex_lock = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t ck_mutex_lock = PTHREAD_MUTEX_INITIALIZER;
+static void
+ppack_cleanup (void *mutex)
+{
+  pthread_mutex_unlock ((pthread_mutex_t *) mutex);
+}
 #endif
 
 void
-ppack (int fdes, enum ck_msg_type type, CheckMsg * msg)
+ppack (FILE * fdes, enum ck_msg_type type, CheckMsg * msg)
 {
-  char *buf;
+  char *buf = NULL;
   int n;
   ssize_t r;
 
   n = pack (type, &buf, msg);
-  pthread_mutex_lock (&mutex_lock);
-  r = write (fdes, buf, n);
-  pthread_mutex_unlock (&mutex_lock);
-  if (r == -1)
-    eprintf ("Error in call to write:", __FILE__, __LINE__ - 2);
+  /* Keep it on the safe side to not send too much data. */
+  if (n > (CK_MAX_MSG_SIZE / 2))
+    eprintf ("Message string too long", __FILE__, __LINE__ - 2);
+
+  pthread_cleanup_push (ppack_cleanup, &ck_mutex_lock);
+  pthread_mutex_lock (&ck_mutex_lock);
+  r = fwrite (buf, 1, n, fdes);
+  fflush (fdes);
+  pthread_mutex_unlock (&ck_mutex_lock);
+  pthread_cleanup_pop (0);
+  if (r != n)
+    eprintf ("Error in call to fwrite:", __FILE__, __LINE__ - 2);
 
   free (buf);
 }
 
 static int
-read_buf (int fdes, char **buf)
+read_buf (FILE * fdes, int size, char *buf)
 {
-  char *readloc;
   int n;
-  int nread = 0;
-  int size = 1;
-  int grow = 2;
 
-  *buf = emalloc (size);
-  readloc = *buf;
-  while (1) {
-    n = read (fdes, readloc, size - nread);
-    if (n == 0)
-      break;
-    if (n == -1)
-      eprintf ("Error in call to read:", __FILE__, __LINE__ - 4);
+  n = fread (buf, 1, size, fdes);
 
-    nread += n;
-    size *= grow;
-    *buf = erealloc (*buf, size);
-    readloc = *buf + nread;
+  if (ferror (fdes)) {
+    eprintf ("Error in call to fread:", __FILE__, __LINE__ - 4);
   }
 
-  return nread;
+  return n;
 }
 
-
 static int
 get_result (char *buf, RcvMsg * rmsg)
 {
@@ -333,23 +361,29 @@
 
   if (type == CK_MSG_CTX) {
     CtxMsg *cmsg = (CtxMsg *) & msg;
+
     rcvmsg_update_ctx (rmsg, cmsg->ctx);
   } else if (type == CK_MSG_LOC) {
     LocMsg *lmsg = (LocMsg *) & msg;
+
     if (rmsg->failctx == CK_CTX_INVALID) {
       rcvmsg_update_loc (rmsg, lmsg->file, lmsg->line);
     }
     free (lmsg->file);
   } else if (type == CK_MSG_FAIL) {
     FailMsg *fmsg = (FailMsg *) & msg;
+
     if (rmsg->msg == NULL) {
-      rmsg->msg = emalloc (strlen (fmsg->msg) + 1);
-      strcpy (rmsg->msg, fmsg->msg);
+      rmsg->msg = strdup (fmsg->msg);
       rmsg->failctx = rmsg->lastctx;
     } else {
       /* Skip subsequent failure messages, only happens for CK_NOFORK */
     }
     free (fmsg->msg);
+  } else if (type == CK_MSG_DURATION) {
+    DurationMsg *cmsg = (DurationMsg *) & msg;
+
+    rmsg->duration = cmsg->duration;
   } else
     check_type (type, __FILE__, __LINE__);
 
@@ -375,10 +409,11 @@
 {
   RcvMsg *rmsg;
 
-  rmsg = emalloc (sizeof (RcvMsg));
+  rmsg = (RcvMsg *) emalloc (sizeof (RcvMsg));
   rmsg->lastctx = CK_CTX_INVALID;
   rmsg->failctx = CK_CTX_INVALID;
   rmsg->msg = NULL;
+  rmsg->duration = -1;
   reset_rcv_test (rmsg);
   reset_rcv_fixture (rmsg);
   return rmsg;
@@ -406,40 +441,47 @@
 static void
 rcvmsg_update_loc (RcvMsg * rmsg, const char *file, int line)
 {
-  int flen = strlen (file);
-
   if (rmsg->lastctx == CK_CTX_TEST) {
     free (rmsg->test_file);
     rmsg->test_line = line;
-    rmsg->test_file = emalloc (flen + 1);
-    strcpy (rmsg->test_file, file);
+    rmsg->test_file = strdup (file);
   } else {
     free (rmsg->fixture_file);
     rmsg->fixture_line = line;
-    rmsg->fixture_file = emalloc (flen + 1);
-    strcpy (rmsg->fixture_file, file);
+    rmsg->fixture_file = strdup (file);
   }
 }
 
 RcvMsg *
-punpack (int fdes)
+punpack (FILE * fdes)
 {
-  int nread, n;
+  int nread, nparse, n;
   char *buf;
-  char *obuf;
   RcvMsg *rmsg;
 
-  nread = read_buf (fdes, &buf);
-  obuf = buf;
   rmsg = rcvmsg_create ();
 
-  while (nread > 0) {
+  /* Allcate a buffer */
+  buf = (char *) emalloc (CK_MAX_MSG_SIZE);
+  /* Fill the buffer from the file */
+  nread = read_buf (fdes, CK_MAX_MSG_SIZE, buf);
+  nparse = nread;
+  /* While not all parsed */
+  while (nparse > 0) {
+    /* Parse one message */
     n = get_result (buf, rmsg);
-    nread -= n;
-    buf += n;
+    nparse -= n;
+    /* Move remaining data in buffer to the beginning */
+    memmove (buf, buf + n, nparse);
+    /* If EOF has not been seen */
+    if (nread > 0) {
+      /* Read more data into empty space at end of the buffer */
+      nread = read_buf (fdes, n, buf + nparse);
+      nparse += nread;
+    }
   }
+  free (buf);
 
-  free (obuf);
   if (rmsg->lastctx == CK_CTX_INVALID) {
     free (rmsg);
     rmsg = NULL;
diff --git a/libs/gst/check/libcheck/check_pack.h b/libs/gst/check/libcheck/check_pack.h
index 3b916c9..7bde267 100644
--- a/libs/gst/check/libcheck/check_pack.h
+++ b/libs/gst/check/libcheck/check_pack.h
@@ -22,10 +22,12 @@
 #define CHECK_PACK_H
 
 
-enum ck_msg_type {
+enum ck_msg_type
+{
   CK_MSG_CTX,
   CK_MSG_FAIL,
   CK_MSG_LOC,
+  CK_MSG_DURATION,
   CK_MSG_LAST
 };
 
@@ -34,7 +36,7 @@
   enum ck_result_ctx ctx;
 } CtxMsg;
 
-typedef struct LocMsg 
+typedef struct LocMsg
 {
   int line;
   char *file;
@@ -45,11 +47,17 @@
   char *msg;
 } FailMsg;
 
+typedef struct DurationMsg
+{
+  int duration;
+} DurationMsg;
+
 typedef union
 {
-  CtxMsg  ctx_msg;
+  CtxMsg ctx_msg;
   FailMsg fail_msg;
-  LocMsg  loc_msg;
+  LocMsg loc_msg;
+  DurationMsg duration_msg;
 } CheckMsg;
 
 typedef struct RcvMsg
@@ -61,16 +69,16 @@
   char *test_file;
   int test_line;
   char *msg;
+  int duration;
 } RcvMsg;
 
-void rcvmsg_free (RcvMsg *rmsg);
+void rcvmsg_free (RcvMsg * rmsg);
 
-  
-int pack (enum ck_msg_type type, char **buf, CheckMsg *msg);
-int upack (char *buf, CheckMsg *msg, enum ck_msg_type *type);
 
-void ppack (int fdes, enum ck_msg_type type, CheckMsg *msg);
-RcvMsg *punpack (int fdes);
+int pack (enum ck_msg_type type, char **buf, CheckMsg * msg);
+int upack (char *buf, CheckMsg * msg, enum ck_msg_type *type);
 
+void ppack (FILE * fdes, enum ck_msg_type type, CheckMsg * msg);
+RcvMsg *punpack (FILE * fdes);
 
 #endif /*CHECK_PACK_H */
diff --git a/libs/gst/check/libcheck/check_print.c b/libs/gst/check/libcheck/check_print.c
index e29aa7b..4c1a4ad 100644
--- a/libs/gst/check/libcheck/check_print.c
+++ b/libs/gst/check/libcheck/check_print.c
@@ -18,13 +18,13 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 
-#include "check.h"
+#include "internal-check.h"
 #include "check_list.h"
 #include "check_impl.h"
 #include "check_str.h"
@@ -83,30 +83,16 @@
 
   resultlst = sr->resultlst;
 
-  for (list_front (resultlst); !list_at_end (resultlst);
-      list_advance (resultlst)) {
-    TestResult *tr = list_val (resultlst);
+  for (check_list_front (resultlst); !check_list_at_end (resultlst);
+      check_list_advance (resultlst)) {
+    TestResult *tr = (TestResult *) check_list_val (resultlst);
+
     tr_fprint (file, tr, print_mode);
   }
   return;
 }
 
 void
-tr_fprint (FILE * file, TestResult * tr, enum print_output print_mode)
-{
-  if (print_mode == CK_ENV) {
-    print_mode = get_env_printmode ();
-  }
-
-  if ((print_mode >= CK_VERBOSE && tr->rtype == CK_PASS) ||
-      (tr->rtype != CK_PASS && print_mode >= CK_NORMAL)) {
-    char *trstr = tr_str (tr);
-    fprintf (file, "%s\n", trstr);
-    free (trstr);
-  }
-}
-
-static void
 fprint_xml_esc (FILE * file, const char *str)
 {
   for (; *str != '\0'; str++) {
@@ -139,23 +125,39 @@
 }
 
 void
+tr_fprint (FILE * file, TestResult * tr, enum print_output print_mode)
+{
+  if (print_mode == CK_ENV) {
+    print_mode = get_env_printmode ();
+  }
+
+  if ((print_mode >= CK_VERBOSE && tr->rtype == CK_PASS) ||
+      (tr->rtype != CK_PASS && print_mode >= CK_NORMAL)) {
+    char *trstr = tr_str (tr);
+
+    fprintf (file, "%s\n", trstr);
+    free (trstr);
+  }
+}
+
+void
 tr_xmlprint (FILE * file, TestResult * tr,
     enum print_output print_mode CK_ATTRIBUTE_UNUSED)
 {
   char result[10];
-  char *path_name;
-  char *file_name;
-  char *slash;
+  char *path_name = NULL;
+  char *file_name = NULL;
+  char *slash = NULL;
 
   switch (tr->rtype) {
     case CK_PASS:
-      strcpy (result, "success");
+      snprintf (result, sizeof (result), "%s", "success");
       break;
     case CK_FAILURE:
-      strcpy (result, "failure");
+      snprintf (result, sizeof (result), "%s", "failure");
       break;
     case CK_ERROR:
-      strcpy (result, "error");
+      snprintf (result, sizeof (result), "%s", "error");
       break;
     case CK_TEST_RESULT_INVALID:
     default:
@@ -163,22 +165,33 @@
       break;
   }
 
-  slash = strrchr (tr->file, '/');
-  if (slash == NULL) {
-    path_name = (char *) ".";
-    file_name = tr->file;
-  } else {
-    path_name = strdup (tr->file);
-    path_name[slash - tr->file] = 0;    /* Terminate the temporary string. */
-    file_name = slash + 1;
+  if (tr->file) {
+    slash = strrchr (tr->file, '/');
+    if (slash == NULL) {
+      slash = strrchr (tr->file, '\\');
+    }
+
+    if (slash == NULL) {
+      path_name = strdup (".");
+      file_name = tr->file;
+    } else {
+      path_name = strdup (tr->file);
+      path_name[slash - tr->file] = 0;  /* Terminate the temporary string. */
+      file_name = slash + 1;
+    }
   }
 
 
   fprintf (file, "    <test result=\"%s\">\n", result);
-  fprintf (file, "      <path>%s</path>\n", path_name);
-  fprintf (file, "      <fn>%s:%d</fn>\n", file_name, tr->line);
+  fprintf (file, "      <path>%s</path>\n",
+      (path_name == NULL ? "" : path_name));
+  fprintf (file, "      <fn>%s:%d</fn>\n",
+      (file_name == NULL ? "" : file_name), tr->line);
   fprintf (file, "      <id>%s</id>\n", tr->tname);
   fprintf (file, "      <iteration>%d</iteration>\n", tr->iter);
+  fprintf (file, "      <duration>%d.%06d</duration>\n",
+      tr->duration < 0 ? -1 : tr->duration / US_PER_SEC,
+      tr->duration < 0 ? 0 : tr->duration % US_PER_SEC);
   fprintf (file, "      <description>");
   fprint_xml_esc (file, tr->tcname);
   fprintf (file, "</description>\n");
@@ -187,15 +200,14 @@
   fprintf (file, "</message>\n");
   fprintf (file, "    </test>\n");
 
-  if (slash != NULL) {
-    free (path_name);
-  }
+  free (path_name);
 }
 
 enum print_output
 get_env_printmode (void)
 {
   char *env = getenv ("CK_VERBOSITY");
+
   if (env == NULL)
     return CK_NORMAL;
   if (strcmp (env, "silent") == 0)
diff --git a/libs/gst/check/libcheck/check_print.h b/libs/gst/check/libcheck/check_print.h
index 18c0f62..f75274b 100644
--- a/libs/gst/check/libcheck/check_print.h
+++ b/libs/gst/check/libcheck/check_print.h
@@ -21,9 +21,11 @@
 #ifndef CHECK_PRINT_H
 #define CHECK_PRINT_H
 
-void tr_fprint (FILE *file, TestResult *tr, enum print_output print_mode);
-void tr_xmlprint (FILE *file, TestResult *tr, enum print_output print_mode);
-void srunner_fprint (FILE *file, SRunner *sr, enum print_output print_mode);
+/* escape XML special characters (" ' < > &) in str and print to file */
+void fprint_xml_esc (FILE * file, const char *str);
+void tr_fprint (FILE * file, TestResult * tr, enum print_output print_mode);
+void tr_xmlprint (FILE * file, TestResult * tr, enum print_output print_mode);
+void srunner_fprint (FILE * file, SRunner * sr, enum print_output print_mode);
 enum print_output get_env_printmode (void);
 
 
diff --git a/libs/gst/check/libcheck/check_run.c b/libs/gst/check/libcheck/check_run.c
index 0c7b815..38d2cf6 100644
--- a/libs/gst/check/libcheck/check_run.c
+++ b/libs/gst/check/libcheck/check_run.c
@@ -18,22 +18,18 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
+#include <time.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdarg.h>
 #include <signal.h>
+#include <setjmp.h>
 
-#include "check.h"
+#include "internal-check.h"
 #include "check_error.h"
 #include "check_list.h"
 #include "check_impl.h"
@@ -56,35 +52,40 @@
   CK_NOFORK_FIXTURE
 };
 
+
 /* all functions are defined in the same order they are declared.
    functions that depend on forking are gathered all together.
    non-static functions are at the end of the file. */
 static void srunner_run_init (SRunner * sr, enum print_output print_mode);
 static void srunner_run_end (SRunner * sr, enum print_output print_mode);
-static void srunner_iterate_suites (SRunner * sr, enum print_output print_mode);
+static void srunner_iterate_suites (SRunner * sr,
+    const char *sname, const char *tcname, enum print_output print_mode);
 static void srunner_iterate_tcase_tfuns (SRunner * sr, TCase * tc);
 static void srunner_add_failure (SRunner * sr, TestResult * tf);
+static TestResult *srunner_run_setup (List * func_list,
+    enum fork_status fork_usage, const char *test_name, const char *setup_name);
 static int srunner_run_unchecked_setup (SRunner * sr, TCase * tc);
 static TestResult *tcase_run_checked_setup (SRunner * sr, TCase * tc);
-static void srunner_run_teardown (List * l);
-static void srunner_run_unchecked_teardown (TCase * tc);
+static void srunner_run_teardown (List * fixture_list,
+    enum fork_status fork_usage);
+static void srunner_run_unchecked_teardown (SRunner * sr, TCase * tc);
 static void tcase_run_checked_teardown (TCase * tc);
 static void srunner_run_tcase (SRunner * sr, TCase * tc);
 static TestResult *tcase_run_tfun_nofork (SRunner * sr, TCase * tc, TF * tf,
     int i);
 static TestResult *receive_result_info_nofork (const char *tcname,
-    const char *tname, int iter);
+    const char *tname, int iter, int duration);
 static void set_nofork_info (TestResult * tr);
 static char *pass_msg (void);
 
-#ifdef _POSIX_VERSION
+#if defined(HAVE_FORK) && HAVE_FORK==1
 static TestResult *tcase_run_tfun_fork (SRunner * sr, TCase * tc, TF * tf,
     int i);
 static TestResult *receive_result_info_fork (const char *tcname,
-    const char *tname, int iter, int status, int expected_signal,
-    unsigned char allowed_exit_value);
+    const char *tname, int iter,
+    int status, int expected_signal, signed char allowed_exit_value);
 static void set_fork_info (TestResult * tr, int status, int expected_signal,
-    unsigned char allowed_exit_value);
+    signed char allowed_exit_value);
 static char *signal_msg (int sig);
 static char *signal_error_msg (int signal_received, int signal_expected);
 static char *exit_msg (int exitstatus);
@@ -93,6 +94,11 @@
 static int alarm_received;
 static pid_t group_pid;
 
+#if defined(HAVE_SIGACTION) && defined(HAVE_FORK)
+static struct sigaction old_action[3];
+static struct sigaction new_action[3];
+#endif /* HAVE_SIGACTION && HAVE_FORK */
+
 static void CK_ATTRIBUTE_UNUSED
 sig_handler (int sig_nr)
 {
@@ -101,12 +107,39 @@
       alarm_received = 1;
       killpg (group_pid, SIGKILL);
       break;
+    case SIGTERM:
+    case SIGINT:{
+      pid_t own_group_pid;
+      int idx;
+      int child_sig;
+
+      if (sig_nr == SIGINT) {
+        idx = 1;
+        child_sig = SIGKILL;
+      } else {                  /* if (sig_nr == SIGTERM) */
+
+        idx = 2;
+        child_sig = SIGTERM;
+      }
+
+      killpg (group_pid, child_sig);
+
+      /* Restore old signal handler... */
+      sigaction (sig_nr, &old_action[idx], NULL);
+
+      /* ... and call it. POSIX says that calling killpg(0)
+       * does not necessarily mean to call it on the callers
+       * group pid! */
+      own_group_pid = getpgrp ();
+      killpg (own_group_pid, sig_nr);
+      break;
+    }
     default:
       eprintf ("Unhandled signal: %d", __FILE__, __LINE__, sig_nr);
       break;
   }
 }
-#endif /* _POSIX_VERSION */
+#endif /* HAVE_FORK */
 
 #define MSG_LEN 100
 
@@ -130,6 +163,7 @@
 
 static void
 srunner_iterate_suites (SRunner * sr,
+    const char *sname, const char *tcname,
     enum print_output CK_ATTRIBUTE_UNUSED print_mode)
 {
   List *slst;
@@ -138,15 +172,26 @@
 
   slst = sr->slst;
 
-  for (list_front (slst); !list_at_end (slst); list_advance (slst)) {
-    Suite *s = list_val (slst);
+  for (check_list_front (slst); !check_list_at_end (slst);
+      check_list_advance (slst)) {
+    Suite *s = (Suite *) check_list_val (slst);
+
+    if (((sname != NULL) && (strcmp (sname, s->name) != 0))
+        || ((tcname != NULL) && (!suite_tcase (s, tcname))))
+      continue;
 
     log_suite_start (sr, s);
 
     tcl = s->tclst;
 
-    for (list_front (tcl); !list_at_end (tcl); list_advance (tcl)) {
-      tc = list_val (tcl);
+    for (check_list_front (tcl); !check_list_at_end (tcl);
+        check_list_advance (tcl)) {
+      tc = (TCase *) check_list_val (tcl);
+
+      if ((tcname != NULL) && (strcmp (tcname, tc->name) != 0)) {
+        continue;
+      }
+
       srunner_run_tcase (sr, tc);
     }
 
@@ -163,28 +208,34 @@
 
   tfl = tc->tflst;
 
-  for (list_front (tfl); !list_at_end (tfl); list_advance (tfl)) {
+  for (check_list_front (tfl); !check_list_at_end (tfl);
+      check_list_advance (tfl)) {
     int i;
-    tfun = list_val (tfl);
+
+    tfun = (TF *) check_list_val (tfl);
 
     for (i = tfun->loop_start; i < tfun->loop_end; i++) {
       log_test_start (sr, tc, tfun);
       switch (srunner_fork_status (sr)) {
         case CK_FORK:
-#ifdef _POSIX_VERSION
+#if defined(HAVE_FORK) && HAVE_FORK==1
           tr = tcase_run_tfun_fork (sr, tc, tfun, i);
-#else /* _POSIX_VERSION */
+#else /* HAVE_FORK */
           eprintf ("This version does not support fork", __FILE__, __LINE__);
-#endif /* _POSIX_VERSION */
+#endif /* HAVE_FORK */
           break;
         case CK_NOFORK:
           tr = tcase_run_tfun_nofork (sr, tc, tfun, i);
           break;
+        case CK_FORK_GETENV:
         default:
           eprintf ("Bad fork status in SRunner", __FILE__, __LINE__);
       }
-      srunner_add_failure (sr, tr);
-      log_test_end (sr, tr);
+
+      if (NULL != tr) {
+        srunner_add_failure (sr, tr);
+        log_test_end (sr, tr);
+      }
     }
   }
 }
@@ -192,7 +243,7 @@
 static void
 srunner_add_failure (SRunner * sr, TestResult * tr)
 {
-  list_add_end (sr->resultlst, tr);
+  check_list_add_end (sr->resultlst, tr);
   sr->stats->n_checked++;       /* count checks during setup, test, and teardown */
   if (tr->rtype == CK_FAILURE)
     sr->stats->n_failed++;
@@ -201,62 +252,30 @@
 
 }
 
-static int
-srunner_run_unchecked_setup (SRunner * sr, TCase * tc)
-{
-  TestResult *tr;
-  List *l;
-  Fixture *f;
-  int rval = 1;
-
-  set_fork_status (CK_NOFORK);
-
-  l = tc->unch_sflst;
-
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    send_ctx_info (CK_CTX_SETUP);
-    f = list_val (l);
-    f->fun ();
-
-    tr = receive_result_info_nofork (tc->name, "unchecked_setup", 0);
-
-    if (tr->rtype != CK_PASS) {
-      srunner_add_failure (sr, tr);
-      rval = 0;
-      break;
-    }
-    free (tr->file);
-    free (tr->msg);
-    free (tr);
-  }
-
-  set_fork_status (srunner_fork_status (sr));
-  return rval;
-}
-
 static TestResult *
-tcase_run_checked_setup (SRunner * sr, TCase * tc)
+srunner_run_setup (List * fixture_list, enum fork_status fork_usage,
+    const char *test_name, const char *setup_name)
 {
   TestResult *tr = NULL;
-  List *l;
-  Fixture *f;
-  enum fork_status fstat = srunner_fork_status (sr);
+  Fixture *setup_fixture;
 
-  l = tc->ch_sflst;
-  if (fstat == CK_FORK) {
+  if (fork_usage == CK_FORK) {
     send_ctx_info (CK_CTX_SETUP);
   }
 
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    if (fstat == CK_NOFORK) {
-      send_ctx_info (CK_CTX_SETUP);
-    }
-    f = list_val (l);
-    f->fun ();
+  for (check_list_front (fixture_list); !check_list_at_end (fixture_list);
+      check_list_advance (fixture_list)) {
+    setup_fixture = (Fixture *) check_list_val (fixture_list);
 
-    /* Stop the setup and return the failure if nofork mode. */
-    if (fstat == CK_NOFORK) {
-      tr = receive_result_info_nofork (tc->name, "checked_setup", 0);
+    if (fork_usage == CK_NOFORK) {
+      send_ctx_info (CK_CTX_SETUP);
+
+      if (0 == setjmp (error_jmp_buffer)) {
+        setup_fixture->fun ();
+      }
+
+      /* Stop the setup and return the failure in nofork mode. */
+      tr = receive_result_info_nofork (test_name, setup_name, 0, -1);
       if (tr->rtype != CK_PASS) {
         break;
       }
@@ -265,34 +284,75 @@
       free (tr->msg);
       free (tr);
       tr = NULL;
+    } else {
+      setup_fixture->fun ();
     }
   }
 
   return tr;
 }
 
-static void
-srunner_run_teardown (List * l)
+static int
+srunner_run_unchecked_setup (SRunner * sr, TCase * tc)
 {
-  Fixture *f;
+  TestResult *tr = NULL;
+  int rval = 1;
 
-  for (list_front (l); !list_at_end (l); list_advance (l)) {
-    f = list_val (l);
+  set_fork_status (CK_NOFORK);
+  tr = srunner_run_setup (tc->unch_sflst, CK_NOFORK, tc->name,
+      "unchecked_setup");
+  set_fork_status (srunner_fork_status (sr));
+
+  if (tr != NULL && tr->rtype != CK_PASS) {
+    srunner_add_failure (sr, tr);
+    rval = 0;
+  }
+
+  return rval;
+}
+
+static TestResult *
+tcase_run_checked_setup (SRunner * sr, TCase * tc)
+{
+  TestResult *tr = srunner_run_setup (tc->ch_sflst, srunner_fork_status (sr),
+      tc->name, "checked_setup");
+
+  return tr;
+}
+
+static void
+srunner_run_teardown (List * fixture_list, enum fork_status fork_usage)
+{
+  Fixture *fixture;
+
+  for (check_list_front (fixture_list); !check_list_at_end (fixture_list);
+      check_list_advance (fixture_list)) {
+    fixture = (Fixture *) check_list_val (fixture_list);
     send_ctx_info (CK_CTX_TEARDOWN);
-    f->fun ();
+
+    if (fork_usage == CK_NOFORK) {
+      if (0 == setjmp (error_jmp_buffer)) {
+        fixture->fun ();
+      } else {
+        /* Abort the remaining teardowns */
+        break;
+      }
+    } else {
+      fixture->fun ();
+    }
   }
 }
 
 static void
-srunner_run_unchecked_teardown (TCase * tc)
+srunner_run_unchecked_teardown (SRunner * sr, TCase * tc)
 {
-  srunner_run_teardown (tc->unch_tflst);
+  srunner_run_teardown (tc->unch_tflst, srunner_fork_status (sr));
 }
 
 static void
 tcase_run_checked_teardown (TCase * tc)
 {
-  srunner_run_teardown (tc->ch_tflst);
+  srunner_run_teardown (tc->ch_tflst, CK_NOFORK);
 }
 
 static void
@@ -300,7 +360,7 @@
 {
   if (srunner_run_unchecked_setup (sr, tc)) {
     srunner_iterate_tcase_tfuns (sr, tc);
-    srunner_run_unchecked_teardown (tc);
+    srunner_run_unchecked_teardown (sr, tc);
   }
 }
 
@@ -308,29 +368,40 @@
 tcase_run_tfun_nofork (SRunner * sr, TCase * tc, TF * tfun, int i)
 {
   TestResult *tr;
+  struct timespec ts_start = { 0, 0 }, ts_end = {
+  0, 0};
 
   tr = tcase_run_checked_setup (sr, tc);
   if (tr == NULL) {
-    tfun->fn (i);
+    clock_gettime (check_get_clockid (), &ts_start);
+    if (0 == setjmp (error_jmp_buffer)) {
+      tfun->fn (i);
+    }
+    clock_gettime (check_get_clockid (), &ts_end);
     tcase_run_checked_teardown (tc);
-    return receive_result_info_nofork (tc->name, tfun->name, i);
+    return receive_result_info_nofork (tc->name, tfun->name, i,
+        DIFF_IN_USEC (ts_start, ts_end));
   }
 
   return tr;
 }
 
 static TestResult *
-receive_result_info_nofork (const char *tcname, const char *tname, int iter)
+receive_result_info_nofork (const char *tcname,
+    const char *tname, int iter, int duration)
 {
   TestResult *tr;
 
   tr = receive_test_result (0);
-  if (tr == NULL)
+  if (tr == NULL) {
     eprintf ("Failed to receive test result", __FILE__, __LINE__);
-  tr->tcname = tcname;
-  tr->tname = tname;
-  tr->iter = iter;
-  set_nofork_info (tr);
+  } else {
+    tr->tcname = tcname;
+    tr->tname = tname;
+    tr->iter = iter;
+    tr->duration = duration;
+    set_nofork_info (tr);
+  }
 
   return tr;
 }
@@ -349,18 +420,23 @@
 static char *
 pass_msg (void)
 {
-  char *msg = emalloc (sizeof ("Passed"));
-  strcpy (msg, "Passed");
-  return msg;
+  return strdup ("Passed");
 }
 
-#ifdef _POSIX_VERSION
+#if defined(HAVE_FORK) && HAVE_FORK==1
 static TestResult *
 tcase_run_tfun_fork (SRunner * sr, TCase * tc, TF * tfun, int i)
 {
   pid_t pid_w;
   pid_t pid;
   int status = 0;
+  struct timespec ts_start = { 0, 0 }, ts_end = {
+  0, 0};
+
+  timer_t timerid;
+  struct itimerspec timer_spec;
+  TestResult *tr;
+
 
   pid = fork ();
   if (pid == -1)
@@ -368,19 +444,41 @@
   if (pid == 0) {
     setpgid (0, 0);
     group_pid = getpgrp ();
-    tcase_run_checked_setup (sr, tc);
+    tr = tcase_run_checked_setup (sr, tc);
+    free (tr);
+    clock_gettime (check_get_clockid (), &ts_start);
     tfun->fn (i);
+    clock_gettime (check_get_clockid (), &ts_end);
     tcase_run_checked_teardown (tc);
+    send_duration_info (DIFF_IN_USEC (ts_start, ts_end));
     exit (EXIT_SUCCESS);
   } else {
     group_pid = pid;
   }
 
   alarm_received = 0;
-  alarm (tc->timeout);
-  do {
-    pid_w = waitpid (pid, &status, 0);
-  } while (pid_w == -1);
+
+  if (timer_create (check_get_clockid (),
+          NULL /* fire SIGALRM if timer expires */ ,
+          &timerid) == 0) {
+    /* Set the timer to fire once */
+    timer_spec.it_value = tc->timeout;
+    timer_spec.it_interval.tv_sec = 0;
+    timer_spec.it_interval.tv_nsec = 0;
+    if (timer_settime (timerid, 0, &timer_spec, NULL) == 0) {
+      do {
+        pid_w = waitpid (pid, &status, 0);
+      }
+      while (pid_w == -1);
+    } else {
+      eprintf ("Error in call to timer_settime:", __FILE__, __LINE__);
+    }
+
+    /* If the timer has not fired, disable it */
+    timer_delete (timerid);
+  } else {
+    eprintf ("Error in call to timer_create:", __FILE__, __LINE__);
+  }
 
   killpg (pid, SIGKILL);        /* Kill remaining processes. */
 
@@ -391,28 +489,30 @@
 static TestResult *
 receive_result_info_fork (const char *tcname,
     const char *tname,
-    int iter, int status, int expected_signal, unsigned char allowed_exit_value)
+    int iter, int status, int expected_signal, signed char allowed_exit_value)
 {
   TestResult *tr;
 
   tr = receive_test_result (waserror (status, expected_signal));
-  if (tr == NULL)
+  if (tr == NULL) {
     eprintf ("Failed to receive test result", __FILE__, __LINE__);
-  tr->tcname = tcname;
-  tr->tname = tname;
-  tr->iter = iter;
-  set_fork_info (tr, status, expected_signal, allowed_exit_value);
+  } else {
+    tr->tcname = tcname;
+    tr->tname = tname;
+    tr->iter = iter;
+    set_fork_info (tr, status, expected_signal, allowed_exit_value);
+  }
 
   return tr;
 }
 
 static void
 set_fork_info (TestResult * tr, int status, int signal_expected,
-    unsigned char allowed_exit_value)
+    signed char allowed_exit_value)
 {
   int was_sig = WIFSIGNALED (status);
   int was_exit = WIFEXITED (status);
-  int exit_status = WEXITSTATUS (status);
+  signed char exit_status = WEXITSTATUS (status);
   int signal_received = WTERMSIG (status);
 
   if (was_sig) {
@@ -420,23 +520,38 @@
       if (alarm_received) {
         /* Got alarm instead of signal */
         tr->rtype = CK_ERROR;
+        if (tr->msg != NULL) {
+          free (tr->msg);
+        }
         tr->msg = signal_error_msg (signal_received, signal_expected);
       } else {
         tr->rtype = CK_PASS;
+        if (tr->msg != NULL) {
+          free (tr->msg);
+        }
         tr->msg = pass_msg ();
       }
     } else if (signal_expected != 0) {
       /* signal received, but not the expected one */
       tr->rtype = CK_ERROR;
+      if (tr->msg != NULL) {
+        free (tr->msg);
+      }
       tr->msg = signal_error_msg (signal_received, signal_expected);
     } else {
       /* signal received and none expected */
       tr->rtype = CK_ERROR;
+      if (tr->msg != NULL) {
+        free (tr->msg);
+      }
       tr->msg = signal_msg (signal_received);
     }
   } else if (signal_expected == 0) {
     if (was_exit && exit_status == allowed_exit_value) {
       tr->rtype = CK_PASS;
+      if (tr->msg != NULL) {
+        free (tr->msg);
+      }
       tr->msg = pass_msg ();
     } else if (was_exit && exit_status != allowed_exit_value) {
       if (tr->msg == NULL) {    /* early exit */
@@ -448,11 +563,11 @@
     }
   } else {                      /* a signal was expected and none raised */
     if (was_exit) {
+      if (tr->msg != NULL) {
+        free (tr->msg);
+      }
       tr->msg = exit_msg (exit_status);
-      if (exit_status == allowed_exit_value)
-        tr->rtype = CK_FAILURE; /* normal exit status */
-      else
-        tr->rtype = CK_FAILURE; /* early exit */
+      tr->rtype = CK_FAILURE;   /* normal exit status */
     }
   }
 }
@@ -460,7 +575,8 @@
 static char *
 signal_msg (int signal)
 {
-  char *msg = emalloc (MSG_LEN);        /* free'd by caller */
+  char *msg = (char *) emalloc (MSG_LEN);       /* free'd by caller */
+
   if (alarm_received) {
     snprintf (msg, MSG_LEN, "Test timeout expired");
   } else {
@@ -475,11 +591,13 @@
 {
   char *sig_r_str;
   char *sig_e_str;
-  char *msg = emalloc (MSG_LEN);        /* free'd by caller */
+  char *msg = (char *) emalloc (MSG_LEN);       /* free'd by caller */
+
   sig_r_str = strdup (strsignal (signal_received));
   sig_e_str = strdup (strsignal (signal_expected));
   if (alarm_received) {
-    snprintf (msg, MSG_LEN, "Test timeout expired, expected signal %d (%s)",
+    snprintf (msg, MSG_LEN,
+        "Test timeout expired, expected signal %d (%s)",
         signal_expected, sig_e_str);
   } else {
     snprintf (msg, MSG_LEN, "Received signal %d (%s), expected %d (%s)",
@@ -493,7 +611,8 @@
 static char *
 exit_msg (int exitval)
 {
-  char *msg = emalloc (MSG_LEN);        /* free'd by caller */
+  char *msg = (char *) emalloc (MSG_LEN);       /* free'd by caller */
+
   snprintf (msg, MSG_LEN, "Early exit with return value %d", exitval);
   return msg;
 }
@@ -509,24 +628,29 @@
   return ((was_sig && (signal_received != signal_expected)) ||
       (was_exit && exit_status != 0));
 }
-#endif /* _POSIX_VERSION */
+#endif /* HAVE_FORK */
 
 enum fork_status
 srunner_fork_status (SRunner * sr)
 {
   if (sr->fstat == CK_FORK_GETENV) {
     char *env = getenv ("CK_FORK");
+
     if (env == NULL)
+#if defined(HAVE_FORK) && HAVE_FORK==1
       return CK_FORK;
+#else
+      return CK_NOFORK;
+#endif
     if (strcmp (env, "no") == 0)
       return CK_NOFORK;
     else {
-#ifdef _POSIX_VERSION
+#if defined(HAVE_FORK) && HAVE_FORK==1
       return CK_FORK;
-#else /* _POSIX_VERSION */
+#else /* HAVE_FORK */
       eprintf ("This version does not support fork", __FILE__, __LINE__);
       return CK_NOFORK;
-#endif /* _POSIX_VERSION */
+#endif /* HAVE_FORK */
     }
   } else
     return sr->fstat;
@@ -535,16 +659,33 @@
 void
 srunner_set_fork_status (SRunner * sr, enum fork_status fstat)
 {
+#if !defined(HAVE_FORK) || HAVE_FORK==0
+  /* If fork() is unavailable, do not allow a fork mode to be set */
+  if (fstat != CK_NOFORK) {
+    eprintf ("This version does not support fork", __FILE__, __LINE__);
+  }
+#endif /* ! HAVE_FORK */
   sr->fstat = fstat;
 }
 
 void
 srunner_run_all (SRunner * sr, enum print_output print_mode)
 {
-#ifdef _POSIX_VERSION
-  struct sigaction old_action;
-  struct sigaction new_action;
-#endif /* _POSIX_VERSION */
+  srunner_run (sr, NULL,        /* All test suites.  */
+      NULL,                     /* All test cases.   */
+      print_mode);
+}
+
+void
+srunner_run (SRunner * sr, const char *sname, const char *tcname,
+    enum print_output print_mode)
+{
+  /* Get the selected test suite and test case from the
+     environment.  */
+  if (!tcname)
+    tcname = getenv ("CK_RUN_CASE");
+  if (!sname)
+    sname = getenv ("CK_RUN_SUITE");
 
   if (sr == NULL)
     return;
@@ -552,50 +693,60 @@
     eprintf ("Bad print_mode argument to srunner_run_all: %d",
         __FILE__, __LINE__, print_mode);
   }
-#ifdef _POSIX_VERSION
+#if defined(HAVE_SIGACTION) && defined(HAVE_FORK)
   memset (&new_action, 0, sizeof new_action);
-  new_action.sa_handler = sig_handler;
-  sigaction (SIGALRM, &new_action, &old_action);
-#endif /* _POSIX_VERSION */
+  new_action[0].sa_handler = sig_handler;
+  sigaction (SIGALRM, &new_action[0], &old_action[0]);
+  new_action[1].sa_handler = sig_handler;
+  sigaction (SIGINT, &new_action[1], &old_action[1]);
+  new_action[2].sa_handler = sig_handler;
+  sigaction (SIGTERM, &new_action[2], &old_action[2]);
+#endif /* HAVE_SIGACTION && HAVE_FORK */
   srunner_run_init (sr, print_mode);
-  srunner_iterate_suites (sr, print_mode);
+  srunner_iterate_suites (sr, sname, tcname, print_mode);
   srunner_run_end (sr, print_mode);
-#ifdef _POSIX_VERSION
-  sigaction (SIGALRM, &old_action, NULL);
-#endif /* _POSIX_VERSION */
+#if defined(HAVE_SIGACTION) && defined(HAVE_FORK)
+  sigaction (SIGALRM, &old_action[0], NULL);
+  sigaction (SIGINT, &old_action[1], NULL);
+  sigaction (SIGTERM, &old_action[2], NULL);
+#endif /* HAVE_SIGACTION && HAVE_FORK */
 }
 
 pid_t
 check_fork (void)
 {
-#ifdef _POSIX_VERSION
+#if defined(HAVE_FORK) && HAVE_FORK==1
   pid_t pid = fork ();
+
   /* Set the process to a process group to be able to kill it easily. */
-  setpgid (pid, group_pid);
+  if (pid >= 0) {
+    setpgid (pid, group_pid);
+  }
   return pid;
-#else /* _POSIX_VERSION */
+#else /* HAVE_FORK */
   eprintf ("This version does not support fork", __FILE__, __LINE__);
   return 0;
-#endif /* _POSIX_VERSION */
+#endif /* HAVE_FORK */
 }
 
 void
 check_waitpid_and_exit (pid_t pid CK_ATTRIBUTE_UNUSED)
 {
-#ifdef _POSIX_VERSION
+#if defined(HAVE_FORK) && HAVE_FORK==1
   pid_t pid_w;
   int status;
 
   if (pid > 0) {
     do {
       pid_w = waitpid (pid, &status, 0);
-    } while (pid_w == -1);
+    }
+    while (pid_w == -1);
     if (waserror (status, 0)) {
       exit (EXIT_FAILURE);
     }
   }
   exit (EXIT_SUCCESS);
-#else /* _POSIX_VERSION */
+#else /* HAVE_FORK */
   eprintf ("This version does not support fork", __FILE__, __LINE__);
-#endif /* _POSIX_VERSION */
+#endif /* HAVE_FORK */
 }
diff --git a/libs/gst/check/libcheck/check_str.c b/libs/gst/check/libcheck/check_str.c
index e66073e..c1a18b7 100644
--- a/libs/gst/check/libcheck/check_str.c
+++ b/libs/gst/check/libcheck/check_str.c
@@ -18,12 +18,12 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+#include "libcompat.h"
 
 #include <stdio.h>
 #include <stdarg.h>
 
-#include "check.h"
+#include "internal-check.h"
 #include "check_list.h"
 #include "check_error.h"
 #include "check_impl.h"
@@ -79,11 +79,12 @@
 ck_strdup_printf (const char *fmt, ...)
 {
   /* Guess we need no more than 100 bytes. */
-  int n, size = 100;
+  int n;
+  size_t size = 100;
   char *p;
   va_list ap;
 
-  p = emalloc (size);
+  p = (char *) emalloc (size);
 
   while (1) {
     /* Try to print in the allocated space. */
@@ -91,16 +92,16 @@
     n = vsnprintf (p, size, fmt, ap);
     va_end (ap);
     /* If that worked, return the string. */
-    if (n > -1 && n < size)
+    if (n > -1 && n < (int) size)
       return p;
 
     /* Else try again with more space. */
     if (n > -1)                 /* C99 conform vsnprintf() */
-      size = n + 1;             /* precisely what is needed */
+      size = (size_t) n + 1;    /* precisely what is needed */
     else                        /* glibc 2.0 */
       size *= 2;                /* twice the old size */
 
-    p = erealloc (p, size);
+    p = (char *) erealloc (p, size);
   }
 }
 
@@ -108,6 +109,7 @@
 tr_type_str (TestResult * tr)
 {
   const char *str = NULL;
+
   if (tr->ctx == CK_CTX_TEST) {
     if (tr->rtype == CK_PASS)
       str = "P";
diff --git a/libs/gst/check/libcheck/check_str.h b/libs/gst/check/libcheck/check_str.h
index 9282a9a..bc70fb4 100644
--- a/libs/gst/check/libcheck/check_str.h
+++ b/libs/gst/check/libcheck/check_str.h
@@ -23,19 +23,19 @@
 
 /* Return a string representation of the given TestResult.  Return
    value has been malloc'd, and must be freed by the caller */
-char *tr_str (TestResult *tr);
+char *tr_str (TestResult * tr);
 
 /* Return a string representation of the given TestResult message
    without the test id or result type. This is suitable for separate
    formatting of the test and the message. Return value has been 
    malloc'd, and must be freed by the caller */
-char *tr_short_str (TestResult *tr);
+char *tr_short_str (TestResult * tr);
 
 /* Return a string representation of the given SRunner's run
    statistics (% passed, num run, passed, errors, failures). Return
    value has been malloc'd, and must be freed by the caller
-*/ 
-char *sr_stat_str (SRunner *sr);
+*/
+char *sr_stat_str (SRunner * sr);
 
 char *ck_strdup_printf (const char *fmt, ...);
 
diff --git a/libs/gst/check/libcheck/clock_gettime.c b/libs/gst/check/libcheck/clock_gettime.c
new file mode 100644
index 0000000..0baa1f5
--- /dev/null
+++ b/libs/gst/check/libcheck/clock_gettime.c
@@ -0,0 +1,64 @@
+#include "libcompat.h"
+
+#ifdef __MACH__
+#include <mach/clock.h>
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+#include <unistd.h>
+#endif
+
+#define NANOSECONDS_PER_SECOND 1000000000
+
+
+
+int
+clock_gettime (clockid_t clk_id CK_ATTRIBUTE_UNUSED, struct timespec *ts)
+{
+
+#ifdef __MACH__
+  /* OS X does not have clock_gettime, use mach_absolute_time */
+
+  static mach_timebase_info_data_t sTimebaseInfo;
+  uint64_t rawTime;
+  uint64_t nanos;
+
+  rawTime = mach_absolute_time ();
+
+  /*
+   * OS X has a function to convert abs time to nano seconds: AbsoluteToNanoseconds
+   * However, the function may not be available as we may not have
+   * access to CoreServices. Because of this, we convert the abs time
+   * to nano seconds manually.
+   */
+
+  /*
+   * First grab the time base used on the system, if this is the first
+   * time we are being called. We can check if the value is uninitialized,
+   * as the denominator will be zero. 
+   */
+  if (sTimebaseInfo.denom == 0) {
+    (void) mach_timebase_info (&sTimebaseInfo);
+  }
+
+  /* 
+   * Do the conversion. We hope that the multiplication doesn't 
+   * overflow; the price you pay for working in fixed point.
+   */
+  nanos = rawTime * sTimebaseInfo.numer / sTimebaseInfo.denom;
+
+  /* 
+   * Fill in the timespec container 
+   */
+  ts->tv_sec = nanos / NANOSECONDS_PER_SECOND;
+  ts->tv_nsec = nanos - (ts->tv_sec * NANOSECONDS_PER_SECOND);
+#else
+  /* 
+   * As there is no function to fall back onto to get the current
+   * time, zero out the time so the caller will have a sane value. 
+   */
+  ts->tv_sec = 0;
+  ts->tv_nsec = 0;
+#endif
+
+  return 0;
+}
diff --git a/libs/gst/check/libcheck/libcompat.c b/libs/gst/check/libcheck/libcompat.c
new file mode 100644
index 0000000..f550d1d
--- /dev/null
+++ b/libs/gst/check/libcheck/libcompat.c
@@ -0,0 +1,15 @@
+#include "libcompat.h"
+
+/* silence warnings about an empty library */
+void
+ck_do_nothing (void)
+{
+  assert (0);
+
+  /*
+   * to silence warning about this function actually
+   * returning, but being marked as noreturn. assert()
+   * must be marked as a function that returns.
+   */
+  exit (1);
+}
diff --git a/libs/gst/check/libcheck/libcompat.h b/libs/gst/check/libcheck/libcompat.h
new file mode 100644
index 0000000..32f944c
--- /dev/null
+++ b/libs/gst/check/libcheck/libcompat.h
@@ -0,0 +1,176 @@
+#ifndef LIBCOMPAT_H
+#define LIBCOMPAT_H
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#define GCC_VERSION_AT_LEAST(major, minor) \
+((__GNUC__ > (major)) || \
+ (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
+#else
+#define GCC_VERSION_AT_LEAST(major, minor) 0
+#endif
+
+#if GCC_VERSION_AT_LEAST(2,95)
+#define CK_ATTRIBUTE_UNUSED __attribute__ ((unused))
+#else
+#define CK_ATTRIBUTE_UNUSED
+#endif /* GCC 2.95 */
+
+#if GCC_VERSION_AT_LEAST(2,5)
+#define CK_ATTRIBUTE_NORETURN __attribute__ ((noreturn))
+#else
+#define CK_ATTRIBUTE_NORETURN
+#endif /* GCC 2.5 */
+
+/*
+ * Used for MSVC to create the export attribute
+ * CK_DLL_EXP is defined during the compilation of the library
+ * on the command line.
+ */
+#ifndef CK_DLL_EXP
+#define CK_DLL_EXP
+#endif
+
+#if _MSC_VER
+#include <WinSock2.h>           /* struct timeval, API used in gettimeofday implementation */
+#include <io.h>                 /* read, write */
+#include <process.h>            /* getpid */
+#endif /* _MSC_VER */
+
+/* defines size_t */
+#include <sys/types.h>
+
+/* provides assert */
+#include <assert.h>
+
+/* defines FILE */
+#include <stdio.h>
+
+/* defines exit() */
+#include <stdlib.h>
+
+/* provides localtime and struct tm */
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif /* !HAVE_SYS_TIME_H */
+#include <time.h>
+
+/* declares fork(), _POSIX_VERSION.  according to Autoconf.info,
+   unistd.h defines _POSIX_VERSION if the system is POSIX-compliant,
+   so we will use this as a test for all things uniquely provided by
+   POSIX like sigaction() and fork() */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+/* declares pthread_create and friends */
+#ifdef HAVE_PTHREAD
+#include <pthread.h>
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+/* replacement functions for broken originals */
+#if !HAVE_DECL_ALARM
+CK_DLL_EXP unsigned int alarm (unsigned int seconds);
+#endif /* !HAVE_DECL_ALARM */
+
+#if !HAVE_GETPID && HAVE__GETPID
+#define getpid _getpid
+#endif /* !HAVE_GETPID && HAVE__GETPID */
+
+#if !HAVE_DECL_LOCALTIME_R
+#if !defined(localtime_r)
+CK_DLL_EXP struct tm *localtime_r (const time_t * clock, struct tm *result);
+#endif
+#endif /* !HAVE_DECL_LOCALTIME_R */
+
+#if !HAVE_DECL_STRDUP && !HAVE__STRDUP
+CK_DLL_EXP char *strdup (const char *str);
+#elif !HAVE_DECL_STRDUP && HAVE__STRDUP
+#define strdup _strdup
+#endif /* !HAVE_DECL_STRDUP && HAVE__STRDUP */
+
+#if !HAVE_DECL_STRSIGNAL
+CK_DLL_EXP const char *strsignal (int sig);
+#endif /* !HAVE_DECL_STRSIGNAL */
+
+/*
+ * On systems where clock_gettime() is not available, or
+ * on systems where some clocks may not be supported, the
+ * definition for CLOCK_MONOTONIC and CLOCK_REALTIME may not
+ * be available. These should define which type of clock
+ * clock_gettime() should use. We define it here if it is
+ * not defined simply so the reimplementation can ignore it.
+ *
+ * We set the values of these clocks to some (hopefully)
+ * invalid value, to avoid the case where we define a
+ * clock with a valid value, and unintentionally use
+ * an actual good clock by accident.
+ */
+#ifndef CLOCK_MONOTONIC
+#define CLOCK_MONOTONIC -1
+#endif
+#ifndef CLOCK_REALTIME
+#define CLOCK_REALTIME -1
+#endif
+
+#ifndef HAVE_LIBRT
+
+#ifdef STRUCT_TIMESPEC_DEFINITION_MISSING
+/*
+ * The following structure is defined in POSIX 1003.1 for times
+ * specified in seconds and nanoseconds. If it is not defined in
+ * time.g, then we need to define it here
+ */
+struct timespec
+{
+  time_t tv_sec;
+  long tv_nsec;
+};
+#endif /* STRUCT_TIMESPEC_DEFINITION_MISSING */
+
+#ifdef STRUCT_ITIMERSPEC_DEFINITION_MISSING
+/* 
+ * The following structure is defined in POSIX.1b for timer start values and intervals.
+ * If it is not defined in time.h, then we need to define it here.
+ */
+struct itimerspec
+{
+  struct timespec it_interval;
+  struct timespec it_value;
+};
+#endif /* STRUCT_ITIMERSPEC_DEFINITION_MISSING */
+
+/* 
+ * Do a simple forward declaration in case the struct is not defined.
+ * In the versions of timer_create in libcompat, sigevent is never
+ * used.
+ */
+struct sigevent;
+
+#ifndef HAVE_CLOCK_GETTIME
+CK_DLL_EXP int clock_gettime (clockid_t clk_id, struct timespec *ts);
+#endif
+CK_DLL_EXP int timer_create (clockid_t clockid, struct sigevent *sevp,
+    timer_t * timerid);
+CK_DLL_EXP int timer_settime (timer_t timerid, int flags,
+    const struct itimerspec *new_value, struct itimerspec *old_value);
+CK_DLL_EXP int timer_delete (timer_t timerid);
+#endif /* HAVE_LIBRT */
+
+/* silence warnings about an empty library */
+CK_DLL_EXP void
+ck_do_nothing (void)
+    CK_ATTRIBUTE_NORETURN;
+
+#endif /* !LIBCOMPAT_H */
diff --git a/libs/gst/check/libcheck/strsignal.c b/libs/gst/check/libcheck/strsignal.c
new file mode 100644
index 0000000..b79409b
--- /dev/null
+++ b/libs/gst/check/libcheck/strsignal.c
@@ -0,0 +1,10 @@
+#include "libcompat.h"
+
+const char *
+strsignal (int sig)
+{
+  static char signame[40];
+
+  sprintf (signame, "SIG #%d", sig);
+  return signame;
+}
diff --git a/libs/gst/check/libcheck/timer_create.c b/libs/gst/check/libcheck/timer_create.c
new file mode 100644
index 0000000..a701781
--- /dev/null
+++ b/libs/gst/check/libcheck/timer_create.c
@@ -0,0 +1,15 @@
+#include "libcompat.h"
+
+int
+timer_create (clockid_t clockid CK_ATTRIBUTE_UNUSED,
+    struct sigevent *sevp CK_ATTRIBUTE_UNUSED,
+    timer_t * timerid CK_ATTRIBUTE_UNUSED)
+{
+  /* 
+   * The create function does nothing. timer_settime will use
+   * alarm to set the timer, and timer_delete will stop the
+   * alarm
+   */
+
+  return 0;
+}
diff --git a/libs/gst/check/libcheck/timer_delete.c b/libs/gst/check/libcheck/timer_delete.c
new file mode 100644
index 0000000..cc3ae29
--- /dev/null
+++ b/libs/gst/check/libcheck/timer_delete.c
@@ -0,0 +1,33 @@
+#include "libcompat.h"
+
+int
+timer_delete (timer_t timerid CK_ATTRIBUTE_UNUSED)
+{
+#ifdef HAVE_SETITIMER
+  /*
+   * If the system does not have timer_settime() but does have
+   * setitimer() use that instead of alarm().
+   */
+  struct itimerval interval;
+
+  /*
+   * Setting values to '0' results in disabling the running timer.
+   */
+  interval.it_value.tv_sec = 0;
+  interval.it_value.tv_usec = 0;
+  interval.it_interval.tv_sec = 0;
+  interval.it_interval.tv_usec = 0;
+
+  return setitimer (ITIMER_REAL, &interval, NULL);
+#else
+  /*
+   * There is only one timer, that used by alarm.
+   * Setting alarm(0) will not set a new alarm, and
+   * will kill the previous timer.
+   */
+
+  alarm (0);
+
+  return 0;
+#endif
+}
diff --git a/libs/gst/check/libcheck/timer_settime.c b/libs/gst/check/libcheck/timer_settime.c
new file mode 100644
index 0000000..d09ba27
--- /dev/null
+++ b/libs/gst/check/libcheck/timer_settime.c
@@ -0,0 +1,37 @@
+#include "libcompat.h"
+
+int
+timer_settime (timer_t timerid CK_ATTRIBUTE_UNUSED,
+    int flags CK_ATTRIBUTE_UNUSED,
+    const struct itimerspec *new_value,
+    struct itimerspec *old_value CK_ATTRIBUTE_UNUSED)
+{
+#ifdef HAVE_SETITIMER
+  /*
+   * If the system does not have timer_settime() but does have
+   * setitimer() use that instead of alarm().
+   */
+  struct itimerval interval;
+
+  interval.it_value.tv_sec = new_value->it_value.tv_sec;
+  interval.it_value.tv_usec = new_value->it_value.tv_nsec / 1000;
+  interval.it_interval.tv_sec = new_value->it_interval.tv_sec;
+  interval.it_interval.tv_usec = new_value->it_interval.tv_nsec / 1000;
+
+  return setitimer (ITIMER_REAL, &interval, NULL);
+#else
+  int seconds = new_value->it_value.tv_sec;
+
+  /* 
+   * As the alarm() call has only second precision, if the caller
+   * specifies partial seconds, we round up to the nearest second.
+   */
+  if (new_value->it_value.tv_nsec > 0) {
+    seconds += 1;
+  }
+
+  alarm (seconds);
+
+  return 0;
+#endif
+}
diff --git a/libs/gst/controller/Makefile.am b/libs/gst/controller/Makefile.am
index 4050f27..c89aa9c 100644
--- a/libs/gst/controller/Makefile.am
+++ b/libs/gst/controller/Makefile.am
@@ -29,18 +29,6 @@
 
 gcov: $(libgstcontroller_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstcontroller-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstcontroller_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(libgstcontroller_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstcontroller_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstcontroller_@GST_API_VERSION@_la_LIBADD) \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst/controller \
-	 -:HEADERS $(libgstcontroller_@GST_API_VERSION@_include_HEADERS) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 if HAVE_INTROSPECTION
 BUILT_GIRSOURCES = GstController-@GST_API_VERSION@.gir
 
@@ -48,7 +36,7 @@
 gir_sources=$(patsubst %,$(srcdir)/%, $(libgstcontroller_@GST_API_VERSION@_la_SOURCES))
 
 GstController-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstcontroller-@GST_API_VERSION@.la
-	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 		$(INTROSPECTION_SCANNER) -v --namespace GstController \
 		--nsversion=@GST_API_VERSION@ \
@@ -66,7 +54,7 @@
 		--libtool="${LIBTOOL}" \
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg-export gstreamer-controller-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		--output $@ \
 		$(gir_headers) \
 		$(gir_sources)
diff --git a/libs/gst/controller/Makefile.in b/libs/gst/controller/Makefile.in
index 8a02328..6b88ff9 100644
--- a/libs/gst/controller/Makefile.in
+++ b/libs/gst/controller/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,9 +93,6 @@
 target_triplet = @target@
 @HAVE_INTROSPECTION_TRUE@am__append_1 = $(BUILT_GIRSOURCES) $(typelibs_DATA)
 subdir = libs/gst/controller
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp \
-	$(libgstcontroller_@GST_API_VERSION@_include_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -94,6 +101,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -111,7 +119,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -124,6 +132,9 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstcontroller_@GST_API_VERSION@_include_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -223,6 +234,7 @@
 DATA = $(gir_DATA) $(typelibs_DATA)
 HEADERS = $(libgstcontroller_@GST_API_VERSION@_include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -234,7 +246,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -325,6 +342,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -336,9 +354,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -360,6 +380,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -421,8 +442,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -488,6 +511,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -549,7 +573,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/controller/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/controller/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -923,26 +946,16 @@
 	uninstall-libgstcontroller_@GST_API_VERSION@_includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
+
 
 %.c.gcov: .libs/libgstcontroller_@GST_API_VERSION@_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
 
 gcov: $(libgstcontroller_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstcontroller-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstcontroller_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(libgstcontroller_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstcontroller_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstcontroller_@GST_API_VERSION@_la_LIBADD) \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst/controller \
-	 -:HEADERS $(libgstcontroller_@GST_API_VERSION@_include_HEADERS) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 @HAVE_INTROSPECTION_TRUE@GstController-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstcontroller-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 @HAVE_INTROSPECTION_TRUE@		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_SCANNER) -v --namespace GstController \
 @HAVE_INTROSPECTION_TRUE@		--nsversion=@GST_API_VERSION@ \
@@ -960,7 +973,7 @@
 @HAVE_INTROSPECTION_TRUE@		--libtool="${LIBTOOL}" \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-controller-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
 @HAVE_INTROSPECTION_TRUE@		$(gir_sources)
diff --git a/libs/gst/controller/gstdirectcontrolbinding.c b/libs/gst/controller/gstdirectcontrolbinding.c
index 9c2e626..44eb405 100644
--- a/libs/gst/controller/gstdirectcontrolbinding.c
+++ b/libs/gst/controller/gstdirectcontrolbinding.c
@@ -38,6 +38,7 @@
 #define GST_CAT_DEFAULT control_binding_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
+
 static GObject *gst_direct_control_binding_constructor (GType type,
     guint n_construct_params, GObjectConstructParam * construct_params);
 static void gst_direct_control_binding_set_property (GObject * object,
@@ -70,6 +71,7 @@
 {
   PROP_0,
   PROP_CS,
+  PROP_ABSOLUTE,
   PROP_LAST
 };
 
@@ -97,9 +99,23 @@
   \
   s = CLAMP (s, 0.0, 1.0); \
   *d = (g##type) ROUNDING_OP (pspec->minimum * (1-s)) + (g##type) ROUNDING_OP (pspec->maximum * s); \
+} \
+\
+static void \
+abs_convert_g_value_to_##type (GstDirectControlBinding *self, gdouble s, GValue *d) \
+{ \
+  g##type v; \
+  v = (g##type) ROUNDING_OP (s); \
+  g_value_set_##type (d, v); \
+} \
+\
+static void \
+abs_convert_value_to_##type (GstDirectControlBinding *self, gdouble s, gpointer d_) \
+{ \
+  g##type *d = (g##type *)d_; \
+  *d = (g##type) ROUNDING_OP (s); \
 }
 
-
 DEFINE_CONVERT (int, Int, INT, rint);
 DEFINE_CONVERT (uint, UInt, UINT, rint);
 DEFINE_CONVERT (long, Long, LONG, rint);
@@ -180,6 +196,12 @@
       GST_TYPE_CONTROL_SOURCE,
       G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
 
+  properties[PROP_ABSOLUTE] =
+      g_param_spec_boolean ("absolute", "Absolute",
+      "Whether the control values are absolute",
+      FALSE,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+
   g_object_class_install_properties (gobject_class, PROP_LAST, properties);
 }
 
@@ -209,46 +231,43 @@
     GST_DEBUG ("  using type %s", g_type_name (base));
 
     /* select mapping function */
+
+#define SET_CONVERT_FUNCTION(type) \
+    if (self->ABI.abi.want_absolute) { \
+        self->convert_g_value = abs_convert_g_value_to_##type; \
+        self->convert_value = abs_convert_value_to_##type; \
+    } \
+    else { \
+        self->convert_g_value = convert_g_value_to_##type; \
+        self->convert_value = convert_value_to_##type; \
+    } \
+    self->byte_size = sizeof (g##type);
+
+
     switch (base) {
       case G_TYPE_INT:
-        self->convert_g_value = convert_g_value_to_int;
-        self->convert_value = convert_value_to_int;
-        self->byte_size = sizeof (gint);
+        SET_CONVERT_FUNCTION (int);
         break;
       case G_TYPE_UINT:
-        self->convert_g_value = convert_g_value_to_uint;
-        self->convert_value = convert_value_to_uint;
-        self->byte_size = sizeof (guint);
+        SET_CONVERT_FUNCTION (uint);
         break;
       case G_TYPE_LONG:
-        self->convert_g_value = convert_g_value_to_long;
-        self->convert_value = convert_value_to_long;
-        self->byte_size = sizeof (glong);
+        SET_CONVERT_FUNCTION (long);
         break;
       case G_TYPE_ULONG:
-        self->convert_g_value = convert_g_value_to_ulong;
-        self->convert_value = convert_value_to_ulong;
-        self->byte_size = sizeof (gulong);
+        SET_CONVERT_FUNCTION (ulong);
         break;
       case G_TYPE_INT64:
-        self->convert_g_value = convert_g_value_to_int64;
-        self->convert_value = convert_value_to_int64;
-        self->byte_size = sizeof (gint64);
+        SET_CONVERT_FUNCTION (int64);
         break;
       case G_TYPE_UINT64:
-        self->convert_g_value = convert_g_value_to_uint64;
-        self->convert_value = convert_value_to_uint64;
-        self->byte_size = sizeof (guint64);
+        SET_CONVERT_FUNCTION (uint64);
         break;
       case G_TYPE_FLOAT:
-        self->convert_g_value = convert_g_value_to_float;
-        self->convert_value = convert_value_to_float;
-        self->byte_size = sizeof (gfloat);
+        SET_CONVERT_FUNCTION (float);
         break;
       case G_TYPE_DOUBLE:
-        self->convert_g_value = convert_g_value_to_double;
-        self->convert_value = convert_value_to_double;
-        self->byte_size = sizeof (gdouble);
+        SET_CONVERT_FUNCTION (double);
         break;
       case G_TYPE_BOOLEAN:
         self->convert_g_value = convert_g_value_to_boolean;
@@ -280,6 +299,9 @@
     case PROP_CS:
       self->cs = g_value_dup_object (value);
       break;
+    case PROP_ABSOLUTE:
+      self->ABI.abi.want_absolute = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -296,6 +318,9 @@
     case PROP_CS:
       g_value_set_object (value, self->cs);
       break;
+    case PROP_ABSOLUTE:
+      g_value_set_boolean (value, self->ABI.abi.want_absolute);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -493,3 +518,25 @@
   return (GstControlBinding *) g_object_new (GST_TYPE_DIRECT_CONTROL_BINDING,
       "object", object, "name", property_name, "control-source", cs, NULL);
 }
+
+/**
+ * gst_direct_control_binding_new_absolute:
+ * @object: the object of the property
+ * @property_name: the property-name to attach the control source
+ * @cs: the control source
+ *
+ * Create a new control-binding that attaches the #GstControlSource to the
+ * #GObject property.
+ *
+ * Returns: (transfer floating): the new #GstDirectControlBinding
+ *
+ * Since: 1.6
+ */
+GstControlBinding *
+gst_direct_control_binding_new_absolute (GstObject * object,
+    const gchar * property_name, GstControlSource * cs)
+{
+  return (GstControlBinding *) g_object_new (GST_TYPE_DIRECT_CONTROL_BINDING,
+      "object", object, "name", property_name, "control-source", cs, "absolute",
+      TRUE, NULL);
+}
diff --git a/libs/gst/controller/gstdirectcontrolbinding.h b/libs/gst/controller/gstdirectcontrolbinding.h
index 597e5b0..5b816c8 100644
--- a/libs/gst/controller/gstdirectcontrolbinding.h
+++ b/libs/gst/controller/gstdirectcontrolbinding.h
@@ -85,8 +85,12 @@
   GstDirectControlBindingConvertValue convert_value;
   GstDirectControlBindingConvertGValue convert_g_value;
 
-  gpointer _gst_reserved[GST_PADDING];
-};
+  union {
+    gpointer _gst_reserved[GST_PADDING];
+    struct {
+      gboolean want_absolute;
+    } abi;
+  } ABI;};
 
 /**
  * GstDirectControlBindingClass:
@@ -110,6 +114,10 @@
 
 GstControlBinding * gst_direct_control_binding_new (GstObject * object, const gchar * property_name,
                                                     GstControlSource * cs);
+
+GstControlBinding * gst_direct_control_binding_new_absolute (GstObject * object, const gchar * property_name, 
+                                                    GstControlSource * cs);
+
 G_END_DECLS
 
 #endif /* __GST_DIRECT_CONTROL_BINDING_H__ */
diff --git a/libs/gst/controller/gsttimedvaluecontrolsource.c b/libs/gst/controller/gsttimedvaluecontrolsource.c
index 0d0b8be..4c8dca9 100644
--- a/libs/gst/controller/gsttimedvaluecontrolsource.c
+++ b/libs/gst/controller/gsttimedvaluecontrolsource.c
@@ -52,6 +52,17 @@
 G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstTimedValueControlSource,
     gst_timed_value_control_source, GST_TYPE_CONTROL_SOURCE, _do_init);
 
+
+enum
+{
+  VALUE_CHANGED_SIGNAL,
+  VALUE_ADDED_SIGNAL,
+  VALUE_REMOVED_SIGNAL,
+  LAST_SIGNAL
+};
+
+static guint gst_timed_value_control_source_signals[LAST_SIGNAL] = { 0 };
+
 /*
  * gst_control_point_free:
  * @prop: the object to free
@@ -67,6 +78,29 @@
   g_slice_free (GstControlPoint, cp);
 }
 
+static gpointer
+gst_control_point_copy (GstControlPoint * boxed)
+{
+  return g_slice_dup (GstControlPoint, boxed);
+}
+
+GType
+gst_control_point_get_type (void)
+{
+  static volatile gsize type_id = 0;
+
+  if (g_once_init_enter (&type_id)) {
+    GType tmp =
+        g_boxed_type_register_static (g_intern_static_string
+        ("GstControlPoint"),
+        (GBoxedCopyFunc) gst_control_point_copy,
+        (GBoxedFreeFunc) gst_control_point_free);
+    g_once_init_leave (&type_id, tmp);
+  }
+
+  return type_id;
+}
+
 static void
 gst_timed_value_control_source_reset (GstTimedValueControlSource * self)
 {
@@ -138,9 +172,11 @@
     self, GstClockTime timestamp, const gdouble value)
 {
   GSequenceIter *iter;
+  GstControlPoint *cp;
+
+  g_mutex_lock (&self->lock);
 
   /* check if a control point for the timestamp already exists */
-
   /* iter contains the iter right *after* timestamp */
   if (G_LIKELY (self->values)) {
     iter =
@@ -148,13 +184,22 @@
         (GCompareDataFunc) gst_control_point_find, NULL);
     if (iter) {
       GSequenceIter *prev = g_sequence_iter_prev (iter);
-      GstControlPoint *cp = g_sequence_get (prev);
 
-      /* If the timestamp is the same just update the control point value */
-      if (cp->timestamp == timestamp) {
-        /* update control point */
-        cp->value = value;
-        goto done;
+      if (!g_sequence_iter_is_end (prev)) {
+        GstControlPoint *cp = g_sequence_get (prev);
+
+        /* If the timestamp is the same just update the control point value */
+        if (cp->timestamp == timestamp) {
+
+          /* update control point */
+          cp->value = value;
+          g_mutex_unlock (&self->lock);
+
+          g_signal_emit (self,
+              gst_timed_value_control_source_signals[VALUE_CHANGED_SIGNAL], 0,
+              cp);
+          goto done;
+        }
       }
     }
   } else {
@@ -163,9 +208,14 @@
   }
 
   /* sort new cp into the prop->values list */
-  g_sequence_insert_sorted (self->values, _make_new_cp (self, timestamp,
-          value), (GCompareDataFunc) gst_control_point_compare, NULL);
+  cp = _make_new_cp (self, timestamp, value);
+  g_sequence_insert_sorted (self->values, cp,
+      (GCompareDataFunc) gst_control_point_compare, NULL);
   self->nvalues++;
+  g_mutex_unlock (&self->lock);
+
+  g_signal_emit (self,
+      gst_timed_value_control_source_signals[VALUE_ADDED_SIGNAL], 0, cp);
 
 done:
   self->valid_cache = FALSE;
@@ -182,7 +232,7 @@
  *
  * For use in control source implementations.
  *
- * Returns: the found #GSequenceIter or %NULL
+ * Returns: (transfer none): the found #GSequenceIter or %NULL
  */
 GSequenceIter *gst_timed_value_control_source_find_control_point_iter
     (GstTimedValueControlSource * self, GstClockTime timestamp)
@@ -224,9 +274,7 @@
   g_return_val_if_fail (GST_IS_TIMED_VALUE_CONTROL_SOURCE (self), FALSE);
   g_return_val_if_fail (GST_CLOCK_TIME_IS_VALID (timestamp), FALSE);
 
-  g_mutex_lock (&self->lock);
   gst_timed_value_control_source_set_internal (self, timestamp, value);
-  g_mutex_unlock (&self->lock);
 
   return TRUE;
 }
@@ -257,10 +305,8 @@
       GST_WARNING ("GstTimedValued with invalid timestamp passed to %s",
           GST_FUNCTION);
     } else {
-      g_mutex_lock (&self->lock);
       gst_timed_value_control_source_set_internal (self, tv->timestamp,
           tv->value);
-      g_mutex_unlock (&self->lock);
       res = TRUE;
     }
   }
@@ -283,6 +329,7 @@
 {
   GSequenceIter *iter;
   gboolean res = FALSE;
+  GstControlPoint *cp = NULL;
 
   g_return_val_if_fail (GST_IS_TIMED_VALUE_CONTROL_SOURCE (self), FALSE);
   g_return_val_if_fail (GST_CLOCK_TIME_IS_VALID (timestamp), FALSE);
@@ -292,7 +339,6 @@
   if (G_LIKELY (self->values) && (iter =
           g_sequence_search (self->values, &timestamp,
               (GCompareDataFunc) gst_control_point_find, NULL))) {
-    GstControlPoint *cp;
 
     /* Iter contains the iter right after timestamp, i.e.
      * we need to get the previous one and check the timestamp
@@ -300,14 +346,24 @@
     iter = g_sequence_iter_prev (iter);
     cp = g_sequence_get (iter);
     if (cp->timestamp == timestamp) {
+      cp = g_slice_dup (GstControlPoint, cp);
       g_sequence_remove (iter);
       self->nvalues--;
       self->valid_cache = FALSE;
       res = TRUE;
+    } else {
+      cp = NULL;
     }
+
   }
   g_mutex_unlock (&self->lock);
 
+  if (cp) {
+    g_signal_emit (self,
+        gst_timed_value_control_source_signals[VALUE_REMOVED_SIGNAL], 0, cp);
+    g_slice_free (GstControlPoint, cp);
+  }
+
   return res;
 }
 
@@ -420,5 +476,53 @@
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   //GstControlSourceClass *csource_class = GST_CONTROL_SOURCE_CLASS (klass);
 
+  /**
+   * GstTimedValueControlSource::value-changed
+   * @self: The #GstTimedValueControlSource on which a #GstTimedValue has changed
+   * @timed_value: The #GstTimedValue where the value changed
+   *
+   * Emited right after the new value has been set on @timed_signals
+   *
+   * Since: 1.6
+   */
+  gst_timed_value_control_source_signals[VALUE_CHANGED_SIGNAL] =
+      g_signal_new ("value-changed", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, 0, NULL,
+      NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1,
+      gst_control_point_get_type ());
+
+  /**
+   * GstTimedValueControlSource::value-added
+   * @self: The #GstTimedValueControlSource into which a #GstTimedValue has been
+   *        added
+   * @timed_value: The newly added #GstTimedValue
+   *
+   * Emited right after the new value has been added to @self
+   *
+   * Since: 1.6
+   */
+  gst_timed_value_control_source_signals[VALUE_ADDED_SIGNAL] =
+      g_signal_new ("value-added", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, 0, NULL,
+      NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1,
+      gst_control_point_get_type ());
+
+  /**
+   * GstTimedValueControlSource::value-removed
+   * @self: The #GstTimedValueControlSource from which a #GstTimedValue has been
+   *        removed
+   * @timed_value: The removed #GstTimedValue
+   *
+   * Emited when @timed_value is removed from @self
+   *
+   * Since: 1.6
+   */
+  gst_timed_value_control_source_signals[VALUE_REMOVED_SIGNAL] =
+      g_signal_new ("value-removed", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, 0, NULL,
+      NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1,
+      gst_control_point_get_type ());
+
+
   gobject_class->finalize = gst_timed_value_control_source_finalize;
 }
diff --git a/libs/gst/controller/gsttimedvaluecontrolsource.h b/libs/gst/controller/gsttimedvaluecontrolsource.h
index aea2a44..b661da9 100644
--- a/libs/gst/controller/gsttimedvaluecontrolsource.h
+++ b/libs/gst/controller/gsttimedvaluecontrolsource.h
@@ -52,6 +52,8 @@
 
 /**
  * GstControlPoint:
+ * @timestamp: timestamp of the value change
+ * @value: the new value
  *
  * a internal structure for value+time and various temporary
  * values used for interpolation. This "inherits" from
@@ -60,10 +62,10 @@
 struct _GstControlPoint
 {
   /* fields from GstTimedValue. DO NOT CHANGE! */
-  GstClockTime timestamp;       /* timestamp of the value change */
-  gdouble value;                /* the new value */
+  GstClockTime timestamp;
+  gdouble value;
 
-  /* internal fields */
+  /*< private >*/
 
   /* Caches for the interpolators */
   /* FIXME: we should not have this here already ... */
@@ -76,6 +78,8 @@
 
 };
 
+GType gst_control_point_get_type (void);
+
 /**
  * GstTimedValueControlSource:
  *
diff --git a/libs/gst/controller/gsttriggercontrolsource.c b/libs/gst/controller/gsttriggercontrolsource.c
index 64d99d4..c40525f 100644
--- a/libs/gst/controller/gsttriggercontrolsource.c
+++ b/libs/gst/controller/gsttriggercontrolsource.c
@@ -24,7 +24,7 @@
 
  /**
  * SECTION:gsttriggercontrolsource
- * @short_description: interpolation control source
+ * @short_description: trigger control source
  *
  * #GstTriggerControlSource is a #GstControlSource, that returns values from user-given
  * control points. It allows for a tolerance on the time-stamps.
diff --git a/libs/gst/helpers/Makefile.am b/libs/gst/helpers/Makefile.am
index 2816bc2..0ae9ab0 100644
--- a/libs/gst/helpers/Makefile.am
+++ b/libs/gst/helpers/Makefile.am
@@ -1,3 +1,14 @@
+if ENABLE_BASH_COMPLETION
+bin_PROGRAMS = gst-completion-helper-@GST_API_VERSION@
+
+gst_completion_helper_@GST_API_VERSION@_SOURCES = gst-completion-helper.c
+gst_completion_helper_@GST_API_VERSION@_CFLAGS = $(GST_OBJ_CFLAGS)
+gst_completion_helper_@GST_API_VERSION@_LDADD = $(GST_OBJ_LIBS)
+
+bashhelpersdir = $(BASH_HELPERS_DIR)
+dist_bashhelpers_DATA = gst
+endif
+
 helpers_PROGRAMS = gst-plugin-scanner
 helpersdir=$(libexecdir)/gstreamer-$(GST_API_VERSION)
 
@@ -5,15 +16,38 @@
 gst_plugin_scanner_CFLAGS = $(GST_OBJ_CFLAGS)
 gst_plugin_scanner_LDADD = $(GST_OBJ_LIBS)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:EXECUTABLE gst-plugin-scanner  -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(gst_plugin_scanner_SOURCES) \
-	 -:CFLAGS $(gst_plugin_scanner_CFLAGS) \
-	 -:LDFLAGS $(gst_plugin_scanner_LDADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
+if HAVE_PTP
+helpers_PROGRAMS += gst-ptp-helper
+gst_ptp_helper_SOURCES = gst-ptp-helper.c
+gst_ptp_helper_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
+gst_ptp_helper_LDADD = $(GST_OBJ_LIBS) $(GIO_LIBS) $(CAP_LIBS)
+endif
+
+install-exec-hook: install-helpersPROGRAMS
+if HAVE_PTP
+if HAVE_PTP_HELPER_SETUID
+	- chown root $(DESTDIR)$(helpersdir)/gst-ptp-helper
+	- chmod u+s $(DESTDIR)$(helpersdir)/gst-ptp-helper
+endif
+if HAVE_PTP_HELPER_CAPABILITIES
+	- $(SETCAP) cap_net_bind_service,cap_net_admin+ep $(DESTDIR)$(helpersdir)/gst-ptp-helper
+endif
+endif
+if ENABLE_BASH_COMPLETION
+	$(MKDIR_P) $(DESTDIR)$(BASH_HELPERS_DIR) && \
+	cd $(DESTDIR)$(bindir) && \
+	$(INSTALL) `echo "gst-completion-helper-" | sed '$(transform)'`@GST_API_VERSION@$(EXEEXT) \
+        $(DESTDIR)$(BASH_HELPERS_DIR)/gst-completion-helper-@GST_API_VERSION@$(EXEEXT) && \
+	rm `echo "gst-completion-helper-" | sed '$(transform)'`@GST_API_VERSION@$(EXEEXT)
+
+uninstall-hook:
+	rm -f $(DESTDIR)$(BASH_HELPERS_DIR)/gst-completion-helper-@GST_API_VERSION@$(EXEEXT)
+endif
 
 # clean out the old one to make sure everything is udpated correctly
 # remove again after release
 CLEANFILES = plugin-scanner
+
+if ENABLE_BASH_COMPLETION
+CLEANFILES += gst-completion-helper-@GST_API_VERSION@
+endif
diff --git a/libs/gst/helpers/Makefile.in b/libs/gst/helpers/Makefile.in
index 67cb892..8222700 100644
--- a/libs/gst/helpers/Makefile.in
+++ b/libs/gst/helpers/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,8 +14,19 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,10 +90,11 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-helpers_PROGRAMS = gst-plugin-scanner$(EXEEXT)
+@ENABLE_BASH_COMPLETION_TRUE@bin_PROGRAMS = gst-completion-helper-@GST_API_VERSION@$(EXEEXT)
+helpers_PROGRAMS = gst-plugin-scanner$(EXEEXT) $(am__EXEEXT_1)
+@HAVE_PTP_TRUE@am__append_1 = gst-ptp-helper
+@ENABLE_BASH_COMPLETION_TRUE@am__append_2 = gst-completion-helper-@GST_API_VERSION@
 subdir = libs/gst/helpers
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +103,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +121,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,25 +134,50 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_bashhelpers_DATA_DIST) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(helpersdir)"
-PROGRAMS = $(helpers_PROGRAMS)
-am_gst_plugin_scanner_OBJECTS =  \
-	gst_plugin_scanner-gst-plugin-scanner.$(OBJEXT)
-gst_plugin_scanner_OBJECTS = $(am_gst_plugin_scanner_OBJECTS)
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(helpersdir)" \
+	"$(DESTDIR)$(bashhelpersdir)"
+@HAVE_PTP_TRUE@am__EXEEXT_1 = gst-ptp-helper$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS) $(helpers_PROGRAMS)
+am__gst_completion_helper_@GST_API_VERSION@_SOURCES_DIST =  \
+	gst-completion-helper.c
+@ENABLE_BASH_COMPLETION_TRUE@am_gst_completion_helper_@GST_API_VERSION@_OBJECTS = gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.$(OBJEXT)
+gst_completion_helper_@GST_API_VERSION@_OBJECTS =  \
+	$(am_gst_completion_helper_@GST_API_VERSION@_OBJECTS)
 am__DEPENDENCIES_1 =
-gst_plugin_scanner_DEPENDENCIES = $(am__DEPENDENCIES_1)
+@ENABLE_BASH_COMPLETION_TRUE@gst_completion_helper_@GST_API_VERSION@_DEPENDENCIES =  \
+@ENABLE_BASH_COMPLETION_TRUE@	$(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 = 
+gst_completion_helper_@GST_API_VERSION@_LINK = $(LIBTOOL) $(AM_V_lt) \
+	--tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(gst_completion_helper_@GST_API_VERSION@_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_gst_plugin_scanner_OBJECTS =  \
+	gst_plugin_scanner-gst-plugin-scanner.$(OBJEXT)
+gst_plugin_scanner_OBJECTS = $(am_gst_plugin_scanner_OBJECTS)
+gst_plugin_scanner_DEPENDENCIES = $(am__DEPENDENCIES_1)
 gst_plugin_scanner_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(gst_plugin_scanner_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
+am__gst_ptp_helper_SOURCES_DIST = gst-ptp-helper.c
+@HAVE_PTP_TRUE@am_gst_ptp_helper_OBJECTS =  \
+@HAVE_PTP_TRUE@	gst_ptp_helper-gst-ptp-helper.$(OBJEXT)
+gst_ptp_helper_OBJECTS = $(am_gst_ptp_helper_OBJECTS)
+@HAVE_PTP_TRUE@gst_ptp_helper_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+@HAVE_PTP_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+gst_ptp_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(gst_ptp_helper_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
@@ -174,13 +212,46 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(gst_plugin_scanner_SOURCES)
-DIST_SOURCES = $(gst_plugin_scanner_SOURCES)
+SOURCES = $(gst_completion_helper_@GST_API_VERSION@_SOURCES) \
+	$(gst_plugin_scanner_SOURCES) $(gst_ptp_helper_SOURCES)
+DIST_SOURCES =  \
+	$(am__gst_completion_helper_@GST_API_VERSION@_SOURCES_DIST) \
+	$(gst_plugin_scanner_SOURCES) \
+	$(am__gst_ptp_helper_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__dist_bashhelpers_DATA_DIST = gst
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+DATA = $(dist_bashhelpers_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -200,6 +271,7 @@
   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@
@@ -211,7 +283,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -302,6 +379,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -313,9 +391,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -337,6 +417,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -398,8 +479,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -465,6 +548,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -477,14 +561,22 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+@ENABLE_BASH_COMPLETION_TRUE@gst_completion_helper_@GST_API_VERSION@_SOURCES = gst-completion-helper.c
+@ENABLE_BASH_COMPLETION_TRUE@gst_completion_helper_@GST_API_VERSION@_CFLAGS = $(GST_OBJ_CFLAGS)
+@ENABLE_BASH_COMPLETION_TRUE@gst_completion_helper_@GST_API_VERSION@_LDADD = $(GST_OBJ_LIBS)
+@ENABLE_BASH_COMPLETION_TRUE@bashhelpersdir = $(BASH_HELPERS_DIR)
+@ENABLE_BASH_COMPLETION_TRUE@dist_bashhelpers_DATA = gst
 helpersdir = $(libexecdir)/gstreamer-$(GST_API_VERSION)
 gst_plugin_scanner_SOURCES = gst-plugin-scanner.c
 gst_plugin_scanner_CFLAGS = $(GST_OBJ_CFLAGS)
 gst_plugin_scanner_LDADD = $(GST_OBJ_LIBS)
+@HAVE_PTP_TRUE@gst_ptp_helper_SOURCES = gst-ptp-helper.c
+@HAVE_PTP_TRUE@gst_ptp_helper_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
+@HAVE_PTP_TRUE@gst_ptp_helper_LDADD = $(GST_OBJ_LIBS) $(GIO_LIBS) $(CAP_LIBS)
 
 # clean out the old one to make sure everything is udpated correctly
 # remove again after release
-CLEANFILES = plugin-scanner
+CLEANFILES = plugin-scanner $(am__append_2)
 all: all-am
 
 .SUFFIXES:
@@ -501,7 +593,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/helpers/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/helpers/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -519,6 +610,55 @@
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
 install-helpersPROGRAMS: $(helpers_PROGRAMS)
 	@$(NORMAL_INSTALL)
 	@list='$(helpers_PROGRAMS)'; test -n "$(helpersdir)" || list=; \
@@ -569,17 +709,27 @@
 	echo " rm -f" $$list; \
 	rm -f $$list
 
+gst-completion-helper-@GST_API_VERSION@$(EXEEXT): $(gst_completion_helper_@GST_API_VERSION@_OBJECTS) $(gst_completion_helper_@GST_API_VERSION@_DEPENDENCIES) $(EXTRA_gst_completion_helper_@GST_API_VERSION@_DEPENDENCIES) 
+	@rm -f gst-completion-helper-@GST_API_VERSION@$(EXEEXT)
+	$(AM_V_CCLD)$(gst_completion_helper_@GST_API_VERSION@_LINK) $(gst_completion_helper_@GST_API_VERSION@_OBJECTS) $(gst_completion_helper_@GST_API_VERSION@_LDADD) $(LIBS)
+
 gst-plugin-scanner$(EXEEXT): $(gst_plugin_scanner_OBJECTS) $(gst_plugin_scanner_DEPENDENCIES) $(EXTRA_gst_plugin_scanner_DEPENDENCIES) 
 	@rm -f gst-plugin-scanner$(EXEEXT)
 	$(AM_V_CCLD)$(gst_plugin_scanner_LINK) $(gst_plugin_scanner_OBJECTS) $(gst_plugin_scanner_LDADD) $(LIBS)
 
+gst-ptp-helper$(EXEEXT): $(gst_ptp_helper_OBJECTS) $(gst_ptp_helper_DEPENDENCIES) $(EXTRA_gst_ptp_helper_DEPENDENCIES) 
+	@rm -f gst-ptp-helper$(EXEEXT)
+	$(AM_V_CCLD)$(gst_ptp_helper_LINK) $(gst_ptp_helper_OBJECTS) $(gst_ptp_helper_LDADD) $(LIBS)
+
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_plugin_scanner-gst-plugin-scanner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -605,6 +755,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
+gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.o: gst-completion-helper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_completion_helper_@GST_API_VERSION@_CFLAGS) $(CFLAGS) -MT gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.o -MD -MP -MF $(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Tpo -c -o gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.o `test -f 'gst-completion-helper.c' || echo '$(srcdir)/'`gst-completion-helper.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Tpo $(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-completion-helper.c' object='gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.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) $(gst_completion_helper_@GST_API_VERSION@_CFLAGS) $(CFLAGS) -c -o gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.o `test -f 'gst-completion-helper.c' || echo '$(srcdir)/'`gst-completion-helper.c
+
+gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.obj: gst-completion-helper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_completion_helper_@GST_API_VERSION@_CFLAGS) $(CFLAGS) -MT gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.obj -MD -MP -MF $(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Tpo -c -o gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.obj `if test -f 'gst-completion-helper.c'; then $(CYGPATH_W) 'gst-completion-helper.c'; else $(CYGPATH_W) '$(srcdir)/gst-completion-helper.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Tpo $(DEPDIR)/gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-completion-helper.c' object='gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.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) $(gst_completion_helper_@GST_API_VERSION@_CFLAGS) $(CFLAGS) -c -o gst_completion_helper_@GST_API_VERSION@-gst-completion-helper.obj `if test -f 'gst-completion-helper.c'; then $(CYGPATH_W) 'gst-completion-helper.c'; else $(CYGPATH_W) '$(srcdir)/gst-completion-helper.c'; fi`
+
 gst_plugin_scanner-gst-plugin-scanner.o: gst-plugin-scanner.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_plugin_scanner_CFLAGS) $(CFLAGS) -MT gst_plugin_scanner-gst-plugin-scanner.o -MD -MP -MF $(DEPDIR)/gst_plugin_scanner-gst-plugin-scanner.Tpo -c -o gst_plugin_scanner-gst-plugin-scanner.o `test -f 'gst-plugin-scanner.c' || echo '$(srcdir)/'`gst-plugin-scanner.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gst_plugin_scanner-gst-plugin-scanner.Tpo $(DEPDIR)/gst_plugin_scanner-gst-plugin-scanner.Po
@@ -619,11 +783,46 @@
 @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) $(gst_plugin_scanner_CFLAGS) $(CFLAGS) -c -o gst_plugin_scanner-gst-plugin-scanner.obj `if test -f 'gst-plugin-scanner.c'; then $(CYGPATH_W) 'gst-plugin-scanner.c'; else $(CYGPATH_W) '$(srcdir)/gst-plugin-scanner.c'; fi`
 
+gst_ptp_helper-gst-ptp-helper.o: gst-ptp-helper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_ptp_helper_CFLAGS) $(CFLAGS) -MT gst_ptp_helper-gst-ptp-helper.o -MD -MP -MF $(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Tpo -c -o gst_ptp_helper-gst-ptp-helper.o `test -f 'gst-ptp-helper.c' || echo '$(srcdir)/'`gst-ptp-helper.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Tpo $(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-ptp-helper.c' object='gst_ptp_helper-gst-ptp-helper.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) $(gst_ptp_helper_CFLAGS) $(CFLAGS) -c -o gst_ptp_helper-gst-ptp-helper.o `test -f 'gst-ptp-helper.c' || echo '$(srcdir)/'`gst-ptp-helper.c
+
+gst_ptp_helper-gst-ptp-helper.obj: gst-ptp-helper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_ptp_helper_CFLAGS) $(CFLAGS) -MT gst_ptp_helper-gst-ptp-helper.obj -MD -MP -MF $(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Tpo -c -o gst_ptp_helper-gst-ptp-helper.obj `if test -f 'gst-ptp-helper.c'; then $(CYGPATH_W) 'gst-ptp-helper.c'; else $(CYGPATH_W) '$(srcdir)/gst-ptp-helper.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Tpo $(DEPDIR)/gst_ptp_helper-gst-ptp-helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-ptp-helper.c' object='gst_ptp_helper-gst-ptp-helper.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) $(gst_ptp_helper_CFLAGS) $(CFLAGS) -c -o gst_ptp_helper-gst-ptp-helper.obj `if test -f 'gst-ptp-helper.c'; then $(CYGPATH_W) 'gst-ptp-helper.c'; else $(CYGPATH_W) '$(srcdir)/gst-ptp-helper.c'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-dist_bashhelpersDATA: $(dist_bashhelpers_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_bashhelpers_DATA)'; test -n "$(bashhelpersdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bashhelpersdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bashhelpersdir)" || 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_DATA) $$files '$(DESTDIR)$(bashhelpersdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(bashhelpersdir)" || exit $$?; \
+	done
+
+uninstall-dist_bashhelpersDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_bashhelpers_DATA)'; test -n "$(bashhelpersdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(bashhelpersdir)'; $(am__uninstall_files_from_dir)
 
 ID: $(am__tagged_files)
 	$(am__define_uniq_tagged_files); mkid -fID $$unique
@@ -709,9 +908,9 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(PROGRAMS) $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(helpersdir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(helpersdir)" "$(DESTDIR)$(bashhelpersdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -745,10 +944,11 @@
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
+@ENABLE_BASH_COMPLETION_FALSE@uninstall-hook:
 clean: clean-am
 
-clean-am: clean-generic clean-helpersPROGRAMS clean-libtool \
-	mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-helpersPROGRAMS \
+	clean-libtool mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -768,14 +968,15 @@
 
 info-am:
 
-install-data-am: install-helpersPROGRAMS
+install-data-am: install-dist_bashhelpersDATA install-helpersPROGRAMS
 
 install-dvi: install-dvi-am
 
 install-dvi-am:
 
-install-exec-am:
-
+install-exec-am: install-binPROGRAMS
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
 install-html: install-html-am
 
 install-html-am:
@@ -814,34 +1015,45 @@
 
 ps-am:
 
-uninstall-am: uninstall-helpersPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-helpersPROGRAMS clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-helpersPROGRAMS install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+uninstall-am: uninstall-binPROGRAMS uninstall-dist_bashhelpersDATA \
 	uninstall-helpersPROGRAMS
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: install-am install-exec-am install-strip uninstall-am
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-helpersPROGRAMS \
+	clean-libtool cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dist_bashhelpersDATA install-dvi \
+	install-dvi-am install-exec install-exec-am install-exec-hook \
+	install-helpersPROGRAMS install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-dist_bashhelpersDATA uninstall-helpersPROGRAMS \
+	uninstall-hook
+
+.PRECIOUS: Makefile
 
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:EXECUTABLE gst-plugin-scanner  -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(gst_plugin_scanner_SOURCES) \
-	 -:CFLAGS $(gst_plugin_scanner_CFLAGS) \
-	 -:LDFLAGS $(gst_plugin_scanner_LDADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
+install-exec-hook: install-helpersPROGRAMS
+@HAVE_PTP_HELPER_SETUID_TRUE@@HAVE_PTP_TRUE@	- chown root $(DESTDIR)$(helpersdir)/gst-ptp-helper
+@HAVE_PTP_HELPER_SETUID_TRUE@@HAVE_PTP_TRUE@	- chmod u+s $(DESTDIR)$(helpersdir)/gst-ptp-helper
+@HAVE_PTP_HELPER_CAPABILITIES_TRUE@@HAVE_PTP_TRUE@	- $(SETCAP) cap_net_bind_service,cap_net_admin+ep $(DESTDIR)$(helpersdir)/gst-ptp-helper
+@ENABLE_BASH_COMPLETION_TRUE@	$(MKDIR_P) $(DESTDIR)$(BASH_HELPERS_DIR) && \
+@ENABLE_BASH_COMPLETION_TRUE@	cd $(DESTDIR)$(bindir) && \
+@ENABLE_BASH_COMPLETION_TRUE@	$(INSTALL) `echo "gst-completion-helper-" | sed '$(transform)'`@GST_API_VERSION@$(EXEEXT) \
+@ENABLE_BASH_COMPLETION_TRUE@        $(DESTDIR)$(BASH_HELPERS_DIR)/gst-completion-helper-@GST_API_VERSION@$(EXEEXT) && \
+@ENABLE_BASH_COMPLETION_TRUE@	rm `echo "gst-completion-helper-" | sed '$(transform)'`@GST_API_VERSION@$(EXEEXT)
+
+@ENABLE_BASH_COMPLETION_TRUE@uninstall-hook:
+@ENABLE_BASH_COMPLETION_TRUE@	rm -f $(DESTDIR)$(BASH_HELPERS_DIR)/gst-completion-helper-@GST_API_VERSION@$(EXEEXT)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libs/gst/helpers/gst b/libs/gst/helpers/gst
new file mode 100644
index 0000000..c8bcee8
--- /dev/null
+++ b/libs/gst/helpers/gst
@@ -0,0 +1,35 @@
+# GStreamer
+# Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+#
+# bash/zsh completion support for common gstreamer options
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+___gst_debug_level () { _gst_mandatory_argument; }
+___gst_debug () { _gst_mandatory_argument; }
+___gst_debug_color_mode () { _gst_mandatory_argument; }
+___gst_plugin_path () { _gst_mandatory_argument; }
+___gst_plugin_load () { _gst_mandatory_argument; }
+
+_gst_mandatory_argument ()
+{
+	if [[ "$prev" != "$command" ]]
+	then
+		COMPREPLY=( $(compgen -W "$(ges-launch-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
+	else
+		COMPREPLY=("$cur")
+	fi
+}
diff --git a/libs/gst/helpers/gst-completion-helper.c b/libs/gst/helpers/gst-completion-helper.c
new file mode 100644
index 0000000..e99b73b
--- /dev/null
+++ b/libs/gst/helpers/gst-completion-helper.c
@@ -0,0 +1,269 @@
+/* GStreamer
+ * Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+ *
+ * gst-completion-helper.c: tool to let other tools enjoy fast and powerful
+ * gstreamer-aware completion
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <gst/gst.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+
+static GList *
+get_pad_templates_info (GstElement * element, GstElementFactory * factory,
+    GstPadDirection direction)
+{
+  const GList *pads;
+  GstStaticPadTemplate *padtemplate;
+  GList *caps_list = NULL;
+
+  if (gst_element_factory_get_num_pad_templates (factory) == 0) {
+    g_print ("  none\n");
+    return NULL;
+  }
+
+  pads = gst_element_factory_get_static_pad_templates (factory);
+  while (pads) {
+    padtemplate = (GstStaticPadTemplate *) (pads->data);
+    pads = g_list_next (pads);
+
+    if (padtemplate->direction != direction)
+      continue;
+
+    if (padtemplate->static_caps.string) {
+      caps_list =
+          g_list_append (caps_list,
+          gst_static_caps_get (&padtemplate->static_caps));
+    }
+
+  }
+
+  return caps_list;
+}
+
+static GList *
+_get_pad_caps (const gchar * factory_name, GstPadDirection direction)
+{
+  GstElementFactory *factory = gst_element_factory_find (factory_name);
+  GstElement *element = gst_element_factory_make (factory_name, NULL);
+
+  if (!element)
+    return NULL;
+  if (!factory)
+    return NULL;
+  factory =
+      GST_ELEMENT_FACTORY (gst_plugin_feature_load (GST_PLUGIN_FEATURE
+          (factory)));
+  if (!factory)
+    return NULL;
+  return get_pad_templates_info (element, factory, direction);
+}
+
+static gboolean
+_are_linkable (GstPluginFeature * feature, GList * caps_list)
+{
+  gboolean print = FALSE;
+  GstElementFactory *factory = GST_ELEMENT_FACTORY (feature);
+
+  GList *tmp;
+  print = FALSE;
+  for (tmp = caps_list; tmp; tmp = tmp->next) {
+    if (gst_element_factory_can_sink_any_caps (factory, tmp->data)) {
+      print = TRUE;
+      break;
+    }
+  }
+
+  return print;
+}
+
+static gboolean
+_belongs_to_klass (GstElementFactory * factory, const gchar * klass)
+{
+  const gchar *factory_klass;
+
+
+  factory_klass =
+      gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_KLASS);
+  if (strstr (factory_klass, klass))
+    return TRUE;
+  return FALSE;
+}
+
+static void
+_list_features (const gchar * compatible_with, const gchar * klass,
+    GstCaps * sinkcaps)
+{
+  GList *plugins, *orig_plugins;
+  GList *caps_list = NULL;
+
+  if (compatible_with) {
+    caps_list = _get_pad_caps (compatible_with, GST_PAD_SRC);
+  }
+
+  orig_plugins = plugins = gst_registry_get_plugin_list (gst_registry_get ());
+  while (plugins) {
+    GList *features, *orig_features;
+    GstPlugin *plugin;
+
+    plugin = (GstPlugin *) (plugins->data);
+    plugins = g_list_next (plugins);
+
+    if (GST_OBJECT_FLAG_IS_SET (plugin, GST_PLUGIN_FLAG_BLACKLISTED)) {
+      continue;
+    }
+
+    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)) {
+        gboolean print = TRUE;
+        if (caps_list)
+          print = _are_linkable (feature, caps_list);
+        if (print && klass)
+          print = _belongs_to_klass (GST_ELEMENT_FACTORY (feature), klass);
+        if (print && sinkcaps)
+          print =
+              gst_element_factory_can_sink_any_caps (GST_ELEMENT_FACTORY
+              (feature), sinkcaps);
+
+        if (print)
+          g_print ("%s ", gst_plugin_feature_get_name (feature));
+      }
+
+    next:
+      features = g_list_next (features);
+    }
+
+    gst_plugin_feature_list_free (orig_features);
+  }
+
+  g_list_free (caps_list);
+  g_print ("\n");
+  gst_plugin_list_free (orig_plugins);
+}
+
+static void
+_print_element_properties_info (GstElement * element)
+{
+  GParamSpec **property_specs;
+  guint num_properties, i;
+
+  property_specs = g_object_class_list_properties
+      (G_OBJECT_GET_CLASS (element), &num_properties);
+
+  for (i = 0; i < num_properties; i++) {
+    GParamSpec *param = property_specs[i];
+
+    if (param->flags & G_PARAM_WRITABLE) {
+      g_print ("%s= ", g_param_spec_get_name (param));
+    }
+  }
+
+  g_free (property_specs);
+}
+
+static void
+_list_element_properties (const gchar * factory_name)
+{
+  GstElement *element = gst_element_factory_make (factory_name, NULL);
+
+  _print_element_properties_info (element);
+}
+
+int
+main (int argc, char *argv[])
+{
+  gboolean list_features = FALSE;
+  gchar *compatible_with = NULL;
+  gchar *element = NULL;
+  gchar *klass = NULL;
+  gchar *caps_str = NULL;
+  GstCaps *sinkcaps = NULL;
+  gint exit_code = EXIT_SUCCESS;
+
+  GOptionEntry options[] = {
+    {"list-features", 'l', 0, G_OPTION_ARG_NONE, &list_features,
+        "list all the available features", NULL},
+    {"compatible-with", '\0', 0, G_OPTION_ARG_STRING, &compatible_with,
+          "Only print the elements that could be queued after this feature name",
+        NULL},
+    {"element-properties", '\0', 0, G_OPTION_ARG_STRING, &element,
+        "The element to list properties on", NULL},
+    {"klass", '\0', 0, G_OPTION_ARG_STRING, &klass,
+        "Only print the elements belonging to that klass", NULL},
+    {"sinkcaps", '\0', 0, G_OPTION_ARG_STRING, &caps_str,
+        "Only print the elements that can sink these caps", NULL},
+    {NULL}
+  };
+
+  GOptionContext *ctx;
+  GError *err = NULL;
+
+  ctx = g_option_context_new ("PIPELINE-DESCRIPTION");
+  g_option_context_add_main_entries (ctx, options, NULL);
+  g_option_context_add_group (ctx, gst_init_get_option_group ());
+  if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
+    if (err)
+      g_printerr ("Error initializing: %s\n", GST_STR_NULL (err->message));
+    else
+      g_printerr ("Error initializing: Unknown error!\n");
+    exit (1);
+  }
+  g_option_context_free (ctx);
+
+  if (caps_str) {
+    sinkcaps = gst_caps_from_string (caps_str);
+    if (!sinkcaps) {
+      exit_code = EXIT_FAILURE;
+      goto done;
+    }
+  }
+
+  if (compatible_with || klass || sinkcaps) {
+    _list_features (compatible_with, klass, sinkcaps);
+    goto done;
+  }
+
+  if (element) {
+    _list_element_properties (element);
+    goto done;
+  }
+
+  if (list_features) {
+    _list_features (NULL, NULL, NULL);
+    goto done;
+  }
+
+done:
+  if (sinkcaps)
+    gst_caps_unref (sinkcaps);
+  exit (exit_code);
+}
diff --git a/libs/gst/helpers/gst-ptp-helper.c b/libs/gst/helpers/gst-ptp-helper.c
new file mode 100644
index 0000000..6c753df
--- /dev/null
+++ b/libs/gst/helpers/gst-ptp-helper.c
@@ -0,0 +1,672 @@
+/* GStreamer
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* Helper process that runs setuid root or with appropriate privileges to
+ * listen on ports < 1024, do multicast operations and get MAC addresses of
+ * interfaces. Privileges are dropped after these operations are done.
+ *
+ * It listens on the PTP multicast group on port 319 and 320 and forwards
+ * everything received there to stdout, while forwarding everything received
+ * on stdout to those sockets.
+ * Additionally it provides the MAC address of a network interface via stdout
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <netinet/in.h>
+#include <string.h>
+
+#ifdef HAVE_GETIFADDRS_AF_LINK
+#include <ifaddrs.h>
+#include <net/if_dl.h>
+#endif
+
+#ifdef HAVE_PTP_HELPER_SETUID
+#include <grp.h>
+#include <pwd.h>
+#endif
+
+#ifdef HAVE_PTP_HELPER_CAPABILITIES
+#include <sys/capability.h>
+#endif
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#include <gst/gst.h>
+#include <gst/net/gstptp_private.h>
+
+#define PTP_MULTICAST_GROUP "224.0.1.129"
+#define PTP_EVENT_PORT   319
+#define PTP_GENERAL_PORT 320
+
+static gchar **ifaces = NULL;
+static gboolean verbose = FALSE;
+static guint64 clock_id = (guint64) - 1;
+static guint8 clock_id_array[8];
+
+static GOptionEntry opt_entries[] = {
+  {"interface", 'i', 0, G_OPTION_ARG_STRING_ARRAY, &ifaces,
+      "Interface to listen on", NULL},
+  {"clock-id", 'c', 0, G_OPTION_ARG_INT64, &clock_id,
+      "PTP clock id", NULL},
+  {"verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
+      "Be verbose", NULL},
+  {NULL}
+};
+
+static GSocketAddress *event_saddr, *general_saddr;
+static GSocket *socket_event, *socket_general;
+static GIOChannel *stdin_channel, *stdout_channel;
+
+static gboolean
+have_socket_data_cb (GSocket * socket, GIOCondition condition,
+    gpointer user_data)
+{
+  gchar buffer[8192];
+  gssize read;
+  gsize written;
+  GError *err = NULL;
+  GIOStatus status;
+  StdIOHeader header = { 0, };
+
+  read = g_socket_receive (socket, buffer, sizeof (buffer), NULL, &err);
+  if (read == -1)
+    g_error ("Failed to read from socket: %s", err->message);
+
+  if (verbose)
+    g_message ("Received %" G_GSSIZE_FORMAT " bytes from %s socket", read,
+        (socket == socket_event ? "event" : "general"));
+
+  header.size = read;
+  header.type = (socket == socket_event) ? TYPE_EVENT : TYPE_GENERAL;
+
+  status =
+      g_io_channel_write_chars (stdout_channel, (gchar *) & header,
+      sizeof (header), &written, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_error ("Failed to write to stdout: %s", err->message);
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdout");
+    exit (0);
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_error ("Unexpected stdout write status: %d", status);
+  } else if (written != sizeof (header)) {
+    g_error ("Unexpected write size: %" G_GSIZE_FORMAT, written);
+  }
+
+  status =
+      g_io_channel_write_chars (stdout_channel, buffer, read, &written, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_error ("Failed to write to stdout: %s", err->message);
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdout");
+    exit (0);
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_error ("Unexpected stdout write status: %d", status);
+  } else if (written != read) {
+    g_error ("Unexpected write size: %" G_GSIZE_FORMAT, written);
+  }
+
+  return G_SOURCE_CONTINUE;
+}
+
+static gboolean
+have_stdin_data_cb (GIOChannel * channel, GIOCondition condition,
+    gpointer user_data)
+{
+  GIOStatus status;
+  StdIOHeader header = { 0, };
+  gchar buffer[8192];
+  GError *err = NULL;
+  gsize read;
+  gssize written;
+
+  if ((condition & G_IO_STATUS_EOF)) {
+    g_message ("EOF on stdin");
+    exit (0);
+  }
+
+  status =
+      g_io_channel_read_chars (channel, (gchar *) & header, sizeof (header),
+      &read, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_error ("Failed to read from stdin: %s", err->message);
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdin");
+    exit (0);
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_error ("Unexpected stdin read status: %d", status);
+  } else if (read != sizeof (header)) {
+    g_error ("Unexpected read size: %" G_GSIZE_FORMAT, read);
+  } else if (header.size > 8192) {
+    g_error ("Unexpected size: %u", header.size);
+  }
+
+  status = g_io_channel_read_chars (channel, buffer, header.size, &read, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_error ("Failed to read from stdin: %s", err->message);
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdin");
+    exit (0);
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_error ("Unexpected stdin read status: %d", status);
+  } else if (read != header.size) {
+    g_error ("Unexpected read size: %" G_GSIZE_FORMAT, read);
+  }
+
+  switch (header.type) {
+    case TYPE_EVENT:
+    case TYPE_GENERAL:
+      written =
+          g_socket_send_to (header.type ==
+          TYPE_EVENT ? socket_event : socket_general,
+          (header.type == TYPE_EVENT ? event_saddr : general_saddr), buffer,
+          header.size, NULL, &err);
+      if (written == -1)
+        g_error ("Failed to write to socket: %s", err->message);
+      else if (written != header.size)
+        g_error ("Unexpected write size: %" G_GSSIZE_FORMAT, written);
+
+      if (verbose)
+        g_message ("Sent %" G_GSSIZE_FORMAT " bytes to %s socket", read,
+            (header.type == TYPE_EVENT ? "event" : "general"));
+      break;
+    default:
+      break;
+  }
+
+  return G_SOURCE_CONTINUE;
+}
+
+static void
+setup_sockets (void)
+{
+  GInetAddress *bind_addr, *mcast_addr;
+  GSocketAddress *bind_saddr;
+  GSource *socket_event_source, *socket_general_source;
+  gchar **probed_ifaces = NULL;
+  GError *err = NULL;
+
+  /* Create sockets */
+  socket_event =
+      g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM,
+      G_SOCKET_PROTOCOL_UDP, &err);
+  if (!socket_event)
+    g_error ("Couldn't create event socket: %s", err->message);
+
+  socket_general =
+      g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM,
+      G_SOCKET_PROTOCOL_UDP, &err);
+  if (!socket_general)
+    g_error ("Couldn't create general socket: %s", err->message);
+
+  /* Bind sockets */
+  bind_addr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4);
+  bind_saddr = g_inet_socket_address_new (bind_addr, PTP_EVENT_PORT);
+  if (!g_socket_bind (socket_event, bind_saddr, TRUE, &err))
+    g_error ("Couldn't bind event socket: %s", err->message);
+  g_object_unref (bind_saddr);
+  bind_saddr = g_inet_socket_address_new (bind_addr, PTP_GENERAL_PORT);
+  if (!g_socket_bind (socket_general, bind_saddr, TRUE, &err))
+    g_error ("Couldn't bind general socket: %s", err->message);
+  g_object_unref (bind_saddr);
+  g_object_unref (bind_addr);
+
+  /* Probe all non-loopback interfaces */
+  if (!ifaces) {
+#if defined(HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR)
+    struct ifreq ifr;
+    struct ifconf ifc;
+    gchar buf[8192];
+
+    ifc.ifc_len = sizeof (buf);
+    ifc.ifc_buf = buf;
+    if (ioctl (g_socket_get_fd (socket_event), SIOCGIFCONF, &ifc) != -1) {
+      guint i, idx = 0;
+
+      probed_ifaces = g_new0 (gchar *, ifc.ifc_len + 1);
+
+      for (i = 0; i < ifc.ifc_len / sizeof (struct ifreq); i++) {
+        strncpy (ifr.ifr_name, ifc.ifc_req[i].ifr_name, IFNAMSIZ);
+        if (ioctl (g_socket_get_fd (socket_event), SIOCGIFFLAGS, &ifr) == 0) {
+          if ((ifr.ifr_flags & IFF_LOOPBACK))
+            continue;
+          probed_ifaces[idx] = g_strndup (ifc.ifc_req[i].ifr_name, IFNAMSIZ);
+          idx++;
+        } else {
+          g_warning ("can't get flags of interface '%s'",
+              ifc.ifc_req[i].ifr_name);
+          probed_ifaces[idx] = g_strndup (ifc.ifc_req[i].ifr_name, IFNAMSIZ);
+          idx++;
+        }
+        if (idx != 0)
+          ifaces = probed_ifaces;
+      }
+    }
+#elif defined(HAVE_GETIFADDRS_AF_LINK)
+    struct ifaddrs *ifaddr, *ifa;
+
+    if (getifaddrs (&ifaddr) != -1) {
+      GPtrArray *arr;
+
+      arr = g_ptr_array_new ();
+
+      for (ifa = ifaddr; ifa; ifa = ifa->ifa_next) {
+        if ((ifa->ifa_flags & IFF_LOOPBACK))
+          continue;
+
+        if (!ifa->ifa_addr || ifa->ifa_addr->sa_family != AF_LINK)
+          continue;
+
+        g_ptr_array_add (arr, g_strdup (ifa->ifa_name));
+      }
+      freeifaddrs (ifaddr);
+
+      g_ptr_array_add (arr, NULL);
+      ifaces = probed_ifaces = (gchar **) g_ptr_array_free (arr, FALSE);
+    }
+#else
+#warning "Implement something to list all network interfaces"
+#endif
+  }
+
+  /* Get a clock id from the MAC address if none was given */
+  if (clock_id == (guint64) - 1) {
+    gboolean success = FALSE;
+
+#if defined(HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR)
+    struct ifreq ifr;
+
+    if (ifaces) {
+      gchar **ptr = ifaces;
+
+      while (*ptr) {
+        strncpy (ifr.ifr_name, *ptr, IFNAMSIZ);
+        if (ioctl (g_socket_get_fd (socket_event), SIOCGIFHWADDR, &ifr) == 0) {
+          clock_id_array[0] = ifr.ifr_hwaddr.sa_data[0];
+          clock_id_array[1] = ifr.ifr_hwaddr.sa_data[1];
+          clock_id_array[2] = ifr.ifr_hwaddr.sa_data[2];
+          clock_id_array[3] = 0xff;
+          clock_id_array[4] = 0xfe;
+          clock_id_array[5] = ifr.ifr_hwaddr.sa_data[3];
+          clock_id_array[6] = ifr.ifr_hwaddr.sa_data[4];
+          clock_id_array[7] = ifr.ifr_hwaddr.sa_data[5];
+          success = TRUE;
+          break;
+        }
+      }
+
+      ptr++;
+    } else {
+      struct ifconf ifc;
+      gchar buf[8192];
+
+      ifc.ifc_len = sizeof (buf);
+      ifc.ifc_buf = buf;
+      if (ioctl (g_socket_get_fd (socket_event), SIOCGIFCONF, &ifc) != -1) {
+        guint i;
+
+        for (i = 0; i < ifc.ifc_len / sizeof (struct ifreq); i++) {
+          strncpy (ifr.ifr_name, ifc.ifc_req[i].ifr_name, IFNAMSIZ);
+          if (ioctl (g_socket_get_fd (socket_event), SIOCGIFFLAGS, &ifr) == 0) {
+            if ((ifr.ifr_flags & IFF_LOOPBACK))
+              continue;
+
+            if (ioctl (g_socket_get_fd (socket_event), SIOCGIFHWADDR,
+                    &ifr) == 0) {
+              clock_id_array[0] = ifr.ifr_hwaddr.sa_data[0];
+              clock_id_array[1] = ifr.ifr_hwaddr.sa_data[1];
+              clock_id_array[2] = ifr.ifr_hwaddr.sa_data[2];
+              clock_id_array[3] = 0xff;
+              clock_id_array[4] = 0xfe;
+              clock_id_array[5] = ifr.ifr_hwaddr.sa_data[3];
+              clock_id_array[6] = ifr.ifr_hwaddr.sa_data[4];
+              clock_id_array[7] = ifr.ifr_hwaddr.sa_data[5];
+              success = TRUE;
+              break;
+            }
+          } else {
+            g_warning ("can't get flags of interface '%s'",
+                ifc.ifc_req[i].ifr_name);
+          }
+        }
+      }
+    }
+#elif defined(HAVE_GETIFADDRS_AF_LINK)
+    struct ifaddrs *ifaddr, *ifa;
+
+    if (getifaddrs (&ifaddr) != -1) {
+      for (ifa = ifaddr; ifa; ifa = ifa->ifa_next) {
+        struct sockaddr_dl *sdl = (struct sockaddr_dl *) ifa->ifa_addr;
+        guint8 mac_addr[6];
+
+        if ((ifa->ifa_flags & IFF_LOOPBACK))
+          continue;
+
+        if (!ifa->ifa_addr || ifa->ifa_addr->sa_family != AF_LINK)
+          continue;
+
+        if (ifaces) {
+          gchar **p = ifaces;
+          gboolean found = FALSE;
+
+          while (*p) {
+            if (strcmp (*p, ifa->ifa_name) == 0) {
+              found = TRUE;
+              break;
+            }
+            p++;
+          }
+
+          if (!found)
+            continue;
+        }
+
+        if (sdl->sdl_alen != 6)
+          continue;
+
+        memcpy (mac_addr, LLADDR (sdl), sdl->sdl_alen);
+
+        clock_id_array[0] = mac_addr[0];
+        clock_id_array[1] = mac_addr[1];
+        clock_id_array[2] = mac_addr[2];
+        clock_id_array[3] = 0xff;
+        clock_id_array[4] = 0xfe;
+        clock_id_array[5] = mac_addr[3];
+        clock_id_array[6] = mac_addr[4];
+        clock_id_array[7] = mac_addr[5];
+        success = TRUE;
+        break;
+      }
+
+      freeifaddrs (ifaddr);
+    }
+#else
+#warning "Implement something to get MAC addresses of network interfaces"
+#endif
+
+    if (!success) {
+      g_warning ("can't get any MAC address, using random clock id");
+      clock_id = (((guint64) g_random_int ()) << 32) | (g_random_int ());
+      GST_WRITE_UINT64_BE (clock_id_array, clock_id);
+      clock_id_array[3] = 0xff;
+      clock_id_array[4] = 0xfe;
+    }
+  } else {
+    GST_WRITE_UINT64_BE (clock_id_array, clock_id);
+  }
+
+  /* Join multicast groups */
+  mcast_addr = g_inet_address_new_from_string (PTP_MULTICAST_GROUP);
+  if (ifaces) {
+    gchar **ptr = ifaces;
+    gboolean success = FALSE;
+
+    while (*ptr) {
+      gint c = 0;
+      if (!g_socket_join_multicast_group (socket_event, mcast_addr, FALSE, *ptr,
+              &err)
+          && !g_error_matches (err, G_IO_ERROR, G_IO_ERROR_ADDRESS_IN_USE))
+        g_warning ("Couldn't join multicast group on interface '%s': %s", *ptr,
+            err->message);
+      else
+        c++;
+      g_clear_error (&err);
+
+      if (!g_socket_join_multicast_group (socket_general, mcast_addr, FALSE,
+              *ptr, &err)
+          && !g_error_matches (err, G_IO_ERROR, G_IO_ERROR_ADDRESS_IN_USE))
+        g_warning ("Couldn't join multicast group on interface '%s': %s", *ptr,
+            err->message);
+      else
+        c++;
+      g_clear_error (&err);
+
+      if (c == 2)
+        success = TRUE;
+      ptr++;
+    }
+
+    if (!success) {
+      /* Join multicast group without any interface */
+      if (!g_socket_join_multicast_group (socket_event, mcast_addr, FALSE, NULL,
+              &err))
+        g_error ("Couldn't join multicast group: %s", err->message);
+      if (!g_socket_join_multicast_group (socket_general, mcast_addr, FALSE,
+              NULL, &err))
+        g_error ("Couldn't join multicast group: %s", err->message);
+    }
+  } else {
+    /* Join multicast group without any interface */
+    if (!g_socket_join_multicast_group (socket_event, mcast_addr, FALSE, NULL,
+            &err))
+      g_error ("Couldn't join multicast group: %s", err->message);
+    if (!g_socket_join_multicast_group (socket_general, mcast_addr, FALSE, NULL,
+            &err))
+      g_error ("Couldn't join multicast group: %s", err->message);
+  }
+
+  event_saddr = g_inet_socket_address_new (mcast_addr, PTP_EVENT_PORT);
+  general_saddr = g_inet_socket_address_new (mcast_addr, PTP_GENERAL_PORT);
+
+  /* Create socket sources */
+  socket_event_source =
+      g_socket_create_source (socket_event, G_IO_IN | G_IO_PRI, NULL);
+  g_source_set_priority (socket_event_source, G_PRIORITY_HIGH);
+  g_source_set_callback (socket_event_source, (GSourceFunc) have_socket_data_cb,
+      NULL, NULL);
+  g_source_attach (socket_event_source, NULL);
+  socket_general_source =
+      g_socket_create_source (socket_general, G_IO_IN | G_IO_PRI, NULL);
+  g_source_set_priority (socket_general_source, G_PRIORITY_DEFAULT);
+  g_source_set_callback (socket_general_source,
+      (GSourceFunc) have_socket_data_cb, NULL, NULL);
+  g_source_attach (socket_general_source, NULL);
+
+  g_strfreev (probed_ifaces);
+}
+
+static void
+drop_privileges (void)
+{
+#ifdef HAVE_PTP_HELPER_SETUID
+  /* Switch to the given user/group */
+#ifdef HAVE_PTP_HELPER_SETUID_GROUP
+  {
+    struct group *grp;
+
+    grp = getgrnam (HAVE_PTP_HELPER_SETUID_GROUP);
+    if (!grp)
+      g_error ("Failed to get group information '%s': %s",
+          HAVE_PTP_HELPER_SETUID_GROUP, g_strerror (errno));
+
+    if (setgid (grp->gr_gid) != 0)
+      g_error ("Failed to change to group '%s': %s",
+          HAVE_PTP_HELPER_SETUID_GROUP, g_strerror (errno));
+  }
+#endif
+
+#ifdef HAVE_PTP_HELPER_SETUID_USER
+  {
+    struct passwd *pwd;
+
+    pwd = getpwnam (HAVE_PTP_HELPER_SETUID_USER);
+    if (!pwd)
+      g_error ("Failed to get user information '%s': %s",
+          HAVE_PTP_HELPER_SETUID_USER, g_strerror (errno));
+
+#ifndef HAVE_PTP_HELPER_SETUID_GROUP
+    if (setgid (pwd->pw_gid) != 0)
+      g_error ("Failed to change to user group '%s': %s",
+          HAVE_PTP_HELPER_SETUID_USER, g_strerror (errno));
+#endif
+
+    if (setuid (pwd->pw_uid) != 0)
+      g_error ("Failed to change to user '%s': %s", HAVE_PTP_HELPER_SETUID_USER,
+          g_strerror (errno));
+  }
+#endif
+#endif
+#ifdef HAVE_PTP_HELPER_CAPABILITIES
+  /* Drop all capabilities */
+  {
+    cap_t caps;
+
+    caps = cap_get_proc ();
+    if (caps == 0)
+      g_error ("Failed to get process caps: %s", g_strerror (errno));
+    if (cap_clear (caps) != 0)
+      g_error ("Failed to clear caps: %s", g_strerror (errno));
+    if (cap_set_proc (caps) != 0)
+      g_error ("Failed to set process caps: %s", g_strerror (errno));
+  }
+#endif
+}
+
+static void
+setup_stdio_channels (void)
+{
+  GSource *stdin_source;
+
+  /* Create stdin source */
+  stdin_channel = g_io_channel_unix_new (STDIN_FILENO);
+  if (g_io_channel_set_encoding (stdin_channel, NULL,
+          NULL) == G_IO_STATUS_ERROR)
+    g_error ("Failed to set stdin to binary encoding");
+  g_io_channel_set_buffered (stdin_channel, FALSE);
+  stdin_source =
+      g_io_create_watch (stdin_channel, G_IO_IN | G_IO_PRI | G_IO_HUP);
+  g_source_set_priority (stdin_source, G_PRIORITY_DEFAULT);
+  g_source_set_callback (stdin_source, (GSourceFunc) have_stdin_data_cb, NULL,
+      NULL);
+  g_source_attach (stdin_source, NULL);
+
+  /* Create stdout channel */
+  stdout_channel = g_io_channel_unix_new (STDOUT_FILENO);
+  if (g_io_channel_set_encoding (stdout_channel, NULL,
+          NULL) == G_IO_STATUS_ERROR)
+    g_error ("Failed to set stdout to binary encoding");
+  g_io_channel_set_buffered (stdout_channel, FALSE);
+}
+
+static void
+write_clock_id (void)
+{
+  GError *err = NULL;
+  GIOStatus status;
+  StdIOHeader header = { 0, };
+  gsize written;
+
+  /* Write clock id to stdout */
+
+  header.type = TYPE_CLOCK_ID;
+  header.size = 8;
+  status =
+      g_io_channel_write_chars (stdout_channel, (gchar *) & header,
+      sizeof (header), &written, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_error ("Failed to write to stdout: %s", err->message);
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdout");
+    exit (0);
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_error ("Unexpected stdout write status: %d", status);
+  } else if (written != sizeof (header)) {
+    g_error ("Unexpected write size: %" G_GSIZE_FORMAT, written);
+  }
+
+  status =
+      g_io_channel_write_chars (stdout_channel,
+      (const gchar *) clock_id_array, sizeof (clock_id_array), &written, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_error ("Failed to write to stdout: %s", err->message);
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdout");
+    exit (0);
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_error ("Unexpected stdout write status: %d", status);
+  } else if (written != sizeof (clock_id_array)) {
+    g_error ("Unexpected write size: %" G_GSIZE_FORMAT, written);
+  }
+}
+
+#ifdef __APPLE__
+static gint
+dummy_poll (GPollFD * fds, guint nfds, gint timeout)
+{
+  return g_poll (fds, nfds, timeout);
+}
+#endif
+
+gint
+main (gint argc, gchar ** argv)
+{
+  GOptionContext *opt_ctx;
+  GMainLoop *loop;
+  GError *err = NULL;
+
+  /* FIXME: Work around some side effects of the changes from
+   * https://bugzilla.gnome.org/show_bug.cgi?id=741054
+   *
+   * The modified poll function somehow calls setugid(), which
+   * then abort()s the application. Make sure that we use g_poll()
+   * here!
+   */
+#ifdef __APPLE__
+  {
+    GMainContext *context = g_main_context_default ();
+    g_main_context_set_poll_func (context, dummy_poll);
+  }
+#endif
+
+#ifdef HAVE_PTP_HELPER_SETUID
+  if (setuid (0) < 0)
+    g_error ("not running with superuser privileges");
+#endif
+
+  opt_ctx = g_option_context_new ("- GStreamer PTP helper process");
+  g_option_context_add_main_entries (opt_ctx, opt_entries, NULL);
+  if (!g_option_context_parse (opt_ctx, &argc, &argv, &err))
+    g_error ("Error parsing options: %s", err->message);
+  g_option_context_free (opt_ctx);
+
+  setup_sockets ();
+  drop_privileges ();
+  setup_stdio_channels ();
+  write_clock_id ();
+
+  /* Get running */
+  loop = g_main_loop_new (NULL, FALSE);
+  g_main_loop_run (loop);
+
+  /* We never exit cleanly, so don't do cleanup */
+  g_assert_not_reached ();
+
+  return 0;
+}
diff --git a/libs/gst/net/Makefile.am b/libs/gst/net/Makefile.am
index f022b92..3daf640 100644
--- a/libs/gst/net/Makefile.am
+++ b/libs/gst/net/Makefile.am
@@ -6,19 +6,39 @@
     gstnet.h \
     gstnetaddressmeta.h \
     gstnetclientclock.h \
+    gstnetcontrolmessagemeta.h \
     gstnettimepacket.h \
-    gstnettimeprovider.h
+    gstnettimeprovider.h \
+    gstptpclock.h
 
 libgstnet_@GST_API_VERSION@_la_SOURCES = \
     gstnetaddressmeta.c \
     gstnetclientclock.c \
+    gstnetcontrolmessagemeta.c \
     gstnettimepacket.c \
-    gstnettimeprovider.c
+    gstnettimeprovider.c \
+    gstptpclock.c \
+    gstntppacket.c
+
+noinst_HEADERS = gstptp_private.h gstntppacket.h
 
 libgstnet_@GST_API_VERSION@_la_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
-libgstnet_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(GIO_LIBS)
+libgstnet_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(GIO_LIBS) \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la
 libgstnet_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
 
+# try to prevent packaging errors
+check-libexecdir-consistency:
+	@if test "${GST_PTP_HELPER_INSTALLED}" != "${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-ptp-helper"; then \
+	  echo "*** Inconsistent libexecdir! Please use ./configure --libexecdir=/foo/bar"; \
+	  echo "*** to set the libexecdir and not make libexecdir=/foo/bar or the like."; \
+	  echo "*** The same goes for prefix, libdir etc."; \
+	  echo "*** ${GST_PTP_HELPER_INSTALLED} != ${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-ptp-helper"; \
+	  exit 1; \
+	fi
+
+all-local: check-libexecdir-consistency
+
 CLEANFILES = *.gcno *.gcda *.gcov
 
 %.c.gcov: .libs/libgstnet_@GST_API_VERSION@_la-%.gcda %.c
@@ -26,18 +46,6 @@
 
 gcov: $(libgstnet_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstnet-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstnet_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(libgstnet_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstnet_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstnet_@GST_API_VERSION@_la_LIBADD) \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst/net \
-	 -:HEADERS $(libgstnet_@GST_API_VERSION@_include_HEADERS) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 
 if HAVE_INTROSPECTION
 BUILT_GIRSOURCES = GstNet-@GST_API_VERSION@.gir
@@ -47,7 +55,7 @@
 gir_cincludes=--c-include="gst/net/net.h"
 
 GstNet-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstnet-@GST_API_VERSION@.la
-	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 		$(INTROSPECTION_SCANNER) -v --namespace GstNet \
 		--strip-prefix=Gst \
@@ -67,7 +75,7 @@
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg gio-2.0 \
 		--pkg-export="gstreamer-net-@GST_API_VERSION@" \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		--output $@ \
 		$(gir_headers) \
 		$(gir_sources)
diff --git a/libs/gst/net/Makefile.in b/libs/gst/net/Makefile.in
index abc967e..a5020bd 100644
--- a/libs/gst/net/Makefile.in
+++ b/libs/gst/net/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,9 +93,6 @@
 target_triplet = @target@
 @HAVE_INTROSPECTION_TRUE@am__append_1 = $(BUILT_GIRSOURCES) $(typelibs_DATA)
 subdir = libs/gst/net
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp \
-	$(libgstnet_@GST_API_VERSION@_include_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -94,6 +101,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -111,7 +119,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -124,6 +132,9 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstnet_@GST_API_VERSION@_include_HEADERS) \
+	$(noinst_HEADERS) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -161,12 +172,16 @@
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstnet_@GST_API_VERSION@_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la
 am_libgstnet_@GST_API_VERSION@_la_OBJECTS =  \
 	libgstnet_@GST_API_VERSION@_la-gstnetaddressmeta.lo \
 	libgstnet_@GST_API_VERSION@_la-gstnetclientclock.lo \
+	libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.lo \
 	libgstnet_@GST_API_VERSION@_la-gstnettimepacket.lo \
-	libgstnet_@GST_API_VERSION@_la-gstnettimeprovider.lo
+	libgstnet_@GST_API_VERSION@_la-gstnettimeprovider.lo \
+	libgstnet_@GST_API_VERSION@_la-gstptpclock.lo \
+	libgstnet_@GST_API_VERSION@_la-gstntppacket.lo
 libgstnet_@GST_API_VERSION@_la_OBJECTS =  \
 	$(am_libgstnet_@GST_API_VERSION@_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -219,8 +234,28 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 DATA = $(gir_DATA) $(typelibs_DATA)
-HEADERS = $(libgstnet_@GST_API_VERSION@_include_HEADERS)
+HEADERS = $(libgstnet_@GST_API_VERSION@_include_HEADERS) \
+	$(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -232,7 +267,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -323,6 +363,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -334,9 +375,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -358,6 +401,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -419,8 +463,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -486,6 +532,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -505,17 +552,25 @@
     gstnet.h \
     gstnetaddressmeta.h \
     gstnetclientclock.h \
+    gstnetcontrolmessagemeta.h \
     gstnettimepacket.h \
-    gstnettimeprovider.h
+    gstnettimeprovider.h \
+    gstptpclock.h
 
 libgstnet_@GST_API_VERSION@_la_SOURCES = \
     gstnetaddressmeta.c \
     gstnetclientclock.c \
+    gstnetcontrolmessagemeta.c \
     gstnettimepacket.c \
-    gstnettimeprovider.c
+    gstnettimeprovider.c \
+    gstptpclock.c \
+    gstntppacket.c
 
+noinst_HEADERS = gstptp_private.h gstntppacket.h
 libgstnet_@GST_API_VERSION@_la_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
-libgstnet_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(GIO_LIBS)
+libgstnet_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(GIO_LIBS) \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la
+
 libgstnet_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
 CLEANFILES = *.gcno *.gcda *.gcov $(am__append_1)
 @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstNet-@GST_API_VERSION@.gir
@@ -545,7 +600,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/gst/net/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu libs/gst/net/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -610,8 +664,11 @@
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnetaddressmeta.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnetclientclock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnettimepacket.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnettimeprovider.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstntppacket.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstptpclock.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -651,6 +708,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstnet_@GST_API_VERSION@_la-gstnetclientclock.lo `test -f 'gstnetclientclock.c' || echo '$(srcdir)/'`gstnetclientclock.c
 
+libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.lo: gstnetcontrolmessagemeta.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.lo -MD -MP -MF $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.Tpo -c -o libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.lo `test -f 'gstnetcontrolmessagemeta.c' || echo '$(srcdir)/'`gstnetcontrolmessagemeta.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.Tpo $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstnetcontrolmessagemeta.c' object='libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstnet_@GST_API_VERSION@_la-gstnetcontrolmessagemeta.lo `test -f 'gstnetcontrolmessagemeta.c' || echo '$(srcdir)/'`gstnetcontrolmessagemeta.c
+
 libgstnet_@GST_API_VERSION@_la-gstnettimepacket.lo: gstnettimepacket.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstnet_@GST_API_VERSION@_la-gstnettimepacket.lo -MD -MP -MF $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnettimepacket.Tpo -c -o libgstnet_@GST_API_VERSION@_la-gstnettimepacket.lo `test -f 'gstnettimepacket.c' || echo '$(srcdir)/'`gstnettimepacket.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnettimepacket.Tpo $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstnettimepacket.Plo
@@ -665,6 +729,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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstnet_@GST_API_VERSION@_la-gstnettimeprovider.lo `test -f 'gstnettimeprovider.c' || echo '$(srcdir)/'`gstnettimeprovider.c
 
+libgstnet_@GST_API_VERSION@_la-gstptpclock.lo: gstptpclock.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstnet_@GST_API_VERSION@_la-gstptpclock.lo -MD -MP -MF $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstptpclock.Tpo -c -o libgstnet_@GST_API_VERSION@_la-gstptpclock.lo `test -f 'gstptpclock.c' || echo '$(srcdir)/'`gstptpclock.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstptpclock.Tpo $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstptpclock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstptpclock.c' object='libgstnet_@GST_API_VERSION@_la-gstptpclock.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstnet_@GST_API_VERSION@_la-gstptpclock.lo `test -f 'gstptpclock.c' || echo '$(srcdir)/'`gstptpclock.c
+
+libgstnet_@GST_API_VERSION@_la-gstntppacket.lo: gstntppacket.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstnet_@GST_API_VERSION@_la-gstntppacket.lo -MD -MP -MF $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstntppacket.Tpo -c -o libgstnet_@GST_API_VERSION@_la-gstntppacket.lo `test -f 'gstntppacket.c' || echo '$(srcdir)/'`gstntppacket.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstntppacket.Tpo $(DEPDIR)/libgstnet_@GST_API_VERSION@_la-gstntppacket.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstntppacket.c' object='libgstnet_@GST_API_VERSION@_la-gstntppacket.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) $(libgstnet_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstnet_@GST_API_VERSION@_la-gstntppacket.lo `test -f 'gstntppacket.c' || echo '$(srcdir)/'`gstntppacket.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -733,12 +811,58 @@
 	@list='$(libgstnet_@GST_API_VERSION@_include_HEADERS)'; test -n "$(libgstnet_@GST_API_VERSION@_includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(libgstnet_@GST_API_VERSION@_includedir)'; $(am__uninstall_files_from_dir)
-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'`; \
@@ -772,7 +896,7 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) all-local
 installdirs:
 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libgstnet_@GST_API_VERSION@_includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
@@ -816,7 +940,8 @@
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
 
 dvi: dvi-am
 
@@ -884,45 +1009,47 @@
 
 .MAKE: install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \
-	distclean distclean-compile distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-girDATA \
-	install-html install-html-am install-info install-info-am \
-	install-libLTLIBRARIES \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-girDATA install-html install-html-am \
+	install-info install-info-am install-libLTLIBRARIES \
 	install-libgstnet_@GST_API_VERSION@_includeHEADERS install-man \
 	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip install-typelibsDATA installcheck \
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am uninstall-girDATA \
+	tags tags-am uninstall uninstall-am uninstall-girDATA \
 	uninstall-libLTLIBRARIES \
 	uninstall-libgstnet_@GST_API_VERSION@_includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
+
+
+# try to prevent packaging errors
+check-libexecdir-consistency:
+	@if test "${GST_PTP_HELPER_INSTALLED}" != "${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-ptp-helper"; then \
+	  echo "*** Inconsistent libexecdir! Please use ./configure --libexecdir=/foo/bar"; \
+	  echo "*** to set the libexecdir and not make libexecdir=/foo/bar or the like."; \
+	  echo "*** The same goes for prefix, libdir etc."; \
+	  echo "*** ${GST_PTP_HELPER_INSTALLED} != ${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-ptp-helper"; \
+	  exit 1; \
+	fi
+
+all-local: check-libexecdir-consistency
 
 %.c.gcov: .libs/libgstnet_@GST_API_VERSION@_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
 
 gcov: $(libgstnet_@GST_API_VERSION@_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstnet-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstnet_@GST_API_VERSION@_la_SOURCES) \
-	 -:CFLAGS $(libgstnet_@GST_API_VERSION@_la_CFLAGS) \
-	 -:LDFLAGS $(libgstnet_@GST_API_VERSION@_la_LDFLAGS) \
-	           $(libgstnet_@GST_API_VERSION@_la_LIBADD) \
-	 -:HEADER_TARGET gstreamer-@GST_API_VERSION@/gst/net \
-	 -:HEADERS $(libgstnet_@GST_API_VERSION@_include_HEADERS) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 @HAVE_INTROSPECTION_TRUE@GstNet-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstnet-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
 @HAVE_INTROSPECTION_TRUE@		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_SCANNER) -v --namespace GstNet \
 @HAVE_INTROSPECTION_TRUE@		--strip-prefix=Gst \
@@ -942,7 +1069,7 @@
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg gio-2.0 \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export="gstreamer-net-@GST_API_VERSION@" \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
 @HAVE_INTROSPECTION_TRUE@		$(gir_sources)
diff --git a/libs/gst/net/gstnetaddressmeta.c b/libs/gst/net/gstnetaddressmeta.c
index 2c413e2..c4cdd4d 100644
--- a/libs/gst/net/gstnetaddressmeta.c
+++ b/libs/gst/net/gstnetaddressmeta.c
@@ -21,9 +21,9 @@
  * SECTION:gstnetaddressmeta
  * @short_description: Network address metadata
  *
- * #GstNetAddress can be used to store a network address. #GstNetAddressMeta can
- * be used to store a network address in a #GstBuffer so that it network
- * elements can track the to and from address of the buffer.
+ * #GstNetAddressMeta can be used to store a network address (a #GSocketAddress)
+ * in a #GstBuffer so that it network elements can track the to and from address
+ * of the buffer.
  */
 
 #include <string.h>
@@ -44,10 +44,13 @@
 net_address_meta_transform (GstBuffer * transbuf, GstMeta * meta,
     GstBuffer * buffer, GQuark type, gpointer data)
 {
-  GstNetAddressMeta *nmeta = (GstNetAddressMeta *) meta;
+  GstNetAddressMeta *smeta, *dmeta;
+  smeta = (GstNetAddressMeta *) meta;
 
   /* we always copy no matter what transform */
-  gst_buffer_add_net_address_meta (transbuf, nmeta->addr);
+  dmeta = gst_buffer_add_net_address_meta (transbuf, smeta->addr);
+  if (!dmeta)
+    return FALSE;
 
   return TRUE;
 }
diff --git a/libs/gst/net/gstnetclientclock.c b/libs/gst/net/gstnetclientclock.c
index dd1dafe..fe5b456 100644
--- a/libs/gst/net/gstnetclientclock.c
+++ b/libs/gst/net/gstnetclientclock.c
@@ -3,6 +3,7 @@
  *                    2005 Wim Taymans <wim@fluendo.com>
  *                    2005 Andy Wingo <wingo@pobox.com>
  * Copyright (C) 2012 Collabora Ltd. <tim.muller@collabora.co.uk>
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
  *
  * gstnetclientclock.h: clock that synchronizes itself to a time provider over
  * the network
@@ -28,12 +29,13 @@
  *                     provider.
  * @see_also: #GstClock, #GstNetTimeProvider, #GstPipeline
  *
- * This object implements a custom #GstClock that synchronizes its time
- * to a remote time provider such as #GstNetTimeProvider.
+ * #GstNetClientClock implements a custom #GstClock that synchronizes its time
+ * to a remote time provider such as #GstNetTimeProvider. #GstNtpClock
+ * implements a #GstClock that synchronizes its time to a remote NTPv4 server.
  *
- * A new clock is created with gst_net_client_clock_new() which takes the
- * address and port of the remote time provider along with a name and
- * an initial time.
+ * A new clock is created with gst_net_client_clock_new() or
+ * gst_ntp_clock_new(), which takes the address and port of the remote time
+ * provider along with a name and an initial time.
  *
  * This clock will poll the time provider and will update its calibration
  * parameters based on the local and remote observations.
@@ -43,8 +45,12 @@
  * Various parameters of the clock can be configured with the parent #GstClock
  * "timeout", "window-size" and "window-threshold" object properties.
  *
- * A #GstNetClientClock is typically set on a #GstPipeline with 
+ * A #GstNetClientClock and #GstNtpClock is typically set on a #GstPipeline with
  * gst_pipeline_use_clock().
+ *
+ * If you set a #GstBus on the clock via the "bus" object property, it will
+ * send @GST_MESSAGE_ELEMENT messages with an attached #GstStructure containing
+ * statistics about clock accuracy and network traffic.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -52,10 +58,13 @@
 #endif
 
 #include "gstnettimepacket.h"
+#include "gstntppacket.h"
 #include "gstnetclientclock.h"
 
 #include <gio/gio.h>
 
+#include <string.h>
+
 GST_DEBUG_CATEGORY_STATIC (ncc_debug);
 #define GST_CAT_DEFAULT (ncc_debug)
 
@@ -63,13 +72,26 @@
 #define DEFAULT_PORT            5637
 #define DEFAULT_TIMEOUT         GST_SECOND
 #define DEFAULT_ROUNDTRIP_LIMIT GST_SECOND
+/* Minimum timeout will be immediately (ie, as fast as one RTT), but no
+ * more often than 1/20th second (arbitrarily, to spread observations a little) */
+#define DEFAULT_MINIMUM_UPDATE_INTERVAL (GST_SECOND / 20)
+#define DEFAULT_BASE_TIME       0
+
+/* Maximum number of clock updates we can skip before updating */
+#define MAX_SKIPPED_UPDATES 5
+
+#define MEDIAN_PRE_FILTERING_WINDOW 9
 
 enum
 {
   PROP_0,
   PROP_ADDRESS,
   PROP_PORT,
-  PROP_ROUNDTRIP_LIMIT
+  PROP_ROUNDTRIP_LIMIT,
+  PROP_MINIMUM_UPDATE_INTERVAL,
+  PROP_BUS,
+  PROP_BASE_TIME,
+  PROP_INTERNAL_CLOCK
 };
 
 #define GST_NET_CLIENT_CLOCK_GET_PRIVATE(obj)  \
@@ -77,18 +99,32 @@
 
 struct _GstNetClientClockPrivate
 {
+  GstClock *internal_clock;
+
   GThread *thread;
 
   GSocket *socket;
   GSocketAddress *servaddr;
   GCancellable *cancel;
+  gboolean made_cancel_fd;
 
   GstClockTime timeout_expiration;
   GstClockTime roundtrip_limit;
   GstClockTime rtt_avg;
+  GstClockTime minimum_update_interval;
+  GstClockTime last_remote_poll_interval;
+  guint skipped_updates;
+  GstClockTime last_rtts[MEDIAN_PRE_FILTERING_WINDOW];
+  gint last_rtts_missing;
+
+  GstClockTime base_time;
 
   gchar *address;
   gint port;
+
+  GstBus *bus;
+
+  gboolean is_ntp;
 };
 
 #define _do_init \
@@ -102,30 +138,43 @@
     const GValue * value, GParamSpec * pspec);
 static void gst_net_client_clock_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
+static void gst_net_client_clock_constructed (GObject * object);
 
+static gboolean gst_net_client_clock_start (GstNetClientClock * self);
 static void gst_net_client_clock_stop (GstNetClientClock * self);
 
+static GstClockTime gst_net_client_clock_get_internal_time (GstClock * clock);
+
 static void
 gst_net_client_clock_class_init (GstNetClientClockClass * klass)
 {
   GObjectClass *gobject_class;
+  GstClockClass *clock_class;
 
   gobject_class = G_OBJECT_CLASS (klass);
+  clock_class = GST_CLOCK_CLASS (klass);
 
   g_type_class_add_private (klass, sizeof (GstNetClientClockPrivate));
 
   gobject_class->finalize = gst_net_client_clock_finalize;
   gobject_class->get_property = gst_net_client_clock_get_property;
   gobject_class->set_property = gst_net_client_clock_set_property;
+  gobject_class->constructed = gst_net_client_clock_constructed;
 
   g_object_class_install_property (gobject_class, PROP_ADDRESS,
       g_param_spec_string ("address", "address",
           "The IP address of the machine providing a time server",
-          DEFAULT_ADDRESS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_ADDRESS,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_PORT,
       g_param_spec_int ("port", "port",
           "The port on which the remote server is listening", 0, G_MAXUINT16,
-          DEFAULT_PORT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_PORT,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_BUS,
+      g_param_spec_object ("bus", "bus",
+          "A GstBus on which to send clock status information", GST_TYPE_BUS,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
    * GstNetClientClock::round-trip-limit:
@@ -146,26 +195,54 @@
           "Maximum tolerable round-trip interval for packets, in nanoseconds "
           "(0 = no limit)", 0, G_MAXUINT64, DEFAULT_ROUNDTRIP_LIMIT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_MINIMUM_UPDATE_INTERVAL,
+      g_param_spec_uint64 ("minimum-update-interval", "minimum update interval",
+          "Minimum polling interval for packets, in nanoseconds"
+          "(0 = no limit)", 0, G_MAXUINT64, DEFAULT_MINIMUM_UPDATE_INTERVAL,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_BASE_TIME,
+      g_param_spec_uint64 ("base-time", "Base Time",
+          "Initial time that is reported before synchronization", 0,
+          G_MAXUINT64, DEFAULT_BASE_TIME,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_INTERNAL_CLOCK,
+      g_param_spec_object ("internal-clock", "Internal Clock",
+          "Internal clock that directly slaved to the remote clock",
+          GST_TYPE_CLOCK, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+  clock_class->get_internal_time = gst_net_client_clock_get_internal_time;
 }
 
 static void
 gst_net_client_clock_init (GstNetClientClock * self)
 {
-  GstClock *clock = GST_CLOCK_CAST (self);
   GstNetClientClockPrivate *priv;
 
   self->priv = priv = GST_NET_CLIENT_CLOCK_GET_PRIVATE (self);
 
+  GST_OBJECT_FLAG_SET (self, GST_CLOCK_FLAG_CAN_SET_MASTER);
+  GST_OBJECT_FLAG_SET (self, GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC);
+
+  priv->internal_clock = g_object_new (GST_TYPE_SYSTEM_CLOCK, NULL);
+
   priv->port = DEFAULT_PORT;
   priv->address = g_strdup (DEFAULT_ADDRESS);
 
-  gst_clock_set_timeout (clock, DEFAULT_TIMEOUT);
+  gst_clock_set_timeout (priv->internal_clock, DEFAULT_TIMEOUT);
 
   priv->thread = NULL;
 
   priv->servaddr = NULL;
   priv->rtt_avg = GST_CLOCK_TIME_NONE;
   priv->roundtrip_limit = DEFAULT_ROUNDTRIP_LIMIT;
+  priv->minimum_update_interval = DEFAULT_MINIMUM_UPDATE_INTERVAL;
+  priv->last_remote_poll_interval = GST_CLOCK_TIME_NONE;
+  priv->skipped_updates = 0;
+  priv->last_rtts_missing = MEDIAN_PRE_FILTERING_WINDOW;
+  priv->base_time = DEFAULT_BASE_TIME;
 }
 
 static void
@@ -191,6 +268,16 @@
     self->priv->socket = NULL;
   }
 
+  if (self->priv->bus != NULL) {
+    gst_object_unref (self->priv->bus);
+    self->priv->bus = NULL;
+  }
+
+  if (self->priv->internal_clock != NULL) {
+    gst_object_unref (self->priv->internal_clock);
+    self->priv->internal_clock = NULL;
+  }
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -202,16 +289,37 @@
 
   switch (prop_id) {
     case PROP_ADDRESS:
+      GST_OBJECT_LOCK (self);
       g_free (self->priv->address);
       self->priv->address = g_value_dup_string (value);
       if (self->priv->address == NULL)
         self->priv->address = g_strdup (DEFAULT_ADDRESS);
+      GST_OBJECT_UNLOCK (self);
       break;
     case PROP_PORT:
+      GST_OBJECT_LOCK (self);
       self->priv->port = g_value_get_int (value);
+      GST_OBJECT_UNLOCK (self);
       break;
     case PROP_ROUNDTRIP_LIMIT:
+      GST_OBJECT_LOCK (self);
       self->priv->roundtrip_limit = g_value_get_uint64 (value);
+      GST_OBJECT_UNLOCK (self);
+      break;
+    case PROP_MINIMUM_UPDATE_INTERVAL:
+      GST_OBJECT_LOCK (self);
+      self->priv->minimum_update_interval = g_value_get_uint64 (value);
+      GST_OBJECT_UNLOCK (self);
+      break;
+    case PROP_BUS:
+      GST_OBJECT_LOCK (self);
+      if (self->priv->bus)
+        gst_object_unref (self->priv->bus);
+      self->priv->bus = g_value_dup_object (value);
+      GST_OBJECT_UNLOCK (self);
+      break;
+    case PROP_BASE_TIME:
+      self->priv->base_time = g_value_get_uint64 (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -227,13 +335,33 @@
 
   switch (prop_id) {
     case PROP_ADDRESS:
+      GST_OBJECT_LOCK (self);
       g_value_set_string (value, self->priv->address);
+      GST_OBJECT_UNLOCK (self);
       break;
     case PROP_PORT:
       g_value_set_int (value, self->priv->port);
       break;
     case PROP_ROUNDTRIP_LIMIT:
+      GST_OBJECT_LOCK (self);
       g_value_set_uint64 (value, self->priv->roundtrip_limit);
+      GST_OBJECT_UNLOCK (self);
+      break;
+    case PROP_MINIMUM_UPDATE_INTERVAL:
+      GST_OBJECT_LOCK (self);
+      g_value_set_uint64 (value, self->priv->minimum_update_interval);
+      GST_OBJECT_UNLOCK (self);
+      break;
+    case PROP_BUS:
+      GST_OBJECT_LOCK (self);
+      g_value_set_object (value, self->priv->bus);
+      GST_OBJECT_UNLOCK (self);
+      break;
+    case PROP_BASE_TIME:
+      g_value_set_uint64 (value, self->priv->base_time);
+      break;
+    case PROP_INTERNAL_CLOCK:
+      g_value_set_object (value, self->priv->internal_clock);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -242,15 +370,101 @@
 }
 
 static void
+gst_net_client_clock_constructed (GObject * object)
+{
+  GstNetClientClock *self = GST_NET_CLIENT_CLOCK (object);
+  GstClock *internal_clock = self->priv->internal_clock;
+  GstClockTime internal;
+
+  G_OBJECT_CLASS (parent_class)->constructed (object);
+
+  /* gst_clock_get_time() values are guaranteed to be increasing. because no one
+   * has called get_time on this clock yet we are free to adjust to any value
+   * without worrying about worrying about MAX() issues with the clock's
+   * internal time.
+   */
+
+  /* update our internal time so get_time() give something around base_time.
+     assume that the rate is 1 in the beginning. */
+  internal = gst_clock_get_internal_time (internal_clock);
+  gst_clock_set_calibration (internal_clock, internal,
+      self->priv->base_time, 1, 1);
+
+  {
+    GstClockTime now = gst_clock_get_time (internal_clock);
+
+    if (GST_CLOCK_DIFF (now, self->priv->base_time) > 0 ||
+        GST_CLOCK_DIFF (now, self->priv->base_time + GST_SECOND) < 0) {
+      g_warning ("unable to set the base time, expect sync problems!");
+    }
+  }
+
+  if (!gst_net_client_clock_start (self)) {
+    g_warning ("failed to start clock '%s'", GST_OBJECT_NAME (self));
+  }
+
+  /* all systems go, cap'n */
+}
+
+static GstClockTime
+gst_net_client_clock_get_internal_time (GstClock * clock)
+{
+  GstNetClientClock *self = GST_NET_CLIENT_CLOCK (clock);
+
+  return gst_clock_get_time (self->priv->internal_clock);
+}
+
+static gint
+compare_clock_time (const GstClockTime * a, const GstClockTime * b)
+{
+  if (*a < *b)
+    return -1;
+  else if (*a > *b)
+    return 1;
+  return 0;
+}
+
+static void
 gst_net_client_clock_observe_times (GstNetClientClock * self,
-    GstClockTime local_1, GstClockTime remote, GstClockTime local_2)
+    GstClockTime local_1, GstClockTime remote_1, GstClockTime remote_2,
+    GstClockTime local_2)
 {
   GstNetClientClockPrivate *priv = self->priv;
-  GstClockTime current_timeout;
-  GstClockTime local_avg;
+  GstClock *internal_clock = priv->internal_clock;
+  GstClockTime current_timeout = 0;
+  GstClockTime local_avg, remote_avg;
   gdouble r_squared;
   GstClock *clock;
-  GstClockTime rtt;
+  GstClockTime rtt, rtt_limit, min_update_interval;
+  GstBus *bus = NULL;
+  /* Use for discont tracking */
+  GstClockTime time_before = 0;
+  GstClockTime min_guess = 0;
+  GstClockTimeDiff time_discont = 0;
+  gboolean synched, now_synched;
+  GstClockTime internal_time, external_time, rate_num, rate_den;
+  GstClockTime orig_internal_time, orig_external_time, orig_rate_num,
+      orig_rate_den;
+  GstClockTime max_discont;
+  GstClockTime last_rtts[MEDIAN_PRE_FILTERING_WINDOW];
+  GstClockTime median;
+  gint i;
+
+  GST_OBJECT_LOCK (self);
+  rtt_limit = self->priv->roundtrip_limit;
+
+  /* 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->priv->last_remote_poll_interval != GST_CLOCK_TIME_NONE &&
+      self->priv->last_remote_poll_interval >
+      self->priv->minimum_update_interval)
+    min_update_interval = self->priv->last_remote_poll_interval;
+  else
+    min_update_interval = self->priv->minimum_update_interval;
+
+  if (self->priv->bus)
+    bus = gst_object_ref (self->priv->bus);
+  GST_OBJECT_UNLOCK (self);
 
   if (local_2 < local_1) {
     GST_LOG_OBJECT (self, "Dropping observation: receive time %" GST_TIME_FORMAT
@@ -259,16 +473,54 @@
     goto bogus_observation;
   }
 
-  rtt = GST_CLOCK_DIFF (local_1, local_2);
+  if (remote_2 < remote_1) {
+    GST_LOG_OBJECT (self,
+        "Dropping observation: remote receive time %" GST_TIME_FORMAT
+        " < send time %" GST_TIME_FORMAT, GST_TIME_ARGS (remote_1),
+        GST_TIME_ARGS (remote_2));
+    goto bogus_observation;
+  }
 
-  if ((self->priv->roundtrip_limit > 0) && (rtt > self->priv->roundtrip_limit)) {
+  /* The round trip time is (assuming symmetric path delays)
+   * delta = (local_2 - local_1) - (remote_2 - remote_1)
+   */
+
+  rtt = GST_CLOCK_DIFF (local_1, local_2) - GST_CLOCK_DIFF (remote_1, remote_2);
+
+  if ((rtt_limit > 0) && (rtt > rtt_limit)) {
     GST_LOG_OBJECT (self,
         "Dropping observation: RTT %" GST_TIME_FORMAT " > limit %"
-        GST_TIME_FORMAT, GST_TIME_ARGS (rtt),
-        GST_TIME_ARGS (self->priv->roundtrip_limit));
+        GST_TIME_FORMAT, GST_TIME_ARGS (rtt), GST_TIME_ARGS (rtt_limit));
     goto bogus_observation;
   }
 
+  for (i = 1; i < MEDIAN_PRE_FILTERING_WINDOW; i++)
+    self->priv->last_rtts[i - 1] = self->priv->last_rtts[i];
+  self->priv->last_rtts[i - 1] = rtt;
+
+  if (self->priv->last_rtts_missing) {
+    self->priv->last_rtts_missing--;
+  } else {
+    memcpy (&last_rtts, &self->priv->last_rtts, sizeof (last_rtts));
+    g_qsort_with_data (&last_rtts,
+        MEDIAN_PRE_FILTERING_WINDOW, sizeof (GstClockTime),
+        (GCompareDataFunc) compare_clock_time, NULL);
+
+    median = last_rtts[MEDIAN_PRE_FILTERING_WINDOW / 2];
+
+    /* FIXME: We might want to use something else here, like only allowing
+     * things in the interquartile range, or also filtering away delays that
+     * are too small compared to the median. This here worked well enough
+     * in tests so far.
+     */
+    if (rtt > 2 * median) {
+      GST_LOG_OBJECT (self,
+          "Dropping observation, long RTT %" GST_TIME_FORMAT " > 2 * median %"
+          GST_TIME_FORMAT, GST_TIME_ARGS (rtt), GST_TIME_ARGS (median));
+      goto bogus_observation;
+    }
+  }
+
   /* Track an average round trip time, for a bit of smoothing */
   /* Always update before discarding a sample, so genuine changes in
    * the network get picked up, eventually */
@@ -277,7 +529,7 @@
   else if (rtt < priv->rtt_avg) /* Shorter RTTs carry more weight than longer */
     priv->rtt_avg = (3 * priv->rtt_avg + rtt) / 4;
   else
-    priv->rtt_avg = (7 * priv->rtt_avg + rtt) / 8;
+    priv->rtt_avg = (15 * priv->rtt_avg + rtt) / 16;
 
   if (rtt > 2 * priv->rtt_avg) {
     GST_LOG_OBJECT (self,
@@ -286,29 +538,183 @@
     goto bogus_observation;
   }
 
-  local_avg = (local_2 + local_1) / 2;
+  /* The difference between the local and remote clock (again assuming
+   * symmetric path delays):
+   *
+   * local_1 + delta / 2 - remote_1 = theta
+   * or
+   * local_2 - delta / 2 - remote_2 = theta
+   *
+   * which gives after some simple algebraic transformations:
+   *
+   *         (remote_1 - local_1) + (remote_2 - local_2)
+   * theta = -------------------------------------------
+   *                              2
+   *
+   *
+   * Thus remote time at local_avg is equal to:
+   *
+   * local_avg + theta =
+   *
+   * local_1 + local_2   (remote_1 - local_1) + (remote_2 - local_2)
+   * ----------------- + -------------------------------------------
+   *         2                                2
+   *
+   * =
+   *
+   * remote_1 + remote_2
+   * ------------------- = remote_avg
+   *          2
+   *
+   * We use this for our clock estimation, i.e. local_avg at remote clock
+   * being the same as remote_avg.
+   */
 
-  GST_LOG_OBJECT (self, "local1 %" G_GUINT64_FORMAT " remote %" G_GUINT64_FORMAT
-      " localavg %" G_GUINT64_FORMAT " local2 %" G_GUINT64_FORMAT,
-      local_1, remote, local_avg, local_2);
+  local_avg = (local_2 + local_1) / 2;
+  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);
 
   clock = GST_CLOCK_CAST (self);
 
-  if (gst_clock_add_observation (GST_CLOCK (self), local_avg, remote,
-          &r_squared)) {
-    /* ghetto formula - shorter timeout for bad correlations */
-    current_timeout = (1e-3 / (1 - MIN (r_squared, 0.99999))) * GST_SECOND;
-    current_timeout = MIN (current_timeout, gst_clock_get_timeout (clock));
-  } else {
-    current_timeout = 0;
+  /* Store what the clock produced as 'now' before this update */
+  gst_clock_get_calibration (internal_clock, &orig_internal_time,
+      &orig_external_time, &orig_rate_num, &orig_rate_den);
+  internal_time = orig_internal_time;
+  external_time = orig_external_time;
+  rate_num = orig_rate_num;
+  rate_den = orig_rate_den;
+
+  min_guess =
+      gst_clock_adjust_with_calibration (internal_clock, local_1,
+      internal_time, external_time, rate_num, rate_den);
+  time_before =
+      gst_clock_adjust_with_calibration (internal_clock, local_2,
+      internal_time, external_time, rate_num, rate_den);
+
+  /* Maximum discontinuity, when we're synched with the master. Could make this a property,
+   * but this value seems to work fine */
+  max_discont = priv->rtt_avg / 4;
+
+  /* If the remote observation was within a max_discont window around our min/max estimates, we're synched */
+  synched =
+      (GST_CLOCK_DIFF (remote_avg, min_guess) < (GstClockTimeDiff) (max_discont)
+      && GST_CLOCK_DIFF (time_before,
+          remote_avg) < (GstClockTimeDiff) (max_discont));
+
+  if (gst_clock_add_observation_unapplied (internal_clock,
+          local_avg, remote_avg, &r_squared, &internal_time, &external_time,
+          &rate_num, &rate_den)) {
+
+    /* Now compare the difference (discont) in the clock
+     * after this observation */
+    time_discont = GST_CLOCK_DIFF (time_before,
+        gst_clock_adjust_with_calibration (internal_clock, local_2,
+            internal_time, external_time, rate_num, rate_den));
+
+    /* If we were in sync with the remote clock, clamp the allowed
+     * discontinuity to within quarter of one RTT. In sync means our send/receive estimates
+     * of remote time correctly windowed the actual remote time observation */
+    if (synched && ABS (time_discont) > max_discont) {
+      GstClockTimeDiff offset;
+      GST_DEBUG_OBJECT (clock,
+          "Too large a discont, clamping to 1/4 average RTT = %"
+          GST_TIME_FORMAT, GST_TIME_ARGS (max_discont));
+      if (time_discont > 0) {   /* Too large a forward step - add a -ve offset */
+        offset = max_discont - time_discont;
+        if (-offset > external_time)
+          external_time = 0;
+        else
+          external_time += offset;
+      } else {                  /* Too large a backward step - add a +ve offset */
+        offset = -(max_discont + time_discont);
+        external_time += offset;
+      }
+
+      time_discont += offset;
+    }
+
+    /* Check if the new clock params would have made our observation within range */
+    now_synched =
+        (GST_CLOCK_DIFF (remote_avg,
+            gst_clock_adjust_with_calibration (internal_clock,
+                local_1, internal_time, external_time, rate_num,
+                rate_den)) < (GstClockTimeDiff) (max_discont))
+        &&
+        (GST_CLOCK_DIFF (gst_clock_adjust_with_calibration
+            (internal_clock, local_2, internal_time, external_time,
+                rate_num, rate_den),
+            remote_avg) < (GstClockTimeDiff) (max_discont));
+
+    /* Only update the clock if we had synch or just gained it */
+    if (synched || now_synched || priv->skipped_updates > MAX_SKIPPED_UPDATES) {
+      gst_clock_set_calibration (internal_clock, internal_time,
+          external_time, rate_num, rate_den);
+      /* ghetto formula - shorter timeout for bad correlations */
+      current_timeout = (1e-3 / (1 - MIN (r_squared, 0.99999))) * GST_SECOND;
+      current_timeout =
+          MIN (current_timeout, gst_clock_get_timeout (internal_clock));
+      priv->skipped_updates = 0;
+
+      /* FIXME: When do we consider the clock absolutely not synced anymore? */
+      gst_clock_set_synced (GST_CLOCK (self), TRUE);
+    } else {
+      /* Restore original calibration vars for the report, we're not changing the clock */
+      internal_time = orig_internal_time;
+      external_time = orig_external_time;
+      rate_num = orig_rate_num;
+      rate_den = orig_rate_den;
+      time_discont = 0;
+      priv->skipped_updates++;
+    }
+  }
+
+  /* Limit the polling to at most one per minimum_update_interval */
+  if (rtt < min_update_interval)
+    current_timeout = MAX (min_update_interval - rtt, current_timeout);
+
+  if (bus) {
+    GstStructure *s;
+    GstMessage *msg;
+
+    /* Output a stats message, whether we updated the clock or not */
+    s = gst_structure_new ("gst-netclock-statistics",
+        "synchronised", G_TYPE_BOOLEAN, synched,
+        "rtt", G_TYPE_UINT64, rtt,
+        "rtt-average", G_TYPE_UINT64, priv->rtt_avg,
+        "local", G_TYPE_UINT64, local_avg,
+        "remote", G_TYPE_UINT64, remote_avg,
+        "discontinuity", G_TYPE_INT64, time_discont,
+        "remote-min-estimate", G_TYPE_UINT64, min_guess,
+        "remote-max-estimate", G_TYPE_UINT64, time_before,
+        "remote-min-error", G_TYPE_INT64, GST_CLOCK_DIFF (remote_avg,
+            min_guess), "remote-max-error", G_TYPE_INT64,
+        GST_CLOCK_DIFF (remote_avg, time_before), "request-send", G_TYPE_UINT64,
+        local_1, "request-receive", G_TYPE_UINT64, local_2, "r-squared",
+        G_TYPE_DOUBLE, r_squared, "timeout", G_TYPE_UINT64, current_timeout,
+        "internal-time", G_TYPE_UINT64, internal_time, "external-time",
+        G_TYPE_UINT64, external_time, "rate-num", G_TYPE_UINT64, rate_num,
+        "rate-den", G_TYPE_UINT64, rate_den, "rate", G_TYPE_DOUBLE,
+        (gdouble) (rate_num) / rate_den, "local-clock-offset", G_TYPE_INT64,
+        GST_CLOCK_DIFF (internal_time, external_time), NULL);
+    msg = gst_message_new_element (GST_OBJECT (self), s);
+    gst_bus_post (bus, msg);
   }
 
   GST_INFO ("next timeout: %" GST_TIME_FORMAT, GST_TIME_ARGS (current_timeout));
   self->priv->timeout_expiration = gst_util_get_timestamp () + current_timeout;
 
+  if (bus)
+    gst_object_unref (bus);
   return;
 
 bogus_observation:
+  if (bus)
+    gst_object_unref (bus);
   /* Schedule a new packet again soon */
   self->priv->timeout_expiration = gst_util_get_timestamp () + (GST_SECOND / 4);
   return;
@@ -318,10 +724,9 @@
 gst_net_client_clock_thread (gpointer data)
 {
   GstNetClientClock *self = data;
-  GstNetTimePacket *packet;
+  GstClock *internal_clock = self->priv->internal_clock;
   GSocket *socket = self->priv->socket;
   GError *err = NULL;
-  GstClock *clock = data;
 
   GST_INFO_OBJECT (self, "net client clock thread running, socket=%p", socket);
 
@@ -352,22 +757,41 @@
         /* timed out, let's send another packet */
         GST_DEBUG_OBJECT (self, "timed out");
 
-        packet = gst_net_time_packet_new (NULL);
+        if (self->priv->is_ntp) {
+          GstNtpPacket *packet;
 
-        packet->local_time = gst_clock_get_internal_time (GST_CLOCK (self));
+          packet = gst_ntp_packet_new (NULL, NULL);
 
-        GST_DEBUG_OBJECT (self,
-            "sending packet, local time = %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (packet->local_time));
+          packet->transmit_time = gst_clock_get_internal_time (internal_clock);
 
-        gst_net_time_packet_send (packet, self->priv->socket,
-            self->priv->servaddr, NULL);
+          GST_DEBUG_OBJECT (self,
+              "sending packet, local time = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->transmit_time));
 
-        g_free (packet);
+          gst_ntp_packet_send (packet, self->priv->socket,
+              self->priv->servaddr, NULL);
+
+          g_free (packet);
+        } else {
+          GstNetTimePacket *packet;
+
+          packet = gst_net_time_packet_new (NULL);
+
+          packet->local_time = gst_clock_get_internal_time (internal_clock);
+
+          GST_DEBUG_OBJECT (self,
+              "sending packet, local time = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->local_time));
+
+          gst_net_time_packet_send (packet, self->priv->socket,
+              self->priv->servaddr, NULL);
+
+          g_free (packet);
+        }
 
         /* reset timeout (but are expecting a response sooner anyway) */
         self->priv->timeout_expiration =
-            gst_util_get_timestamp () + gst_clock_get_timeout (clock);
+            gst_util_get_timestamp () + gst_clock_get_timeout (internal_clock);
       } else {
         GST_DEBUG_OBJECT (self, "socket error: %s", err->message);
         g_usleep (G_USEC_PER_SEC / 10); /* throttle */
@@ -378,31 +802,87 @@
 
       /* got packet */
 
-      new_local = gst_clock_get_internal_time (GST_CLOCK (self));
+      new_local = gst_clock_get_internal_time (internal_clock);
 
-      packet = gst_net_time_packet_receive (socket, NULL, &err);
+      if (self->priv->is_ntp) {
+        GstNtpPacket *packet;
 
-      if (packet != NULL) {
-        GST_LOG_OBJECT (self, "got packet back");
-        GST_LOG_OBJECT (self, "local_1 = %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (packet->local_time));
-        GST_LOG_OBJECT (self, "remote = %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (packet->remote_time));
-        GST_LOG_OBJECT (self, "local_2 = %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (new_local));
+        packet = gst_ntp_packet_receive (socket, NULL, &err);
 
-        /* observe_times will reset the timeout */
-        gst_net_client_clock_observe_times (self, packet->local_time,
-            packet->remote_time, new_local);
+        if (packet != NULL) {
+          GST_LOG_OBJECT (self, "got packet back");
+          GST_LOG_OBJECT (self, "local_1 = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->origin_time));
+          GST_LOG_OBJECT (self, "remote_1 = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->receive_time));
+          GST_LOG_OBJECT (self, "remote_2 = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->transmit_time));
+          GST_LOG_OBJECT (self, "local_2 = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (new_local));
+          GST_LOG_OBJECT (self, "poll_interval = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->poll_interval));
 
-        g_free (packet);
-      } else if (err != NULL) {
-        GST_WARNING_OBJECT (self, "receive error: %s", err->message);
-        g_clear_error (&err);
+          /* Remember the last poll interval we ever got from the server */
+          if (packet->poll_interval != GST_CLOCK_TIME_NONE)
+            self->priv->last_remote_poll_interval = packet->poll_interval;
+
+          /* observe_times will reset the timeout */
+          gst_net_client_clock_observe_times (self, packet->origin_time,
+              packet->receive_time, packet->transmit_time, new_local);
+
+          g_free (packet);
+        } else if (err != NULL) {
+          if (g_error_matches (err, GST_NTP_ERROR, GST_NTP_ERROR_WRONG_VERSION)
+              || g_error_matches (err, GST_NTP_ERROR, GST_NTP_ERROR_KOD_DENY)) {
+            GST_ERROR_OBJECT (self, "fatal receive error: %s", err->message);
+            break;
+          } else if (g_error_matches (err, GST_NTP_ERROR,
+                  GST_NTP_ERROR_KOD_RATE)) {
+            GST_WARNING_OBJECT (self, "need to limit rate");
+
+            /* If the server did not tell us a poll interval before, double
+             * our minimum poll interval. Otherwise we assume that the server
+             * already told us something sensible and that this error here
+             * was just a spurious error */
+            if (self->priv->last_remote_poll_interval == GST_CLOCK_TIME_NONE)
+              self->priv->minimum_update_interval *= 2;
+
+            /* And wait a bit before we send the next packet instead of
+             * sending it immediately */
+            self->priv->timeout_expiration =
+                gst_util_get_timestamp () +
+                gst_clock_get_timeout (internal_clock);
+          } else {
+            GST_WARNING_OBJECT (self, "receive error: %s", err->message);
+          }
+          g_clear_error (&err);
+        }
+      } else {
+        GstNetTimePacket *packet;
+
+        packet = gst_net_time_packet_receive (socket, NULL, &err);
+
+        if (packet != NULL) {
+          GST_LOG_OBJECT (self, "got packet back");
+          GST_LOG_OBJECT (self, "local_1 = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->local_time));
+          GST_LOG_OBJECT (self, "remote = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (packet->remote_time));
+          GST_LOG_OBJECT (self, "local_2 = %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (new_local));
+
+          /* observe_times will reset the timeout */
+          gst_net_client_clock_observe_times (self, packet->local_time,
+              packet->remote_time, packet->remote_time, new_local);
+
+          g_free (packet);
+        } else if (err != NULL) {
+          GST_WARNING_OBJECT (self, "receive error: %s", err->message);
+          g_clear_error (&err);
+        }
       }
     }
   }
-
   GST_INFO_OBJECT (self, "shutting down net client clock thread");
   return NULL;
 }
@@ -417,6 +897,7 @@
   GSocket *socket;
   GError *error = NULL;
   GSocketFamily family;
+  GPollFD dummy_pollfd;
 
   g_return_val_if_fail (self->priv->address != NULL, FALSE);
   g_return_val_if_fail (self->priv->servaddr == NULL, FALSE);
@@ -458,12 +939,15 @@
   if (myaddr == NULL)
     goto getsockname_error;
 
-  GST_DEBUG_OBJECT (self, "socket opened on UDP port %hd",
+  GST_DEBUG_OBJECT (self, "socket opened on UDP port %d",
       g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (myaddr)));
 
   g_object_unref (myaddr);
 
   self->priv->cancel = g_cancellable_new ();
+  self->priv->made_cancel_fd =
+      g_cancellable_make_pollfd (self->priv->cancel, &dummy_pollfd);
+
   self->priv->socket = socket;
   self->priv->servaddr = G_SOCKET_ADDRESS (servaddr);
 
@@ -526,6 +1010,9 @@
   g_thread_join (self->priv->thread);
   self->priv->thread = NULL;
 
+  if (self->priv->made_cancel_fd)
+    g_cancellable_release_fd (self->priv->cancel);
+
   g_object_unref (self->priv->cancel);
   self->priv->cancel = NULL;
 
@@ -556,9 +1043,7 @@
 gst_net_client_clock_new (const gchar * name, const gchar * remote_address,
     gint remote_port, GstClockTime base_time)
 {
-  /* FIXME: gst_net_client_clock_new() should be a thin wrapper for g_object_new() */
   GstNetClientClock *ret;
-  GstClockTime internal;
 
   g_return_val_if_fail (remote_address != NULL, NULL);
   g_return_val_if_fail (remote_port > 0, NULL);
@@ -566,38 +1051,52 @@
   g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL);
 
   ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,
-      "port", remote_port, NULL);
+      "port", remote_port, "base-time", base_time, NULL);
 
-  /* gst_clock_get_time() values are guaranteed to be increasing. because no one
-   * has called get_time on this clock yet we are free to adjust to any value
-   * without worrying about worrying about MAX() issues with the clock's
-   * internal time.
-   */
-
-  /* update our internal time so get_time() give something around base_time.
-     assume that the rate is 1 in the beginning. */
-  internal = gst_clock_get_internal_time (GST_CLOCK (ret));
-  gst_clock_set_calibration (GST_CLOCK (ret), internal, base_time, 1, 1);
-
-  {
-    GstClockTime now = gst_clock_get_time (GST_CLOCK (ret));
-
-    if (GST_CLOCK_DIFF (now, base_time) > 0 ||
-        GST_CLOCK_DIFF (now, base_time + GST_SECOND) < 0) {
-      g_warning ("unable to set the base time, expect sync problems!");
-    }
-  }
-
-  if (!gst_net_client_clock_start (ret))
-    goto failed_start;
-
-  /* all systems go, cap'n */
   return (GstClock *) ret;
+}
 
-failed_start:
-  {
-    /* already printed a nice error */
-    gst_object_unref (ret);
-    return NULL;
-  }
+G_DEFINE_TYPE (GstNtpClock, gst_ntp_clock, GST_TYPE_NET_CLIENT_CLOCK);
+
+static void
+gst_ntp_clock_class_init (GstNtpClockClass * klass)
+{
+}
+
+static void
+gst_ntp_clock_init (GstNtpClock * self)
+{
+  GST_NET_CLIENT_CLOCK (self)->priv->is_ntp = TRUE;
+}
+
+/**
+ * gst_ntp_clock_new:
+ * @name: a name for the clock
+ * @remote_address: the address of the remote clock provider
+ * @remote_port: the port of the remote clock provider
+ * @base_time: initial time of the clock
+ *
+ * Create a new #GstNtpClock that will report the time provided by
+ * the NTPv4 server on @remote_address and @remote_port.
+ *
+ * Returns: a new #GstClock that receives a time from the remote
+ * clock.
+ *
+ * Since: 1.6
+ */
+GstClock *
+gst_ntp_clock_new (const gchar * name, const gchar * remote_address,
+    gint remote_port, GstClockTime base_time)
+{
+  GstNetClientClock *ret;
+
+  g_return_val_if_fail (remote_address != NULL, NULL);
+  g_return_val_if_fail (remote_port > 0, NULL);
+  g_return_val_if_fail (remote_port <= G_MAXUINT16, NULL);
+  g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL);
+
+  ret = g_object_new (GST_TYPE_NTP_CLOCK, "address", remote_address,
+      "port", remote_port, "base-time", base_time, NULL);
+
+  return (GstClock *) ret;
 }
diff --git a/libs/gst/net/gstnetclientclock.h b/libs/gst/net/gstnetclientclock.h
index b7243f1..0839d73 100644
--- a/libs/gst/net/gstnetclientclock.h
+++ b/libs/gst/net/gstnetclientclock.h
@@ -73,6 +73,24 @@
 GstClock*	gst_net_client_clock_new	(const gchar *name, const gchar *remote_address,
                                                  gint remote_port, GstClockTime base_time);
 
+#define GST_TYPE_NTP_CLOCK \
+  (gst_ntp_clock_get_type())
+#define GST_NTP_CLOCK(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_NTP_CLOCK,GstNtpClock))
+#define GST_NTP_CLOCK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_NTP_CLOCK,GstNtpClockClass))
+#define GST_IS_NTP_CLOCK(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NTP_CLOCK))
+#define GST_IS_NTP_CLOCK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NTP_CLOCK))
+
+typedef struct _GstNetClientClock GstNtpClock;
+typedef struct _GstNetClientClockClass GstNtpClockClass;
+
+GType           gst_ntp_clock_get_type	        (void);
+GstClock*	gst_ntp_clock_new	        (const gchar *name, const gchar *remote_address,
+                                                 gint remote_port, GstClockTime base_time);
+
 G_END_DECLS
 
 #endif /* __GST_NET_CLIENT_CLOCK_H__ */
diff --git a/libs/gst/net/gstnetcontrolmessagemeta.c b/libs/gst/net/gstnetcontrolmessagemeta.c
new file mode 100644
index 0000000..ff9b808
--- /dev/null
+++ b/libs/gst/net/gstnetcontrolmessagemeta.c
@@ -0,0 +1,128 @@
+/* GStreamer
+ * Copyright (C) <2014> William Manley <will@williammanley.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:gstnetcontrolmessagemeta
+ * @short_description: Network Control Message Meta
+ *
+ * #GstNetControlMessageMeta can be used to store control messages (ancillary
+ * data) which was received with or is to be sent alongside the buffer data.
+ * When used with socket sinks and sources which understand this meta it allows
+ * sending and receiving ancillary data such as unix credentials (See
+ * #GUnixCredentialsMessage) and Unix file descriptions (See #GUnixFDMessage).
+ */
+
+#include <string.h>
+
+#include "gstnetcontrolmessagemeta.h"
+
+static gboolean
+net_control_message_meta_init (GstMeta * meta, gpointer params,
+    GstBuffer * buffer)
+{
+  GstNetControlMessageMeta *nmeta = (GstNetControlMessageMeta *) meta;
+
+  nmeta->message = NULL;
+
+  return TRUE;
+}
+
+static gboolean
+net_control_message_meta_transform (GstBuffer * transbuf, GstMeta * meta,
+    GstBuffer * buffer, GQuark type, gpointer data)
+{
+  GstNetControlMessageMeta *smeta, *dmeta;
+  smeta = (GstNetControlMessageMeta *) meta;
+
+  /* we always copy no matter what transform */
+  dmeta = gst_buffer_add_net_control_message_meta (transbuf, smeta->message);
+  if (!dmeta)
+    return FALSE;
+
+  return TRUE;
+}
+
+static void
+net_control_message_meta_free (GstMeta * meta, GstBuffer * buffer)
+{
+  GstNetControlMessageMeta *nmeta = (GstNetControlMessageMeta *) meta;
+
+  if (nmeta->message)
+    g_object_unref (nmeta->message);
+  nmeta->message = NULL;
+}
+
+GType
+gst_net_control_message_meta_api_get_type (void)
+{
+  static volatile GType type;
+  static const gchar *tags[] = { "origin", NULL };
+
+  if (g_once_init_enter (&type)) {
+    GType _type =
+        gst_meta_api_type_register ("GstNetControlMessageMetaAPI", tags);
+    g_once_init_leave (&type, _type);
+  }
+  return type;
+}
+
+const GstMetaInfo *
+gst_net_control_message_meta_get_info (void)
+{
+  static const GstMetaInfo *meta_info = NULL;
+
+  if (g_once_init_enter (&meta_info)) {
+    const GstMetaInfo *mi =
+        gst_meta_register (GST_NET_CONTROL_MESSAGE_META_API_TYPE,
+        "GstNetControlMessageMeta",
+        sizeof (GstNetControlMessageMeta),
+        net_control_message_meta_init,
+        net_control_message_meta_free,
+        net_control_message_meta_transform);
+    g_once_init_leave (&meta_info, mi);
+  }
+  return meta_info;
+}
+
+/**
+ * gst_buffer_add_net_control_message_meta:
+ * @buffer: a #GstBuffer
+ * @message: a @GSocketControlMessage to attach to @buffer
+ *
+ * Attaches @message as metadata in a #GstNetControlMessageMeta to @buffer.
+ *
+ * Returns: (transfer none): a #GstNetControlMessageMeta connected to @buffer
+ */
+GstNetControlMessageMeta *
+gst_buffer_add_net_control_message_meta (GstBuffer * buffer,
+    GSocketControlMessage * message)
+{
+  GstNetControlMessageMeta *meta;
+
+  g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL);
+  g_return_val_if_fail (G_IS_SOCKET_CONTROL_MESSAGE (message), NULL);
+
+  meta =
+      (GstNetControlMessageMeta *) gst_buffer_add_meta (buffer,
+      GST_NET_CONTROL_MESSAGE_META_INFO, NULL);
+
+  meta->message = g_object_ref (message);
+
+  return meta;
+}
diff --git a/libs/gst/net/gstnetcontrolmessagemeta.h b/libs/gst/net/gstnetcontrolmessagemeta.h
new file mode 100644
index 0000000..5c3b965
--- /dev/null
+++ b/libs/gst/net/gstnetcontrolmessagemeta.h
@@ -0,0 +1,62 @@
+/* GStreamer
+ * Copyright (C) <2014> William Manley <will@williammanley.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_NET_CONTROL_MESSAGE_META_H__
+#define __GST_NET_CONTROL_MESSAGE_META_H__
+
+#include <gst/gst.h>
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GstNetControlMessageMeta GstNetControlMessageMeta;
+
+/**
+ * GstNetControlMessageMeta:
+ * @meta: the parent type
+ * @message: a #GSocketControlMessage stored as metadata
+ *
+ * Buffer metadata for GSocket control messages, AKA ancillary data attached to
+ * data sent across a socket.
+ */
+struct _GstNetControlMessageMeta {
+  GstMeta       meta;
+
+  GSocketControlMessage *message;
+};
+
+GType gst_net_control_message_meta_api_get_type (void);
+#define GST_NET_CONTROL_MESSAGE_META_API_TYPE \
+  (gst_net_control_message_meta_api_get_type())
+
+#define gst_buffer_get_net_control_message_meta(b) ((GstNetControlMessageMeta*)\
+  gst_buffer_get_meta((b),GST_NET_CONTROL_MESSAGE_META_API_TYPE))
+
+/* implementation */
+const GstMetaInfo *gst_net_control_message_meta_get_info (void);
+#define GST_NET_CONTROL_MESSAGE_META_INFO \
+  (gst_net_control_message_meta_get_info())
+
+GstNetControlMessageMeta * gst_buffer_add_net_control_message_meta (GstBuffer             * buffer,
+                                                                    GSocketControlMessage * message);
+
+G_END_DECLS
+
+#endif /* __GST_NET_CONTROL_MESSAGE_META_H__ */
+
diff --git a/libs/gst/net/gstnettimeprovider.c b/libs/gst/net/gstnettimeprovider.c
index 8e030d7..6ec123d 100644
--- a/libs/gst/net/gstnettimeprovider.c
+++ b/libs/gst/net/gstnettimeprovider.c
@@ -73,6 +73,7 @@
 
   GSocket *socket;
   GCancellable *cancel;
+  gboolean made_cancel_fd;
 };
 
 static gboolean gst_net_time_provider_start (GstNetTimeProvider * bself);
@@ -274,6 +275,7 @@
 {
   GSocketAddress *socket_addr, *bound_addr;
   GInetAddress *inet_addr;
+  GPollFD dummy_pollfd;
   GSocket *socket;
   GError *err = NULL;
   int port;
@@ -328,6 +330,8 @@
 
   self->priv->socket = socket;
   self->priv->cancel = g_cancellable_new ();
+  self->priv->made_cancel_fd =
+      g_cancellable_make_pollfd (self->priv->cancel, &dummy_pollfd);
 
   self->priv->thread = g_thread_try_new ("GstNetTimeProvider",
       gst_net_time_provider_thread, self, &err);
@@ -380,6 +384,9 @@
   g_thread_join (self->priv->thread);
   self->priv->thread = NULL;
 
+  if (self->priv->made_cancel_fd)
+    g_cancellable_release_fd (self->priv->cancel);
+
   g_object_unref (self->priv->cancel);
   self->priv->cancel = NULL;
 
diff --git a/libs/gst/net/gstntppacket.c b/libs/gst/net/gstntppacket.c
new file mode 100644
index 0000000..79b95ec
--- /dev/null
+++ b/libs/gst/net/gstntppacket.c
@@ -0,0 +1,376 @@
+/* GStreamer
+ * Copyright (C) 2005 Andy Wingo <wingo@pobox.com>
+ * Copyright (C) 2010 Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) 2012 Collabora Ltd. <tim.muller@collabora.co.uk>
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+/* THIS IS A PRIVATE API
+ * SECTION:gstntppacket
+ * @short_description: Helper structure to construct clock packets used
+ *                     by network clocks for NTPv4.
+ * @see_also: #GstClock, #GstNetClientClock, #GstNtpClock
+ *
+ * Various functions for receiving, sending an serializing #GstNtpPacket
+ * structures.
+ */
+
+/* FIXME 2.0: Merge this with GstNetTimePacket! */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+
+#ifdef __CYGWIN__
+# include <unistd.h>
+# include <fcntl.h>
+#endif
+
+#include <gst/gst.h>
+#include <string.h>
+
+#include "gstntppacket.h"
+
+G_DEFINE_BOXED_TYPE (GstNtpPacket, gst_ntp_packet,
+    gst_ntp_packet_copy, gst_ntp_packet_free);
+
+
+static inline GstClockTime
+ntp_timestamp_to_gst_clock_time (guint32 seconds, guint32 fraction)
+{
+  return gst_util_uint64_scale (seconds, GST_SECOND, 1) +
+      gst_util_uint64_scale (fraction, GST_SECOND,
+      G_GUINT64_CONSTANT (1) << 32);
+}
+
+static inline guint32
+gst_clock_time_to_ntp_timestamp_seconds (GstClockTime gst)
+{
+  GstClockTime seconds = gst_util_uint64_scale (gst, 1, GST_SECOND);
+
+  return seconds;
+}
+
+static inline guint32
+gst_clock_time_to_ntp_timestamp_fraction (GstClockTime gst)
+{
+  GstClockTime seconds = gst_util_uint64_scale (gst, 1, GST_SECOND);
+
+  return gst_util_uint64_scale (gst - seconds, G_GUINT64_CONSTANT (1) << 32,
+      GST_SECOND);
+}
+
+/**
+ * gst_ntp_packet_new:
+ * @buffer: (array): a buffer from which to construct the packet, or NULL
+ * @error: a #GError
+ *
+ * Creates a new #GstNtpPacket from a buffer received over the network. The
+ * caller is responsible for ensuring that @buffer is at least
+ * #GST_NTP_PACKET_SIZE bytes long.
+ *
+ * If @buffer is #NULL, the local and remote times will be set to
+ * #GST_CLOCK_TIME_NONE.
+ *
+ * MT safe. Caller owns return value (gst_ntp_packet_free to free).
+ *
+ * Returns: The new #GstNtpPacket.
+ */
+GstNtpPacket *
+gst_ntp_packet_new (const guint8 * buffer, GError ** error)
+{
+  GstNtpPacket *ret;
+
+  g_assert (sizeof (GstClockTime) == 8);
+
+  if (buffer) {
+    guint8 version = (buffer[0] >> 3) & 0x7;
+    guint8 stratum = buffer[1];
+    gint8 poll_interval = buffer[2];
+
+    if (version != 4) {
+      g_set_error (error, GST_NTP_ERROR, GST_NTP_ERROR_WRONG_VERSION,
+          "Invalid NTP version %d", version);
+      return NULL;
+    }
+
+    /* Kiss-o'-Death packet! */
+    if (stratum == 0) {
+      gchar code[5] = { buffer[3 * 4 + 0], buffer[3 * 4 + 1], buffer[3 * 4 + 2],
+        buffer[3 * 4 + 3], 0
+      };
+
+      /* AUTH, AUTO, CRYP, DENY, RSTR, NKEY => DENY */
+      if (strcmp (code, "AUTH") == 0 ||
+          strcmp (code, "AUTO") == 0 ||
+          strcmp (code, "CRYP") == 0 ||
+          strcmp (code, "DENY") == 0 ||
+          strcmp (code, "RSTR") == 0 || strcmp (code, "NKEY") == 0) {
+        g_set_error (error, GST_NTP_ERROR, GST_NTP_ERROR_KOD_DENY,
+            "Kiss-o'-Death denied '%s'", code);
+      } else if (strcmp (code, "RATE") == 0) {
+        g_set_error (error, GST_NTP_ERROR, GST_NTP_ERROR_KOD_RATE,
+            "Kiss-o'-Death '%s'", code);
+      } else {
+        g_set_error (error, GST_NTP_ERROR, GST_NTP_ERROR_KOD_UNKNOWN,
+            "Kiss-o'-Death unknown '%s'", code);
+      }
+
+      return NULL;
+    }
+
+    ret = g_new0 (GstNtpPacket, 1);
+    ret->origin_time =
+        ntp_timestamp_to_gst_clock_time (GST_READ_UINT32_BE (buffer + 6 * 4),
+        GST_READ_UINT32_BE (buffer + 7 * 4));
+    ret->receive_time =
+        ntp_timestamp_to_gst_clock_time (GST_READ_UINT32_BE (buffer + 8 * 4),
+        GST_READ_UINT32_BE (buffer + 9 * 4));
+    ret->transmit_time =
+        ntp_timestamp_to_gst_clock_time (GST_READ_UINT32_BE (buffer + 10 * 4),
+        GST_READ_UINT32_BE (buffer + 11 * 4));
+
+    /* Wireshark considers everything >= 3 as invalid */
+    if (poll_interval >= 3)
+      ret->poll_interval = GST_CLOCK_TIME_NONE;
+    else if (poll_interval >= 0)
+      ret->poll_interval = GST_SECOND << poll_interval;
+    else
+      ret->poll_interval = GST_SECOND >> (-poll_interval);
+  } else {
+    ret = g_new0 (GstNtpPacket, 1);
+    ret->origin_time = 0;
+    ret->receive_time = 0;
+    ret->transmit_time = 0;
+    ret->poll_interval = 0;
+  }
+
+  return ret;
+}
+
+/**
+ * gst_ntp_packet_free:
+ * @packet: the #GstNtpPacket
+ *
+ * Free @packet.
+ */
+void
+gst_ntp_packet_free (GstNtpPacket * packet)
+{
+  g_free (packet);
+}
+
+/**
+ * gst_ntp_packet_copy:
+ * @packet: the #GstNtpPacket
+ *
+ * Make a copy of @packet.
+ *
+ * Returns: a copy of @packet, free with gst_ntp_packet_free().
+ */
+GstNtpPacket *
+gst_ntp_packet_copy (const GstNtpPacket * packet)
+{
+  GstNtpPacket *ret;
+
+  ret = g_new0 (GstNtpPacket, 1);
+  ret->origin_time = packet->origin_time;
+  ret->receive_time = packet->receive_time;
+  ret->transmit_time = packet->transmit_time;
+
+  return ret;
+}
+
+/**
+ * gst_ntp_packet_serialize:
+ * @packet: the #GstNtpPacket
+ *
+ * Serialized a #GstNtpPacket into a newly-allocated sequence of
+ * #GST_NTP_PACKET_SIZE bytes, in network byte order. The value returned is
+ * suitable for passing to write(2) or sendto(2) for communication over the
+ * network.
+ *
+ * MT safe. Caller owns return value (g_free to free).
+ *
+ * Returns: A newly allocated sequence of #GST_NTP_PACKET_SIZE bytes.
+ */
+guint8 *
+gst_ntp_packet_serialize (const GstNtpPacket * packet)
+{
+  guint8 *ret;
+
+  g_assert (sizeof (GstClockTime) == 8);
+
+  ret = g_new0 (guint8, GST_NTP_PACKET_SIZE);
+  /* Leap Indicator: unknown
+   * Version: 4
+   * Mode: Client
+   */
+  ret[0] = (3 << 6) | (4 << 3) | (3 << 0);
+  /* Stratum: unsynchronized */
+  ret[1] = 16;
+  /* Polling interval: invalid */
+  ret[2] = 3;
+  /* Precision: 0 */
+  ret[3] = 0;
+  /* Root delay: 0 */
+  GST_WRITE_UINT32_BE (ret + 4, 0);
+  /* Root disperson: 0 */
+  GST_WRITE_UINT32_BE (ret + 2 * 4, 0);
+  /* Reference ID: \0 */
+  GST_WRITE_UINT32_BE (ret + 3 * 4, 0);
+  /* Reference Timestamp: 0 */
+  GST_WRITE_UINT32_BE (ret + 4 * 4, 0);
+  GST_WRITE_UINT32_BE (ret + 5 * 4, 0);
+  /* Origin timestamp (local time) */
+  GST_WRITE_UINT32_BE (ret + 6 * 4,
+      gst_clock_time_to_ntp_timestamp_seconds (packet->origin_time));
+  GST_WRITE_UINT32_BE (ret + 7 * 4,
+      gst_clock_time_to_ntp_timestamp_fraction (packet->origin_time));
+  /* Receive timestamp (remote time) */
+  GST_WRITE_UINT32_BE (ret + 8 * 4,
+      gst_clock_time_to_ntp_timestamp_seconds (packet->receive_time));
+  GST_WRITE_UINT32_BE (ret + 9 * 4,
+      gst_clock_time_to_ntp_timestamp_fraction (packet->receive_time));
+  /* Transmit timestamp (remote time) */
+  GST_WRITE_UINT32_BE (ret + 10 * 4,
+      gst_clock_time_to_ntp_timestamp_seconds (packet->transmit_time));
+  GST_WRITE_UINT32_BE (ret + 11 * 4,
+      gst_clock_time_to_ntp_timestamp_fraction (packet->transmit_time));
+
+  return ret;
+}
+
+/**
+ * gst_ntp_packet_receive:
+ * @socket: socket to receive the time packet on
+ * @src_address: (out): address of variable to return sender address
+ * @error: return address for a #GError, or NULL
+ *
+ * Receives a #GstNtpPacket over a socket. Handles interrupted system
+ * calls, but otherwise returns NULL on error.
+ *
+ * Returns: (transfer full): a new #GstNtpPacket, or NULL on error. Free
+ *    with gst_ntp_packet_free() when done.
+ */
+GstNtpPacket *
+gst_ntp_packet_receive (GSocket * socket,
+    GSocketAddress ** src_address, GError ** error)
+{
+  gchar buffer[GST_NTP_PACKET_SIZE];
+  GError *err = NULL;
+  gssize ret;
+
+  g_return_val_if_fail (G_IS_SOCKET (socket), FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  while (TRUE) {
+    ret = g_socket_receive_from (socket, src_address, buffer,
+        GST_NTP_PACKET_SIZE, NULL, &err);
+
+    if (ret < 0) {
+      if (err->code == G_IO_ERROR_WOULD_BLOCK) {
+        g_error_free (err);
+        err = NULL;
+        continue;
+      } else {
+        goto receive_error;
+      }
+    } else if (ret < GST_NTP_PACKET_SIZE) {
+      goto short_packet;
+    } else {
+      return gst_ntp_packet_new ((const guint8 *) buffer, error);
+    }
+  }
+
+receive_error:
+  {
+    GST_DEBUG ("receive error: %s", err->message);
+    g_propagate_error (error, err);
+    return NULL;
+  }
+short_packet:
+  {
+    GST_DEBUG ("someone sent us a short packet (%" G_GSSIZE_FORMAT " < %d)",
+        ret, GST_NTP_PACKET_SIZE);
+    g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_DATA,
+        "short time packet (%d < %d)", (int) ret, GST_NTP_PACKET_SIZE);
+    return NULL;
+  }
+}
+
+/**
+ * gst_ntp_packet_send:
+ * @packet: the #GstNtpPacket to send
+ * @socket: socket to send the time packet on
+ * @dest_address: address to send the time packet to
+ * @error: return address for a #GError, or NULL
+ *
+ * Sends a #GstNtpPacket over a socket.
+ *
+ * MT safe.
+ *
+ * Returns: TRUE if successful, FALSE in case an error occurred.
+ */
+gboolean
+gst_ntp_packet_send (const GstNtpPacket * packet,
+    GSocket * socket, GSocketAddress * dest_address, GError ** error)
+{
+  gboolean was_blocking;
+  guint8 *buffer;
+  gssize res;
+
+  g_return_val_if_fail (packet != NULL, FALSE);
+  g_return_val_if_fail (G_IS_SOCKET (socket), FALSE);
+  g_return_val_if_fail (G_IS_SOCKET_ADDRESS (dest_address), FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  was_blocking = g_socket_get_blocking (socket);
+
+  if (was_blocking)
+    g_socket_set_blocking (socket, FALSE);
+
+  /* FIXME: avoid pointless alloc/free, serialise into stack-allocated buffer */
+  buffer = gst_ntp_packet_serialize (packet);
+
+  res = g_socket_send_to (socket, dest_address, (const gchar *) buffer,
+      GST_NTP_PACKET_SIZE, NULL, error);
+
+  /* datagram packets should be sent as a whole or not at all */
+  g_assert (res < 0 || res == GST_NTP_PACKET_SIZE);
+
+  g_free (buffer);
+
+  if (was_blocking)
+    g_socket_set_blocking (socket, TRUE);
+
+  return (res == GST_NTP_PACKET_SIZE);
+}
+
+GQuark
+gst_ntp_error_quark (void)
+{
+  static GQuark quark;
+
+  /* Thread-safe because GQuark is */
+  if (!quark)
+    quark = g_quark_from_static_string ("gst-ntp-error-quark");
+
+  return quark;
+}
diff --git a/libs/gst/net/gstntppacket.h b/libs/gst/net/gstntppacket.h
new file mode 100644
index 0000000..0ecd5e8
--- /dev/null
+++ b/libs/gst/net/gstntppacket.h
@@ -0,0 +1,86 @@
+/* GStreamer
+ * Copyright (C) 2005 Andy Wingo <wingo@pobox.com>
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef __GST_NTP_PACKET_H__
+#define __GST_NTP_PACKET_H__
+
+#include <gst/gst.h>
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GST_NTP_PACKET_SIZE:
+ *
+ * The size of the packets sent between NTP clocks.
+ */
+#define GST_NTP_PACKET_SIZE 48
+
+typedef struct _GstNtpPacket GstNtpPacket;
+
+/**
+ * GstNtpPacket:
+ * @origin_time: the time the client packet was sent for the server
+ * @receive_time: the time the client packet was received
+ * @transmit_time: the time the packet was sent
+ * @poll_interval: maximum poll interval
+ *
+ * Content of a #GstNtpPacket.
+ */
+struct _GstNtpPacket {
+  GstClockTime origin_time;
+  GstClockTime receive_time;
+  GstClockTime transmit_time;
+
+  GstClockTime poll_interval;
+};
+
+GType gst_ntp_packet_get_type(void) G_GNUC_INTERNAL;
+
+enum {
+  GST_NTP_ERROR_WRONG_VERSION,
+  GST_NTP_ERROR_KOD_DENY,
+  GST_NTP_ERROR_KOD_RATE,
+  GST_NTP_ERROR_KOD_UNKNOWN
+};
+
+GQuark gst_ntp_error_quark (void) G_GNUC_INTERNAL;
+#define GST_NTP_ERROR (gst_ntp_error_quark ())
+
+GstNtpPacket*           gst_ntp_packet_new         (const guint8 *buffer,
+                                                    GError      ** error) G_GNUC_INTERNAL;
+GstNtpPacket*           gst_ntp_packet_copy        (const GstNtpPacket *packet) G_GNUC_INTERNAL;
+void                    gst_ntp_packet_free        (GstNtpPacket *packet) G_GNUC_INTERNAL;
+
+guint8*                 gst_ntp_packet_serialize   (const GstNtpPacket *packet) G_GNUC_INTERNAL;
+
+GstNtpPacket*           gst_ntp_packet_receive     (GSocket         * socket,
+                                                    GSocketAddress ** src_address,
+                                                    GError         ** error) G_GNUC_INTERNAL;
+
+gboolean                gst_ntp_packet_send        (const GstNtpPacket * packet,
+                                                    GSocket            * socket,
+                                                    GSocketAddress     * dest_address,
+                                                    GError            ** error) G_GNUC_INTERNAL;
+
+G_END_DECLS
+
+#endif /* __GST_NET_TIME_PACKET_H__ */
diff --git a/libs/gst/net/gstptp_private.h b/libs/gst/net/gstptp_private.h
new file mode 100644
index 0000000..18e0e07
--- /dev/null
+++ b/libs/gst/net/gstptp_private.h
@@ -0,0 +1,19 @@
+#ifndef __GST_PTP_PRIVATE_H__
+#define __GST_PTP_PRIVATE_H__
+
+#include <glib.h>
+
+enum
+{
+  TYPE_EVENT,
+  TYPE_GENERAL,
+  TYPE_CLOCK_ID
+};
+
+typedef struct
+{
+  guint16 size;
+  guint8 type;
+} StdIOHeader;
+
+#endif /* __GST_PTP_PRIVATE_H__ */
diff --git a/libs/gst/net/gstptpclock.c b/libs/gst/net/gstptpclock.c
new file mode 100644
index 0000000..4c48908
--- /dev/null
+++ b/libs/gst/net/gstptpclock.c
@@ -0,0 +1,2569 @@
+/* GStreamer
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+/**
+ * SECTION:gstptpclock
+ * @short_description: Special clock that synchronizes to a remote time
+ *                     provider via PTP (IEEE1588:2008).
+ * @see_also: #GstClock, #GstNetClientClock, #GstPipeline
+ *
+ * GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in slave-only
+ * mode, that allows a GStreamer pipeline to synchronize to a PTP network
+ * clock in some specific domain.
+ *
+ * The PTP subsystem can be initialized with gst_ptp_init(), which then starts
+ * a helper process to do the actual communication via the PTP ports. This is
+ * required as PTP listens on ports < 1024 and thus requires special
+ * privileges. Once this helper process is started, the main process will
+ * synchronize to all PTP domains that are detected on the selected
+ * interfaces.
+ *
+ * gst_ptp_clock_new() then allows to create a GstClock that provides the PTP
+ * time from a master clock inside a specific PTP domain. This clock will only
+ * return valid timestamps once the timestamps in the PTP domain are known. To
+ * check this, you can use gst_clock_wait_for_sync(), the GstClock::synced
+ * signal and gst_clock_is_synced().
+ *
+ *
+ * To gather statistics about the PTP clock synchronization,
+ * gst_ptp_statistics_callback_add() can be used. This gives the application
+ * the possibility to collect all kinds of statistics from the clock
+ * synchronization.
+ *
+ * Since: 1.6
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstptpclock.h"
+
+#include "gstptp_private.h"
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#ifdef G_OS_WIN32
+#include <windows.h>
+#endif
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <gst/base/base.h>
+
+GST_DEBUG_CATEGORY_STATIC (ptp_debug);
+#define GST_CAT_DEFAULT (ptp_debug)
+
+/* IEEE 1588 7.7.3.1 */
+#define PTP_ANNOUNCE_RECEIPT_TIMEOUT 4
+
+/* Use a running average for calculating the mean path delay instead
+ * of just using the last measurement. Enabling this helps in unreliable
+ * networks, like wifi, with often changing delays
+ *
+ * Undef for following IEEE1588-2008 by the letter
+ */
+#define USE_RUNNING_AVERAGE_DELAY 1
+
+/* Filter out any measurements that are above a certain threshold compared to
+ * previous measurements. Enabling this helps filtering out outliers that
+ * happen fairly often in unreliable networks, like wifi.
+ *
+ * Undef for following IEEE1588-2008 by the letter
+ */
+#define USE_MEASUREMENT_FILTERING 1
+
+/* Select the first clock from which we capture a SYNC message as the master
+ * clock of the domain until we are ready to run the best master clock
+ * algorithm. This allows faster syncing but might mean a change of the master
+ * clock in the beginning. As all clocks in a domain are supposed to use the
+ * same time, this shouldn't be much of a problem.
+ *
+ * Undef for following IEEE1588-2008 by the letter
+ */
+#define USE_OPPORTUNISTIC_CLOCK_SELECTION 1
+
+/* Only consider SYNC messages for which we are allowed to send a DELAY_REQ
+ * afterwards. This allows better synchronization in networks with varying
+ * delays, as for every other SYNC message we would have to assume that it's
+ * the average of what we saw before. But that might be completely off
+ */
+#define USE_ONLY_SYNC_WITH_DELAY 1
+
+/* Filter out delay measurements that are too far away from the median of the
+ * last delay measurements, currently those that are more than 2 times as big.
+ * This increases accuracy a lot on wifi.
+ */
+#define USE_MEDIAN_PRE_FILTERING 1
+#define MEDIAN_PRE_FILTERING_WINDOW 9
+
+/* How many updates should be skipped at maximum when using USE_MEASUREMENT_FILTERING */
+#define MAX_SKIPPED_UPDATES 5
+
+typedef enum
+{
+  PTP_MESSAGE_TYPE_SYNC = 0x0,
+  PTP_MESSAGE_TYPE_DELAY_REQ = 0x1,
+  PTP_MESSAGE_TYPE_PDELAY_REQ = 0x2,
+  PTP_MESSAGE_TYPE_PDELAY_RESP = 0x3,
+  PTP_MESSAGE_TYPE_FOLLOW_UP = 0x8,
+  PTP_MESSAGE_TYPE_DELAY_RESP = 0x9,
+  PTP_MESSAGE_TYPE_PDELAY_RESP_FOLLOW_UP = 0xA,
+  PTP_MESSAGE_TYPE_ANNOUNCE = 0xB,
+  PTP_MESSAGE_TYPE_SIGNALING = 0xC,
+  PTP_MESSAGE_TYPE_MANAGEMENT = 0xD
+} PtpMessageType;
+
+typedef struct
+{
+  guint64 seconds_field;        /* 48 bits valid */
+  guint32 nanoseconds_field;
+} PtpTimestamp;
+
+#define PTP_TIMESTAMP_TO_GST_CLOCK_TIME(ptp) (ptp.seconds_field * GST_SECOND + ptp.nanoseconds_field)
+#define GST_CLOCK_TIME_TO_PTP_TIMESTAMP_SECONDS(gst) (((GstClockTime) gst) / GST_SECOND)
+#define GST_CLOCK_TIME_TO_PTP_TIMESTAMP_NANOSECONDS(gst) (((GstClockTime) gst) % GST_SECOND)
+
+typedef struct
+{
+  guint64 clock_identity;
+  guint16 port_number;
+} PtpClockIdentity;
+
+static gint
+compare_clock_identity (const PtpClockIdentity * a, const PtpClockIdentity * b)
+{
+  if (a->clock_identity < b->clock_identity)
+    return -1;
+  else if (a->clock_identity > b->clock_identity)
+    return 1;
+
+  if (a->port_number < b->port_number)
+    return -1;
+  else if (a->port_number > b->port_number)
+    return 1;
+
+  return 0;
+}
+
+typedef struct
+{
+  guint8 clock_class;
+  guint8 clock_accuracy;
+  guint16 offset_scaled_log_variance;
+} PtpClockQuality;
+
+typedef struct
+{
+  guint8 transport_specific;
+  PtpMessageType message_type;
+  /* guint8 reserved; */
+  guint8 version_ptp;
+  guint16 message_length;
+  guint8 domain_number;
+  /* guint8 reserved; */
+  guint16 flag_field;
+  gint64 correction_field;      /* 48.16 fixed point nanoseconds */
+  /* guint32 reserved; */
+  PtpClockIdentity source_port_identity;
+  guint16 sequence_id;
+  guint8 control_field;
+  gint8 log_message_interval;
+
+  union
+  {
+    struct
+    {
+      PtpTimestamp origin_timestamp;
+      gint16 current_utc_offset;
+      /* guint8 reserved; */
+      guint8 grandmaster_priority_1;
+      PtpClockQuality grandmaster_clock_quality;
+      guint8 grandmaster_priority_2;
+      guint64 grandmaster_identity;
+      guint16 steps_removed;
+      guint8 time_source;
+    } announce;
+
+    struct
+    {
+      PtpTimestamp origin_timestamp;
+    } sync;
+
+    struct
+    {
+      PtpTimestamp precise_origin_timestamp;
+    } follow_up;
+
+    struct
+    {
+      PtpTimestamp origin_timestamp;
+    } delay_req;
+
+    struct
+    {
+      PtpTimestamp receive_timestamp;
+      PtpClockIdentity requesting_port_identity;
+    } delay_resp;
+
+  } message_specific;
+} PtpMessage;
+
+static GMutex ptp_lock;
+static GCond ptp_cond;
+static gboolean initted = FALSE;
+#ifdef HAVE_PTP
+static gboolean supported = TRUE;
+#else
+static gboolean supported = FALSE;
+#endif
+static GPid ptp_helper_pid;
+static GThread *ptp_helper_thread;
+static GMainContext *main_context;
+static GMainLoop *main_loop;
+static GIOChannel *stdin_channel, *stdout_channel;
+static GRand *delay_req_rand;
+static GstClock *observation_system_clock;
+static PtpClockIdentity ptp_clock_id = { GST_PTP_CLOCK_ID_NONE, 0 };
+
+typedef struct
+{
+  GstClockTime receive_time;
+
+  PtpClockIdentity master_clock_identity;
+
+  guint8 grandmaster_priority_1;
+  PtpClockQuality grandmaster_clock_quality;
+  guint8 grandmaster_priority_2;
+  guint64 grandmaster_identity;
+  guint16 steps_removed;
+  guint8 time_source;
+
+  guint16 sequence_id;
+} PtpAnnounceMessage;
+
+typedef struct
+{
+  PtpClockIdentity master_clock_identity;
+
+  GstClockTime announce_interval;       /* last interval we received */
+  GQueue announce_messages;
+} PtpAnnounceSender;
+
+typedef struct
+{
+  guint domain;
+  PtpClockIdentity master_clock_identity;
+
+  guint16 sync_seqnum;
+  GstClockTime sync_recv_time_local;    /* t2 */
+  GstClockTime sync_send_time_remote;   /* t1, might be -1 if FOLLOW_UP pending */
+  GstClockTime follow_up_recv_time_local;
+
+  GSource *timeout_source;
+  guint16 delay_req_seqnum;
+  GstClockTime delay_req_send_time_local;       /* t3, -1 if we wait for FOLLOW_UP */
+  GstClockTime delay_req_recv_time_remote;      /* t4, -1 if we wait */
+  GstClockTime delay_resp_recv_time_local;
+
+  gint64 correction_field_sync; /* sum of the correction fields of SYNC/FOLLOW_UP */
+  gint64 correction_field_delay;        /* sum of the correction fields of DELAY_RESP */
+} PtpPendingSync;
+
+static void
+ptp_pending_sync_free (PtpPendingSync * sync)
+{
+  if (sync->timeout_source)
+    g_source_destroy (sync->timeout_source);
+  g_free (sync);
+}
+
+typedef struct
+{
+  guint domain;
+
+  GstClockTime last_ptp_time;
+  GstClockTime last_local_time;
+  gint skipped_updates;
+
+  /* Used for selecting the master/grandmaster */
+  GList *announce_senders;
+
+  /* Last selected master clock */
+  gboolean have_master_clock;
+  PtpClockIdentity master_clock_identity;
+  guint64 grandmaster_identity;
+
+  /* Last SYNC or FOLLOW_UP timestamp we received */
+  GstClockTime last_ptp_sync_time;
+  GstClockTime sync_interval;
+
+  GstClockTime mean_path_delay;
+  GstClockTime last_delay_req, min_delay_req_interval;
+  guint16 last_delay_req_seqnum;
+
+  GstClockTime last_path_delays[MEDIAN_PRE_FILTERING_WINDOW];
+  gint last_path_delays_missing;
+
+  GQueue pending_syncs;
+
+  GstClock *domain_clock;
+} PtpDomainData;
+
+static GList *domain_data;
+static GMutex domain_clocks_lock;
+static GList *domain_clocks;
+
+/* Protected by PTP lock */
+static void emit_ptp_statistics (guint8 domain, const GstStructure * stats);
+static GHookList domain_stats_hooks;
+static gint domain_stats_n_hooks;
+static gboolean domain_stats_hooks_initted = FALSE;
+
+/* Converts log2 seconds to GstClockTime */
+static GstClockTime
+log2_to_clock_time (gint l)
+{
+  if (l < 0)
+    return GST_SECOND >> (-l);
+  else
+    return GST_SECOND << l;
+}
+
+static void
+dump_ptp_message (PtpMessage * msg)
+{
+  GST_TRACE ("PTP message:");
+  GST_TRACE ("\ttransport_specific: %u", msg->transport_specific);
+  GST_TRACE ("\tmessage_type: 0x%01x", msg->message_type);
+  GST_TRACE ("\tversion_ptp: %u", msg->version_ptp);
+  GST_TRACE ("\tmessage_length: %u", msg->message_length);
+  GST_TRACE ("\tdomain_number: %u", msg->domain_number);
+  GST_TRACE ("\tflag_field: 0x%04x", msg->flag_field);
+  GST_TRACE ("\tcorrection_field: %" G_GINT64_FORMAT ".%03u",
+      (msg->correction_field / 65536),
+      (guint) ((msg->correction_field & 0xffff) * 1000) / 65536);
+  GST_TRACE ("\tsource_port_identity: 0x%016" G_GINT64_MODIFIER "x %u",
+      msg->source_port_identity.clock_identity,
+      msg->source_port_identity.port_number);
+  GST_TRACE ("\tsequence_id: %u", msg->sequence_id);
+  GST_TRACE ("\tcontrol_field: 0x%02x", msg->control_field);
+  GST_TRACE ("\tmessage_interval: %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (log2_to_clock_time (msg->log_message_interval)));
+
+  switch (msg->message_type) {
+    case PTP_MESSAGE_TYPE_ANNOUNCE:
+      GST_TRACE ("\tANNOUNCE:");
+      GST_TRACE ("\t\torigin_timestamp: %" G_GUINT64_FORMAT ".%09u",
+          msg->message_specific.announce.origin_timestamp.seconds_field,
+          msg->message_specific.announce.origin_timestamp.nanoseconds_field);
+      GST_TRACE ("\t\tcurrent_utc_offset: %d",
+          msg->message_specific.announce.current_utc_offset);
+      GST_TRACE ("\t\tgrandmaster_priority_1: %u",
+          msg->message_specific.announce.grandmaster_priority_1);
+      GST_TRACE ("\t\tgrandmaster_clock_quality: 0x%02x 0x%02x %u",
+          msg->message_specific.announce.grandmaster_clock_quality.clock_class,
+          msg->message_specific.announce.
+          grandmaster_clock_quality.clock_accuracy,
+          msg->message_specific.announce.
+          grandmaster_clock_quality.offset_scaled_log_variance);
+      GST_TRACE ("\t\tgrandmaster_priority_2: %u",
+          msg->message_specific.announce.grandmaster_priority_2);
+      GST_TRACE ("\t\tgrandmaster_identity: 0x%016" G_GINT64_MODIFIER "x",
+          msg->message_specific.announce.grandmaster_identity);
+      GST_TRACE ("\t\tsteps_removed: %u",
+          msg->message_specific.announce.steps_removed);
+      GST_TRACE ("\t\ttime_source: 0x%02x",
+          msg->message_specific.announce.time_source);
+      break;
+    case PTP_MESSAGE_TYPE_SYNC:
+      GST_TRACE ("\tSYNC:");
+      GST_TRACE ("\t\torigin_timestamp: %" G_GUINT64_FORMAT ".%09u",
+          msg->message_specific.sync.origin_timestamp.seconds_field,
+          msg->message_specific.sync.origin_timestamp.nanoseconds_field);
+      break;
+    case PTP_MESSAGE_TYPE_FOLLOW_UP:
+      GST_TRACE ("\tFOLLOW_UP:");
+      GST_TRACE ("\t\tprecise_origin_timestamp: %" G_GUINT64_FORMAT ".%09u",
+          msg->message_specific.follow_up.
+          precise_origin_timestamp.seconds_field,
+          msg->message_specific.follow_up.
+          precise_origin_timestamp.nanoseconds_field);
+      break;
+    case PTP_MESSAGE_TYPE_DELAY_REQ:
+      GST_TRACE ("\tDELAY_REQ:");
+      GST_TRACE ("\t\torigin_timestamp: %" G_GUINT64_FORMAT ".%09u",
+          msg->message_specific.delay_req.origin_timestamp.seconds_field,
+          msg->message_specific.delay_req.origin_timestamp.nanoseconds_field);
+      break;
+    case PTP_MESSAGE_TYPE_DELAY_RESP:
+      GST_TRACE ("\tDELAY_RESP:");
+      GST_TRACE ("\t\treceive_timestamp: %" G_GUINT64_FORMAT ".%09u",
+          msg->message_specific.delay_resp.receive_timestamp.seconds_field,
+          msg->message_specific.delay_resp.receive_timestamp.nanoseconds_field);
+      GST_TRACE ("\t\trequesting_port_identity: 0x%016" G_GINT64_MODIFIER
+          "x %u",
+          msg->message_specific.delay_resp.
+          requesting_port_identity.clock_identity,
+          msg->message_specific.delay_resp.
+          requesting_port_identity.port_number);
+      break;
+    default:
+      break;
+  }
+  GST_TRACE (" ");
+}
+
+/* IEEE 1588-2008 5.3.3 */
+static gboolean
+parse_ptp_timestamp (PtpTimestamp * timestamp, GstByteReader * reader)
+{
+  g_return_val_if_fail (gst_byte_reader_get_remaining (reader) >= 10, FALSE);
+
+  timestamp->seconds_field =
+      (((guint64) gst_byte_reader_get_uint32_be_unchecked (reader)) << 16) |
+      gst_byte_reader_get_uint16_be_unchecked (reader);
+  timestamp->nanoseconds_field =
+      gst_byte_reader_get_uint32_be_unchecked (reader);
+
+  if (timestamp->nanoseconds_field >= 1000000000)
+    return FALSE;
+
+  return TRUE;
+}
+
+/* IEEE 1588-2008 13.3 */
+static gboolean
+parse_ptp_message_header (PtpMessage * msg, GstByteReader * reader)
+{
+  guint8 b;
+
+  g_return_val_if_fail (gst_byte_reader_get_remaining (reader) >= 34, FALSE);
+
+  b = gst_byte_reader_get_uint8_unchecked (reader);
+  msg->transport_specific = b >> 4;
+  msg->message_type = b & 0x0f;
+
+  b = gst_byte_reader_get_uint8_unchecked (reader);
+  msg->version_ptp = b & 0x0f;
+  if (msg->version_ptp != 2) {
+    GST_WARNING ("Unsupported PTP message version (%u != 2)", msg->version_ptp);
+    return FALSE;
+  }
+
+  msg->message_length = gst_byte_reader_get_uint16_be_unchecked (reader);
+  if (gst_byte_reader_get_remaining (reader) + 4 < msg->message_length) {
+    GST_WARNING ("Not enough data (%u < %u)",
+        gst_byte_reader_get_remaining (reader) + 4, msg->message_length);
+    return FALSE;
+  }
+
+  msg->domain_number = gst_byte_reader_get_uint8_unchecked (reader);
+  gst_byte_reader_skip_unchecked (reader, 1);
+
+  msg->flag_field = gst_byte_reader_get_uint16_be_unchecked (reader);
+  msg->correction_field = gst_byte_reader_get_uint64_be_unchecked (reader);
+  gst_byte_reader_skip_unchecked (reader, 4);
+
+  msg->source_port_identity.clock_identity =
+      gst_byte_reader_get_uint64_be_unchecked (reader);
+  msg->source_port_identity.port_number =
+      gst_byte_reader_get_uint16_be_unchecked (reader);
+
+  msg->sequence_id = gst_byte_reader_get_uint16_be_unchecked (reader);
+  msg->control_field = gst_byte_reader_get_uint8_unchecked (reader);
+  msg->log_message_interval = gst_byte_reader_get_uint8_unchecked (reader);
+
+  return TRUE;
+}
+
+/* IEEE 1588-2008 13.5 */
+static gboolean
+parse_ptp_message_announce (PtpMessage * msg, GstByteReader * reader)
+{
+  g_return_val_if_fail (msg->message_type == PTP_MESSAGE_TYPE_ANNOUNCE, FALSE);
+
+  if (gst_byte_reader_get_remaining (reader) < 20)
+    return FALSE;
+
+  if (!parse_ptp_timestamp (&msg->message_specific.announce.origin_timestamp,
+          reader))
+    return FALSE;
+
+  msg->message_specific.announce.current_utc_offset =
+      gst_byte_reader_get_uint16_be_unchecked (reader);
+  gst_byte_reader_skip_unchecked (reader, 1);
+
+  msg->message_specific.announce.grandmaster_priority_1 =
+      gst_byte_reader_get_uint8_unchecked (reader);
+  msg->message_specific.announce.grandmaster_clock_quality.clock_class =
+      gst_byte_reader_get_uint8_unchecked (reader);
+  msg->message_specific.announce.grandmaster_clock_quality.clock_accuracy =
+      gst_byte_reader_get_uint8_unchecked (reader);
+  msg->message_specific.announce.
+      grandmaster_clock_quality.offset_scaled_log_variance =
+      gst_byte_reader_get_uint16_be_unchecked (reader);
+  msg->message_specific.announce.grandmaster_priority_2 =
+      gst_byte_reader_get_uint8_unchecked (reader);
+  msg->message_specific.announce.grandmaster_identity =
+      gst_byte_reader_get_uint64_be_unchecked (reader);
+  msg->message_specific.announce.steps_removed =
+      gst_byte_reader_get_uint16_be_unchecked (reader);
+  msg->message_specific.announce.time_source =
+      gst_byte_reader_get_uint8_unchecked (reader);
+
+  return TRUE;
+}
+
+/* IEEE 1588-2008 13.6 */
+static gboolean
+parse_ptp_message_sync (PtpMessage * msg, GstByteReader * reader)
+{
+  g_return_val_if_fail (msg->message_type == PTP_MESSAGE_TYPE_SYNC, FALSE);
+
+  if (gst_byte_reader_get_remaining (reader) < 10)
+    return FALSE;
+
+  if (!parse_ptp_timestamp (&msg->message_specific.sync.origin_timestamp,
+          reader))
+    return FALSE;
+
+  return TRUE;
+}
+
+/* IEEE 1588-2008 13.6 */
+static gboolean
+parse_ptp_message_delay_req (PtpMessage * msg, GstByteReader * reader)
+{
+  g_return_val_if_fail (msg->message_type == PTP_MESSAGE_TYPE_DELAY_REQ, FALSE);
+
+  if (gst_byte_reader_get_remaining (reader) < 10)
+    return FALSE;
+
+  if (!parse_ptp_timestamp (&msg->message_specific.delay_req.origin_timestamp,
+          reader))
+    return FALSE;
+
+  return TRUE;
+}
+
+/* IEEE 1588-2008 13.7 */
+static gboolean
+parse_ptp_message_follow_up (PtpMessage * msg, GstByteReader * reader)
+{
+  g_return_val_if_fail (msg->message_type == PTP_MESSAGE_TYPE_FOLLOW_UP, FALSE);
+
+  if (gst_byte_reader_get_remaining (reader) < 10)
+    return FALSE;
+
+  if (!parse_ptp_timestamp (&msg->message_specific.
+          follow_up.precise_origin_timestamp, reader))
+    return FALSE;
+
+  return TRUE;
+}
+
+/* IEEE 1588-2008 13.8 */
+static gboolean
+parse_ptp_message_delay_resp (PtpMessage * msg, GstByteReader * reader)
+{
+  g_return_val_if_fail (msg->message_type == PTP_MESSAGE_TYPE_DELAY_RESP,
+      FALSE);
+
+  if (gst_byte_reader_get_remaining (reader) < 20)
+    return FALSE;
+
+  if (!parse_ptp_timestamp (&msg->message_specific.delay_resp.receive_timestamp,
+          reader))
+    return FALSE;
+
+  msg->message_specific.delay_resp.requesting_port_identity.clock_identity =
+      gst_byte_reader_get_uint64_be_unchecked (reader);
+  msg->message_specific.delay_resp.requesting_port_identity.port_number =
+      gst_byte_reader_get_uint16_be_unchecked (reader);
+
+  return TRUE;
+}
+
+static gboolean
+parse_ptp_message (PtpMessage * msg, const guint8 * data, gsize size)
+{
+  GstByteReader reader;
+  gboolean ret = FALSE;
+
+  gst_byte_reader_init (&reader, data, size);
+
+  if (!parse_ptp_message_header (msg, &reader)) {
+    GST_WARNING ("Failed to parse PTP message header");
+    return FALSE;
+  }
+
+  switch (msg->message_type) {
+    case PTP_MESSAGE_TYPE_SYNC:
+      ret = parse_ptp_message_sync (msg, &reader);
+      break;
+    case PTP_MESSAGE_TYPE_FOLLOW_UP:
+      ret = parse_ptp_message_follow_up (msg, &reader);
+      break;
+    case PTP_MESSAGE_TYPE_DELAY_REQ:
+      ret = parse_ptp_message_delay_req (msg, &reader);
+      break;
+    case PTP_MESSAGE_TYPE_DELAY_RESP:
+      ret = parse_ptp_message_delay_resp (msg, &reader);
+      break;
+    case PTP_MESSAGE_TYPE_ANNOUNCE:
+      ret = parse_ptp_message_announce (msg, &reader);
+      break;
+    default:
+      /* ignore for now */
+      break;
+  }
+
+  return ret;
+}
+
+static gint
+compare_announce_message (const PtpAnnounceMessage * a,
+    const PtpAnnounceMessage * b)
+{
+  /* IEEE 1588 Figure 27 */
+  if (a->grandmaster_identity == b->grandmaster_identity) {
+    if (a->steps_removed + 1 < b->steps_removed)
+      return -1;
+    else if (a->steps_removed > b->steps_removed + 1)
+      return 1;
+
+    /* Error cases are filtered out earlier */
+    if (a->steps_removed < b->steps_removed)
+      return -1;
+    else if (a->steps_removed > b->steps_removed)
+      return 1;
+
+    /* Error cases are filtered out earlier */
+    if (a->master_clock_identity.clock_identity <
+        b->master_clock_identity.clock_identity)
+      return -1;
+    else if (a->master_clock_identity.clock_identity >
+        b->master_clock_identity.clock_identity)
+      return 1;
+
+    /* Error cases are filtered out earlier */
+    if (a->master_clock_identity.port_number <
+        b->master_clock_identity.port_number)
+      return -1;
+    else if (a->master_clock_identity.port_number >
+        b->master_clock_identity.port_number)
+      return 1;
+    else
+      g_assert_not_reached ();
+
+    return 0;
+  }
+
+  if (a->grandmaster_priority_1 < b->grandmaster_priority_1)
+    return -1;
+  else if (a->grandmaster_priority_1 > b->grandmaster_priority_1)
+    return 1;
+
+  if (a->grandmaster_clock_quality.clock_class <
+      b->grandmaster_clock_quality.clock_class)
+    return -1;
+  else if (a->grandmaster_clock_quality.clock_class >
+      b->grandmaster_clock_quality.clock_class)
+    return 1;
+
+  if (a->grandmaster_clock_quality.clock_accuracy <
+      b->grandmaster_clock_quality.clock_accuracy)
+    return -1;
+  else if (a->grandmaster_clock_quality.clock_accuracy >
+      b->grandmaster_clock_quality.clock_accuracy)
+    return 1;
+
+  if (a->grandmaster_clock_quality.offset_scaled_log_variance <
+      b->grandmaster_clock_quality.offset_scaled_log_variance)
+    return -1;
+  else if (a->grandmaster_clock_quality.offset_scaled_log_variance >
+      b->grandmaster_clock_quality.offset_scaled_log_variance)
+    return 1;
+
+  if (a->grandmaster_priority_2 < b->grandmaster_priority_2)
+    return -1;
+  else if (a->grandmaster_priority_2 > b->grandmaster_priority_2)
+    return 1;
+
+  if (a->grandmaster_identity < b->grandmaster_identity)
+    return -1;
+  else if (a->grandmaster_identity > b->grandmaster_identity)
+    return 1;
+  else
+    g_assert_not_reached ();
+
+  return 0;
+}
+
+static void
+select_best_master_clock (PtpDomainData * domain, GstClockTime now)
+{
+  GList *qualified_messages = NULL;
+  GList *l, *m;
+  PtpAnnounceMessage *best = NULL;
+
+  /* IEEE 1588 9.3.2.5 */
+  for (l = domain->announce_senders; l; l = l->next) {
+    PtpAnnounceSender *sender = l->data;
+    GstClockTime window = 4 * sender->announce_interval;
+    gint count = 0;
+
+    for (m = sender->announce_messages.head; m; m = m->next) {
+      PtpAnnounceMessage *msg = m->data;
+
+      if (now - msg->receive_time <= window)
+        count++;
+    }
+
+    /* Only include the newest message of announce senders that had at least 2
+     * announce messages in the last 4 announce intervals. Which also means
+     * that we wait at least 4 announce intervals before we select a master
+     * clock. Until then we just report based on the newest SYNC we received
+     */
+    if (count >= 2) {
+      qualified_messages =
+          g_list_prepend (qualified_messages,
+          g_queue_peek_tail (&sender->announce_messages));
+    }
+  }
+
+  if (!qualified_messages) {
+    GST_DEBUG
+        ("No qualified announce messages for domain %u, can't select a master clock",
+        domain->domain);
+    domain->have_master_clock = FALSE;
+    return;
+  }
+
+  for (l = qualified_messages; l; l = l->next) {
+    PtpAnnounceMessage *msg = l->data;
+
+    if (!best || compare_announce_message (msg, best) < 0)
+      best = msg;
+  }
+
+  if (domain->have_master_clock
+      && compare_clock_identity (&domain->master_clock_identity,
+          &best->master_clock_identity) == 0) {
+    GST_DEBUG ("Master clock in domain %u did not change", domain->domain);
+  } else {
+    GST_DEBUG ("Selected master clock for domain %u: 0x%016" G_GINT64_MODIFIER
+        "x %u with grandmaster clock 0x%016" G_GINT64_MODIFIER "x",
+        domain->domain, best->master_clock_identity.clock_identity,
+        best->master_clock_identity.port_number, best->grandmaster_identity);
+
+    domain->have_master_clock = TRUE;
+    domain->grandmaster_identity = best->grandmaster_identity;
+
+    /* Opportunistic master clock selection likely gave us the same master
+     * clock before, no need to reset all statistics */
+    if (compare_clock_identity (&domain->master_clock_identity,
+            &best->master_clock_identity) != 0) {
+      memcpy (&domain->master_clock_identity, &best->master_clock_identity,
+          sizeof (PtpClockIdentity));
+      domain->mean_path_delay = 0;
+      domain->last_delay_req = 0;
+      domain->last_path_delays_missing = 9;
+      domain->min_delay_req_interval = 0;
+      domain->sync_interval = 0;
+      domain->last_ptp_sync_time = 0;
+      domain->skipped_updates = 0;
+      g_queue_foreach (&domain->pending_syncs, (GFunc) ptp_pending_sync_free,
+          NULL);
+      g_queue_clear (&domain->pending_syncs);
+    }
+
+    if (g_atomic_int_get (&domain_stats_n_hooks)) {
+      GstStructure *stats =
+          gst_structure_new (GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED,
+          "domain", G_TYPE_UINT, domain->domain,
+          "master-clock-id", G_TYPE_UINT64,
+          domain->master_clock_identity.clock_identity,
+          "master-clock-port", G_TYPE_UINT,
+          domain->master_clock_identity.port_number,
+          "grandmaster-clock-id", G_TYPE_UINT64, domain->grandmaster_identity,
+          NULL);
+      emit_ptp_statistics (domain->domain, stats);
+      gst_structure_free (stats);
+    }
+  }
+}
+
+static void
+handle_announce_message (PtpMessage * msg, GstClockTime receive_time)
+{
+  GList *l;
+  PtpDomainData *domain = NULL;
+  PtpAnnounceSender *sender = NULL;
+  PtpAnnounceMessage *announce;
+
+  /* IEEE1588 9.3.2.2 e)
+   * Don't consider messages with the alternate master flag set
+   */
+  if ((msg->flag_field & 0x0100))
+    return;
+
+  /* IEEE 1588 9.3.2.5 d)
+   * Don't consider announce messages with steps_removed>=255
+   */
+  if (msg->message_specific.announce.steps_removed >= 255)
+    return;
+
+  for (l = domain_data; l; l = l->next) {
+    PtpDomainData *tmp = l->data;
+
+    if (tmp->domain == msg->domain_number) {
+      domain = tmp;
+      break;
+    }
+  }
+
+  if (!domain) {
+    gchar *clock_name;
+
+    domain = g_new0 (PtpDomainData, 1);
+    domain->domain = msg->domain_number;
+    clock_name = g_strdup_printf ("ptp-clock-%u", domain->domain);
+    domain->domain_clock =
+        g_object_new (GST_TYPE_SYSTEM_CLOCK, "name", clock_name, NULL);
+    g_free (clock_name);
+    g_queue_init (&domain->pending_syncs);
+    domain->last_path_delays_missing = 9;
+    domain_data = g_list_prepend (domain_data, domain);
+
+    g_mutex_lock (&domain_clocks_lock);
+    domain_clocks = g_list_prepend (domain_clocks, domain);
+    g_mutex_unlock (&domain_clocks_lock);
+
+    if (g_atomic_int_get (&domain_stats_n_hooks)) {
+      GstStructure *stats =
+          gst_structure_new (GST_PTP_STATISTICS_NEW_DOMAIN_FOUND, "domain",
+          G_TYPE_UINT, domain->domain, "clock", GST_TYPE_CLOCK,
+          domain->domain_clock, NULL);
+      emit_ptp_statistics (domain->domain, stats);
+      gst_structure_free (stats);
+    }
+  }
+
+  for (l = domain->announce_senders; l; l = l->next) {
+    PtpAnnounceSender *tmp = l->data;
+
+    if (compare_clock_identity (&tmp->master_clock_identity,
+            &msg->source_port_identity) == 0) {
+      sender = tmp;
+      break;
+    }
+  }
+
+  if (!sender) {
+    sender = g_new0 (PtpAnnounceSender, 1);
+
+    memcpy (&sender->master_clock_identity, &msg->source_port_identity,
+        sizeof (PtpClockIdentity));
+    g_queue_init (&sender->announce_messages);
+    domain->announce_senders =
+        g_list_prepend (domain->announce_senders, sender);
+  }
+
+  for (l = sender->announce_messages.head; l; l = l->next) {
+    PtpAnnounceMessage *tmp = l->data;
+
+    /* IEEE 1588 9.3.2.5 c)
+     * Don't consider identical messages, i.e. duplicates
+     */
+    if (tmp->sequence_id == msg->sequence_id)
+      return;
+  }
+
+  sender->announce_interval = log2_to_clock_time (msg->log_message_interval);
+
+  announce = g_new0 (PtpAnnounceMessage, 1);
+  announce->receive_time = receive_time;
+  announce->sequence_id = msg->sequence_id;
+  memcpy (&announce->master_clock_identity, &msg->source_port_identity,
+      sizeof (PtpClockIdentity));
+  announce->grandmaster_identity =
+      msg->message_specific.announce.grandmaster_identity;
+  announce->grandmaster_priority_1 =
+      msg->message_specific.announce.grandmaster_priority_1;
+  announce->grandmaster_clock_quality.clock_class =
+      msg->message_specific.announce.grandmaster_clock_quality.clock_class;
+  announce->grandmaster_clock_quality.clock_accuracy =
+      msg->message_specific.announce.grandmaster_clock_quality.clock_accuracy;
+  announce->grandmaster_clock_quality.offset_scaled_log_variance =
+      msg->message_specific.announce.
+      grandmaster_clock_quality.offset_scaled_log_variance;
+  announce->grandmaster_priority_2 =
+      msg->message_specific.announce.grandmaster_priority_2;
+  announce->steps_removed = msg->message_specific.announce.steps_removed;
+  announce->time_source = msg->message_specific.announce.time_source;
+  g_queue_push_tail (&sender->announce_messages, announce);
+
+  select_best_master_clock (domain, receive_time);
+}
+
+static gboolean
+send_delay_req_timeout (PtpPendingSync * sync)
+{
+  StdIOHeader header = { 0, };
+  guint8 delay_req[44];
+  GstByteWriter writer;
+  GIOStatus status;
+  gsize written;
+  GError *err = NULL;
+
+  header.type = TYPE_EVENT;
+  header.size = 44;
+
+  gst_byte_writer_init_with_data (&writer, delay_req, 44, FALSE);
+  gst_byte_writer_put_uint8_unchecked (&writer, PTP_MESSAGE_TYPE_DELAY_REQ);
+  gst_byte_writer_put_uint8_unchecked (&writer, 2);
+  gst_byte_writer_put_uint16_be_unchecked (&writer, 44);
+  gst_byte_writer_put_uint8_unchecked (&writer, sync->domain);
+  gst_byte_writer_put_uint8_unchecked (&writer, 0);
+  gst_byte_writer_put_uint16_be_unchecked (&writer, 0);
+  gst_byte_writer_put_uint64_be_unchecked (&writer, 0);
+  gst_byte_writer_put_uint32_be_unchecked (&writer, 0);
+  gst_byte_writer_put_uint64_be_unchecked (&writer,
+      ptp_clock_id.clock_identity);
+  gst_byte_writer_put_uint16_be_unchecked (&writer, ptp_clock_id.port_number);
+  gst_byte_writer_put_uint16_be_unchecked (&writer, sync->delay_req_seqnum);
+  gst_byte_writer_put_uint8_unchecked (&writer, 0x01);
+  gst_byte_writer_put_uint8_unchecked (&writer, 0x7f);
+  gst_byte_writer_put_uint64_be_unchecked (&writer, 0);
+  gst_byte_writer_put_uint16_be_unchecked (&writer, 0);
+
+  status =
+      g_io_channel_write_chars (stdout_channel, (gchar *) & header,
+      sizeof (header), &written, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_warning ("Failed to write to stdout: %s", err->message);
+    return G_SOURCE_REMOVE;
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdout");
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_warning ("Unexpected stdout write status: %d", status);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (written != sizeof (header)) {
+    g_warning ("Unexpected write size: %" G_GSIZE_FORMAT, written);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  }
+
+  sync->delay_req_send_time_local =
+      gst_clock_get_time (observation_system_clock);
+
+  status =
+      g_io_channel_write_chars (stdout_channel,
+      (const gchar *) delay_req, 44, &written, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    g_warning ("Failed to write to stdout: %s", err->message);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status == G_IO_STATUS_EOF) {
+    g_message ("EOF on stdout");
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status != G_IO_STATUS_NORMAL) {
+    g_warning ("Unexpected stdout write status: %d", status);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (written != 44) {
+    g_warning ("Unexpected write size: %" G_GSIZE_FORMAT, written);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  }
+
+  return G_SOURCE_REMOVE;
+}
+
+static gboolean
+send_delay_req (PtpDomainData * domain, PtpPendingSync * sync)
+{
+  GstClockTime now = gst_clock_get_time (observation_system_clock);
+  guint timeout;
+  GSource *timeout_source;
+
+  if (domain->last_delay_req != 0
+      && domain->last_delay_req + domain->min_delay_req_interval > now)
+    return FALSE;
+
+  domain->last_delay_req = now;
+  sync->delay_req_seqnum = domain->last_delay_req_seqnum++;
+
+  /* IEEE 1588 9.5.11.2 */
+  if (domain->last_delay_req == 0 || domain->min_delay_req_interval == 0)
+    timeout = 0;
+  else
+    timeout =
+        g_rand_int_range (delay_req_rand, 0,
+        (domain->min_delay_req_interval * 2) / GST_MSECOND);
+
+  sync->timeout_source = timeout_source = g_timeout_source_new (timeout);
+  g_source_set_priority (timeout_source, G_PRIORITY_DEFAULT);
+  g_source_set_callback (timeout_source, (GSourceFunc) send_delay_req_timeout,
+      sync, NULL);
+  g_source_attach (timeout_source, main_context);
+
+  return TRUE;
+}
+
+/* Filtering of outliers for RTT and time calculations inspired
+ * by the code from gstnetclientclock.c
+ */
+static void
+update_ptp_time (PtpDomainData * domain, PtpPendingSync * sync)
+{
+  GstClockTime internal_time, external_time, rate_num, rate_den;
+  GstClockTime corrected_ptp_time, corrected_local_time;
+  gdouble r_squared = 0.0;
+  gboolean synced;
+  GstClockTimeDiff discont = 0;
+  GstClockTime estimated_ptp_time = GST_CLOCK_TIME_NONE;
+#ifdef USE_MEASUREMENT_FILTERING
+  GstClockTime orig_internal_time, orig_external_time, orig_rate_num,
+      orig_rate_den;
+  GstClockTime new_estimated_ptp_time;
+  GstClockTime max_discont, estimated_ptp_time_min, estimated_ptp_time_max;
+  gboolean now_synced;
+#endif
+
+#ifdef USE_ONLY_SYNC_WITH_DELAY
+  GstClockTime mean_path_delay;
+
+  if (sync->delay_req_send_time_local == GST_CLOCK_TIME_NONE)
+    return;
+
+  /* IEEE 1588 11.3 */
+  mean_path_delay =
+      (sync->delay_req_recv_time_remote - sync->sync_send_time_remote +
+      sync->sync_recv_time_local - sync->delay_req_send_time_local -
+      (sync->correction_field_sync + sync->correction_field_delay +
+          32768) / 65536) / 2;
+#endif
+
+  /* IEEE 1588 11.2 */
+  corrected_ptp_time =
+      sync->sync_send_time_remote +
+      (sync->correction_field_sync + 32768) / 65536;
+
+#ifdef USE_ONLY_SYNC_WITH_DELAY
+  corrected_local_time = sync->sync_recv_time_local - mean_path_delay;
+#else
+  corrected_local_time = sync->sync_recv_time_local - domain->mean_path_delay;
+#endif
+
+#ifdef USE_MEASUREMENT_FILTERING
+  /* We check this here and when updating the mean path delay, because
+   * we can get here without a delay response too */
+  if (sync->follow_up_recv_time_local != GST_CLOCK_TIME_NONE
+      && sync->follow_up_recv_time_local >
+      sync->sync_recv_time_local + 2 * domain->mean_path_delay) {
+    GST_WARNING ("Sync-follow-up delay for domain %u too big: %" GST_TIME_FORMAT
+        " > 2 * %" GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (sync->follow_up_recv_time_local),
+        GST_TIME_ARGS (domain->mean_path_delay));
+    synced = FALSE;
+    gst_clock_get_calibration (GST_CLOCK_CAST (domain->domain_clock),
+        &internal_time, &external_time, &rate_num, &rate_den);
+    goto out;
+  }
+#endif
+
+  /* Set an initial local-remote relation */
+  if (domain->last_ptp_time == 0)
+    gst_clock_set_calibration (domain->domain_clock, corrected_local_time,
+        corrected_ptp_time, 1, 1);
+
+#ifdef USE_MEASUREMENT_FILTERING
+  /* Check if the corrected PTP time is +/- 3/4 RTT around what we would
+   * estimate with our present knowledge about the clock
+   */
+  /* Store what the clock produced as 'now' before this update */
+  gst_clock_get_calibration (GST_CLOCK_CAST (domain->domain_clock),
+      &orig_internal_time, &orig_external_time, &orig_rate_num, &orig_rate_den);
+  internal_time = orig_internal_time;
+  external_time = orig_external_time;
+  rate_num = orig_rate_num;
+  rate_den = orig_rate_den;
+
+  /* 3/4 RTT window around the estimation */
+  max_discont = domain->mean_path_delay * 3 / 2;
+
+  /* Check if the estimated sync time is inside our window */
+  estimated_ptp_time_min = corrected_local_time - max_discont;
+  estimated_ptp_time_min =
+      gst_clock_adjust_with_calibration (GST_CLOCK_CAST (domain->domain_clock),
+      estimated_ptp_time_min, internal_time, external_time, rate_num, rate_den);
+  estimated_ptp_time_max = corrected_local_time + max_discont;
+  estimated_ptp_time_max =
+      gst_clock_adjust_with_calibration (GST_CLOCK_CAST (domain->domain_clock),
+      estimated_ptp_time_max, internal_time, external_time, rate_num, rate_den);
+
+  synced = (estimated_ptp_time_min < corrected_ptp_time
+      && corrected_ptp_time < estimated_ptp_time_max);
+
+  GST_DEBUG ("Adding observation for domain %u: %" GST_TIME_FORMAT " - %"
+      GST_TIME_FORMAT, domain->domain,
+      GST_TIME_ARGS (corrected_ptp_time), GST_TIME_ARGS (corrected_local_time));
+
+  GST_DEBUG ("Synced %d: %" GST_TIME_FORMAT " < %" GST_TIME_FORMAT " < %"
+      GST_TIME_FORMAT, synced, GST_TIME_ARGS (estimated_ptp_time_min),
+      GST_TIME_ARGS (corrected_ptp_time),
+      GST_TIME_ARGS (estimated_ptp_time_max));
+
+  if (gst_clock_add_observation_unapplied (domain->domain_clock,
+          corrected_local_time, corrected_ptp_time, &r_squared,
+          &internal_time, &external_time, &rate_num, &rate_den)) {
+    GST_DEBUG ("Regression gave r_squared: %f", r_squared);
+
+    /* Old estimated PTP time based on receive time and path delay */
+    estimated_ptp_time = corrected_local_time;
+    estimated_ptp_time =
+        gst_clock_adjust_with_calibration (GST_CLOCK_CAST
+        (domain->domain_clock), estimated_ptp_time, orig_internal_time,
+        orig_external_time, orig_rate_num, orig_rate_den);
+
+    /* New estimated PTP time based on receive time and path delay */
+    new_estimated_ptp_time = corrected_local_time;
+    new_estimated_ptp_time =
+        gst_clock_adjust_with_calibration (GST_CLOCK_CAST
+        (domain->domain_clock), new_estimated_ptp_time, internal_time,
+        external_time, rate_num, rate_den);
+
+    discont = GST_CLOCK_DIFF (estimated_ptp_time, new_estimated_ptp_time);
+    if (synced && ABS (discont) > max_discont) {
+      GstClockTimeDiff offset;
+      GST_DEBUG ("Too large a discont %s%" GST_TIME_FORMAT
+          ", clamping to 1/4 average RTT = %" GST_TIME_FORMAT,
+          (discont < 0 ? "-" : ""), GST_TIME_ARGS (ABS (discont)),
+          GST_TIME_ARGS (max_discont));
+      if (discont > 0) {        /* Too large a forward step - add a -ve offset */
+        offset = max_discont - discont;
+        if (-offset > external_time)
+          external_time = 0;
+        else
+          external_time += offset;
+      } else {                  /* Too large a backward step - add a +ve offset */
+        offset = -(max_discont + discont);
+        external_time += offset;
+      }
+
+      discont += offset;
+    } else {
+      GST_DEBUG ("Discont %s%" GST_TIME_FORMAT " (max: %" GST_TIME_FORMAT ")",
+          (discont < 0 ? "-" : ""), GST_TIME_ARGS (ABS (discont)),
+          GST_TIME_ARGS (max_discont));
+    }
+
+    /* Check if the estimated sync time is now (still) inside our window */
+    estimated_ptp_time_min = corrected_local_time - max_discont;
+    estimated_ptp_time_min =
+        gst_clock_adjust_with_calibration (GST_CLOCK_CAST
+        (domain->domain_clock), estimated_ptp_time_min, internal_time,
+        external_time, rate_num, rate_den);
+    estimated_ptp_time_max = corrected_local_time + max_discont;
+    estimated_ptp_time_max =
+        gst_clock_adjust_with_calibration (GST_CLOCK_CAST
+        (domain->domain_clock), estimated_ptp_time_max, internal_time,
+        external_time, rate_num, rate_den);
+
+    now_synced = (estimated_ptp_time_min < corrected_ptp_time
+        && corrected_ptp_time < estimated_ptp_time_max);
+
+    GST_DEBUG ("Now synced %d: %" GST_TIME_FORMAT " < %" GST_TIME_FORMAT " < %"
+        GST_TIME_FORMAT, now_synced, GST_TIME_ARGS (estimated_ptp_time_min),
+        GST_TIME_ARGS (corrected_ptp_time),
+        GST_TIME_ARGS (estimated_ptp_time_max));
+
+    if (synced || now_synced || domain->skipped_updates > MAX_SKIPPED_UPDATES) {
+      gst_clock_set_calibration (GST_CLOCK_CAST (domain->domain_clock),
+          internal_time, external_time, rate_num, rate_den);
+      domain->skipped_updates = 0;
+
+      domain->last_ptp_time = corrected_ptp_time;
+      domain->last_local_time = corrected_local_time;
+    } else {
+      domain->skipped_updates++;
+    }
+  } else {
+    domain->last_ptp_time = corrected_ptp_time;
+    domain->last_local_time = corrected_local_time;
+  }
+
+#else
+  GST_DEBUG ("Adding observation for domain %u: %" GST_TIME_FORMAT " - %"
+      GST_TIME_FORMAT, domain->domain,
+      GST_TIME_ARGS (corrected_ptp_time), GST_TIME_ARGS (corrected_local_time));
+
+  gst_clock_get_calibration (GST_CLOCK_CAST (domain->domain_clock),
+      &internal_time, &external_time, &rate_num, &rate_den);
+
+  estimated_ptp_time = corrected_local_time;
+  estimated_ptp_time =
+      gst_clock_adjust_with_calibration (GST_CLOCK_CAST
+      (domain->domain_clock), estimated_ptp_time, internal_time,
+      external_time, rate_num, rate_den);
+
+  gst_clock_add_observation (domain->domain_clock,
+      corrected_local_time, corrected_ptp_time, &r_squared);
+
+  gst_clock_get_calibration (GST_CLOCK_CAST (domain->domain_clock),
+      &internal_time, &external_time, &rate_num, &rate_den);
+
+  synced = TRUE;
+  domain->last_ptp_time = corrected_ptp_time;
+  domain->last_local_time = corrected_local_time;
+#endif
+
+#ifdef USE_MEASUREMENT_FILTERING
+out:
+#endif
+  if (g_atomic_int_get (&domain_stats_n_hooks)) {
+    GstStructure *stats = gst_structure_new (GST_PTP_STATISTICS_TIME_UPDATED,
+        "domain", G_TYPE_UINT, domain->domain,
+        "mean-path-delay-avg", GST_TYPE_CLOCK_TIME, domain->mean_path_delay,
+        "local-time", GST_TYPE_CLOCK_TIME, corrected_local_time,
+        "ptp-time", GST_TYPE_CLOCK_TIME, corrected_ptp_time,
+        "estimated-ptp-time", GST_TYPE_CLOCK_TIME, estimated_ptp_time,
+        "discontinuity", G_TYPE_INT64, discont,
+        "synced", G_TYPE_BOOLEAN, synced,
+        "r-squared", G_TYPE_DOUBLE, r_squared,
+        "internal-time", GST_TYPE_CLOCK_TIME, internal_time,
+        "external-time", GST_TYPE_CLOCK_TIME, external_time,
+        "rate-num", G_TYPE_UINT64, rate_num,
+        "rate-den", G_TYPE_UINT64, rate_den,
+        "rate", G_TYPE_DOUBLE, (gdouble) (rate_num) / rate_den,
+        NULL);
+    emit_ptp_statistics (domain->domain, stats);
+    gst_structure_free (stats);
+  }
+
+}
+
+#ifdef USE_MEDIAN_PRE_FILTERING
+static gint
+compare_clock_time (const GstClockTime * a, const GstClockTime * b)
+{
+  if (*a < *b)
+    return -1;
+  else if (*a > *b)
+    return 1;
+  return 0;
+}
+#endif
+
+static gboolean
+update_mean_path_delay (PtpDomainData * domain, PtpPendingSync * sync)
+{
+#ifdef USE_MEDIAN_PRE_FILTERING
+  GstClockTime last_path_delays[MEDIAN_PRE_FILTERING_WINDOW];
+  GstClockTime median;
+  gint i;
+#endif
+
+  GstClockTime mean_path_delay, delay_req_delay = 0;
+  gboolean ret;
+
+  /* IEEE 1588 11.3 */
+  mean_path_delay =
+      (sync->delay_req_recv_time_remote - sync->sync_send_time_remote +
+      sync->sync_recv_time_local - sync->delay_req_send_time_local -
+      (sync->correction_field_sync + sync->correction_field_delay +
+          32768) / 65536) / 2;
+
+#ifdef USE_MEDIAN_PRE_FILTERING
+  for (i = 1; i < MEDIAN_PRE_FILTERING_WINDOW; i++)
+    domain->last_path_delays[i - 1] = domain->last_path_delays[i];
+  domain->last_path_delays[i - 1] = mean_path_delay;
+
+  if (domain->last_path_delays_missing) {
+    domain->last_path_delays_missing--;
+  } else {
+    memcpy (&last_path_delays, &domain->last_path_delays,
+        sizeof (last_path_delays));
+    g_qsort_with_data (&last_path_delays,
+        MEDIAN_PRE_FILTERING_WINDOW, sizeof (GstClockTime),
+        (GCompareDataFunc) compare_clock_time, NULL);
+
+    median = last_path_delays[MEDIAN_PRE_FILTERING_WINDOW / 2];
+
+    /* FIXME: We might want to use something else here, like only allowing
+     * things in the interquartile range, or also filtering away delays that
+     * are too small compared to the median. This here worked well enough
+     * in tests so far.
+     */
+    if (mean_path_delay > 2 * median) {
+      GST_WARNING ("Path delay for domain %u too big compared to median: %"
+          GST_TIME_FORMAT " > 2 * %" GST_TIME_FORMAT, domain->domain,
+          GST_TIME_ARGS (mean_path_delay), GST_TIME_ARGS (median));
+      ret = FALSE;
+      goto out;
+    }
+  }
+#endif
+
+#ifdef USE_RUNNING_AVERAGE_DELAY
+  /* Track an average round trip time, for a bit of smoothing */
+  /* Always update before discarding a sample, so genuine changes in
+   * the network get picked up, eventually */
+  if (domain->mean_path_delay == 0)
+    domain->mean_path_delay = mean_path_delay;
+  else if (mean_path_delay < domain->mean_path_delay)   /* Shorter RTTs carry more weight than longer */
+    domain->mean_path_delay =
+        (3 * domain->mean_path_delay + mean_path_delay) / 4;
+  else
+    domain->mean_path_delay =
+        (15 * domain->mean_path_delay + mean_path_delay) / 16;
+#else
+  domain->mean_path_delay = mean_path_delay;
+#endif
+
+#ifdef USE_MEASUREMENT_FILTERING
+  if (sync->follow_up_recv_time_local != GST_CLOCK_TIME_NONE &&
+      domain->mean_path_delay != 0
+      && sync->follow_up_recv_time_local >
+      sync->sync_recv_time_local + 2 * domain->mean_path_delay) {
+    GST_WARNING ("Sync-follow-up delay for domain %u too big: %" GST_TIME_FORMAT
+        " > 2 * %" GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (sync->follow_up_recv_time_local -
+            sync->sync_recv_time_local),
+        GST_TIME_ARGS (domain->mean_path_delay));
+    ret = FALSE;
+    goto out;
+  }
+
+  if (mean_path_delay > 2 * domain->mean_path_delay) {
+    GST_WARNING ("Mean path delay for domain %u too big: %" GST_TIME_FORMAT
+        " > 2 * %" GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (mean_path_delay),
+        GST_TIME_ARGS (domain->mean_path_delay));
+    ret = FALSE;
+    goto out;
+  }
+#endif
+
+  delay_req_delay =
+      sync->delay_resp_recv_time_local - sync->delay_req_send_time_local;
+
+#ifdef USE_MEASUREMENT_FILTERING
+  /* delay_req_delay is a RTT, so 2 times the path delay */
+  if (delay_req_delay > 4 * domain->mean_path_delay) {
+    GST_WARNING ("Delay-request-response delay for domain %u too big: %"
+        GST_TIME_FORMAT " > 4 * %" GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (delay_req_delay),
+        GST_TIME_ARGS (domain->mean_path_delay));
+    ret = FALSE;
+    goto out;
+  }
+#endif
+
+  ret = TRUE;
+
+  GST_DEBUG ("Got mean path delay for domain %u: %" GST_TIME_FORMAT " (new: %"
+      GST_TIME_FORMAT ")", domain->domain,
+      GST_TIME_ARGS (domain->mean_path_delay), GST_TIME_ARGS (mean_path_delay));
+  GST_DEBUG ("Delay request delay for domain %u: %" GST_TIME_FORMAT,
+      domain->domain, GST_TIME_ARGS (delay_req_delay));
+
+#ifdef USE_MEASUREMENT_FILTERING
+out:
+#endif
+  if (g_atomic_int_get (&domain_stats_n_hooks)) {
+    GstStructure *stats =
+        gst_structure_new (GST_PTP_STATISTICS_PATH_DELAY_MEASURED,
+        "domain", G_TYPE_UINT, domain->domain,
+        "mean-path-delay-avg", GST_TYPE_CLOCK_TIME, domain->mean_path_delay,
+        "mean-path-delay", GST_TYPE_CLOCK_TIME, mean_path_delay,
+        "delay-request-delay", GST_TYPE_CLOCK_TIME, delay_req_delay, NULL);
+    emit_ptp_statistics (domain->domain, stats);
+    gst_structure_free (stats);
+  }
+
+  return ret;
+}
+
+static void
+handle_sync_message (PtpMessage * msg, GstClockTime receive_time)
+{
+  GList *l;
+  PtpDomainData *domain = NULL;
+  PtpPendingSync *sync = NULL;
+
+  /* Don't consider messages with the alternate master flag set */
+  if ((msg->flag_field & 0x0100))
+    return;
+
+  for (l = domain_data; l; l = l->next) {
+    PtpDomainData *tmp = l->data;
+
+    if (msg->domain_number == tmp->domain) {
+      domain = tmp;
+      break;
+    }
+  }
+
+  if (!domain) {
+    gchar *clock_name;
+
+    domain = g_new0 (PtpDomainData, 1);
+    domain->domain = msg->domain_number;
+    clock_name = g_strdup_printf ("ptp-clock-%u", domain->domain);
+    domain->domain_clock =
+        g_object_new (GST_TYPE_SYSTEM_CLOCK, "name", clock_name, NULL);
+    g_free (clock_name);
+    g_queue_init (&domain->pending_syncs);
+    domain->last_path_delays_missing = 9;
+    domain_data = g_list_prepend (domain_data, domain);
+
+    g_mutex_lock (&domain_clocks_lock);
+    domain_clocks = g_list_prepend (domain_clocks, domain);
+    g_mutex_unlock (&domain_clocks_lock);
+  }
+
+  /* If we have a master clock, ignore this message if it's not coming from there */
+  if (domain->have_master_clock
+      && compare_clock_identity (&domain->master_clock_identity,
+          &msg->source_port_identity) != 0)
+    return;
+
+#ifdef USE_OPPORTUNISTIC_CLOCK_SELECTION
+  /* Opportunistic selection of master clock */
+  if (!domain->have_master_clock)
+    memcpy (&domain->master_clock_identity, &msg->source_port_identity,
+        sizeof (PtpClockIdentity));
+#else
+  if (!domain->have_master_clock)
+    return;
+#endif
+
+  domain->sync_interval = log2_to_clock_time (msg->log_message_interval);
+
+  /* Check if duplicated */
+  for (l = domain->pending_syncs.head; l; l = l->next) {
+    PtpPendingSync *tmp = l->data;
+
+    if (tmp->sync_seqnum == msg->sequence_id)
+      return;
+  }
+
+  if (msg->message_specific.sync.origin_timestamp.seconds_field >
+      GST_CLOCK_TIME_NONE / GST_SECOND) {
+    GST_FIXME ("Unsupported sync message seconds field value: %"
+        G_GUINT64_FORMAT " > %" G_GUINT64_FORMAT,
+        msg->message_specific.sync.origin_timestamp.seconds_field,
+        GST_CLOCK_TIME_NONE / GST_SECOND);
+    return;
+  }
+
+  sync = g_new0 (PtpPendingSync, 1);
+  sync->domain = domain->domain;
+  sync->sync_seqnum = msg->sequence_id;
+  sync->sync_recv_time_local = receive_time;
+  sync->sync_send_time_remote = GST_CLOCK_TIME_NONE;
+  sync->follow_up_recv_time_local = GST_CLOCK_TIME_NONE;
+  sync->delay_req_send_time_local = GST_CLOCK_TIME_NONE;
+  sync->delay_req_recv_time_remote = GST_CLOCK_TIME_NONE;
+  sync->delay_resp_recv_time_local = GST_CLOCK_TIME_NONE;
+
+  /* 0.5 correction factor for division later */
+  sync->correction_field_sync = msg->correction_field;
+
+  if ((msg->flag_field & 0x0200)) {
+    /* Wait for FOLLOW_UP */
+  } else {
+    sync->sync_send_time_remote =
+        PTP_TIMESTAMP_TO_GST_CLOCK_TIME (msg->message_specific.
+        sync.origin_timestamp);
+
+    if (domain->last_ptp_sync_time != 0
+        && domain->last_ptp_sync_time >= sync->sync_send_time_remote) {
+      GST_WARNING ("Backwards PTP times in domain %u: %" GST_TIME_FORMAT " >= %"
+          GST_TIME_FORMAT, domain->domain,
+          GST_TIME_ARGS (domain->last_ptp_sync_time),
+          GST_TIME_ARGS (sync->sync_send_time_remote));
+      ptp_pending_sync_free (sync);
+      sync = NULL;
+      return;
+    }
+    domain->last_ptp_sync_time = sync->sync_send_time_remote;
+
+    if (send_delay_req (domain, sync)) {
+      /* Sent delay request */
+    } else {
+      update_ptp_time (domain, sync);
+      ptp_pending_sync_free (sync);
+      sync = NULL;
+    }
+  }
+
+  if (sync)
+    g_queue_push_tail (&domain->pending_syncs, sync);
+}
+
+static void
+handle_follow_up_message (PtpMessage * msg, GstClockTime receive_time)
+{
+  GList *l;
+  PtpDomainData *domain = NULL;
+  PtpPendingSync *sync = NULL;
+
+  /* Don't consider messages with the alternate master flag set */
+  if ((msg->flag_field & 0x0100))
+    return;
+
+  for (l = domain_data; l; l = l->next) {
+    PtpDomainData *tmp = l->data;
+
+    if (msg->domain_number == tmp->domain) {
+      domain = tmp;
+      break;
+    }
+  }
+
+  if (!domain)
+    return;
+
+  /* If we have a master clock, ignore this message if it's not coming from there */
+  if (domain->have_master_clock
+      && compare_clock_identity (&domain->master_clock_identity,
+          &msg->source_port_identity) != 0)
+    return;
+
+  /* Check if we know about this one */
+  for (l = domain->pending_syncs.head; l; l = l->next) {
+    PtpPendingSync *tmp = l->data;
+
+    if (tmp->sync_seqnum == msg->sequence_id) {
+      sync = tmp;
+      break;
+    }
+  }
+
+  if (!sync)
+    return;
+
+  /* Got a FOLLOW_UP for this already */
+  if (sync->sync_send_time_remote != GST_CLOCK_TIME_NONE)
+    return;
+
+  if (sync->sync_recv_time_local >= receive_time) {
+    GST_ERROR ("Got bogus follow up in domain %u: %" GST_TIME_FORMAT " > %"
+        GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (sync->sync_recv_time_local),
+        GST_TIME_ARGS (receive_time));
+    g_queue_remove (&domain->pending_syncs, sync);
+    ptp_pending_sync_free (sync);
+    return;
+  }
+
+  sync->correction_field_sync += msg->correction_field;
+  sync->sync_send_time_remote =
+      PTP_TIMESTAMP_TO_GST_CLOCK_TIME (msg->message_specific.
+      follow_up.precise_origin_timestamp);
+  sync->follow_up_recv_time_local = receive_time;
+
+  if (domain->last_ptp_sync_time >= sync->sync_send_time_remote) {
+    GST_WARNING ("Backwards PTP times in domain %u: %" GST_TIME_FORMAT " >= %"
+        GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (domain->last_ptp_sync_time),
+        GST_TIME_ARGS (sync->sync_send_time_remote));
+    g_queue_remove (&domain->pending_syncs, sync);
+    ptp_pending_sync_free (sync);
+    sync = NULL;
+    return;
+  }
+  domain->last_ptp_sync_time = sync->sync_send_time_remote;
+
+  if (send_delay_req (domain, sync)) {
+    /* Sent delay request */
+  } else {
+    update_ptp_time (domain, sync);
+    g_queue_remove (&domain->pending_syncs, sync);
+    ptp_pending_sync_free (sync);
+    sync = NULL;
+  }
+}
+
+static void
+handle_delay_resp_message (PtpMessage * msg, GstClockTime receive_time)
+{
+  GList *l;
+  PtpDomainData *domain = NULL;
+  PtpPendingSync *sync = NULL;
+
+  /* Don't consider messages with the alternate master flag set */
+  if ((msg->flag_field & 0x0100))
+    return;
+
+  for (l = domain_data; l; l = l->next) {
+    PtpDomainData *tmp = l->data;
+
+    if (msg->domain_number == tmp->domain) {
+      domain = tmp;
+      break;
+    }
+  }
+
+  if (!domain)
+    return;
+
+  /* If we have a master clock, ignore this message if it's not coming from there */
+  if (domain->have_master_clock
+      && compare_clock_identity (&domain->master_clock_identity,
+          &msg->source_port_identity) != 0)
+    return;
+
+  /* Not for us */
+  if (msg->message_specific.delay_resp.
+      requesting_port_identity.clock_identity != ptp_clock_id.clock_identity
+      || msg->message_specific.delay_resp.
+      requesting_port_identity.port_number != ptp_clock_id.port_number)
+    return;
+
+  domain->min_delay_req_interval =
+      log2_to_clock_time (msg->log_message_interval);
+
+  /* Check if we know about this one */
+  for (l = domain->pending_syncs.head; l; l = l->next) {
+    PtpPendingSync *tmp = l->data;
+
+    if (tmp->delay_req_seqnum == msg->sequence_id) {
+      sync = tmp;
+      break;
+    }
+  }
+
+  if (!sync)
+    return;
+
+  /* Got a DELAY_RESP for this already */
+  if (sync->delay_req_recv_time_remote != GST_CLOCK_TIME_NONE)
+    return;
+
+  if (sync->delay_req_send_time_local > receive_time) {
+    GST_ERROR ("Got bogus delay response in domain %u: %" GST_TIME_FORMAT " > %"
+        GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (sync->delay_req_send_time_local),
+        GST_TIME_ARGS (receive_time));
+    g_queue_remove (&domain->pending_syncs, sync);
+    ptp_pending_sync_free (sync);
+    return;
+  }
+
+  sync->correction_field_delay = msg->correction_field;
+
+  sync->delay_req_recv_time_remote =
+      PTP_TIMESTAMP_TO_GST_CLOCK_TIME (msg->message_specific.
+      delay_resp.receive_timestamp);
+  sync->delay_resp_recv_time_local = receive_time;
+
+  if (domain->mean_path_delay != 0
+      && sync->sync_send_time_remote > sync->delay_req_recv_time_remote) {
+    GST_WARNING ("Sync send time after delay req receive time for domain %u: %"
+        GST_TIME_FORMAT " > %" GST_TIME_FORMAT, domain->domain,
+        GST_TIME_ARGS (sync->sync_send_time_remote),
+        GST_TIME_ARGS (sync->delay_req_recv_time_remote));
+    g_queue_remove (&domain->pending_syncs, sync);
+    ptp_pending_sync_free (sync);
+    return;
+  }
+
+  if (update_mean_path_delay (domain, sync))
+    update_ptp_time (domain, sync);
+  g_queue_remove (&domain->pending_syncs, sync);
+  ptp_pending_sync_free (sync);
+}
+
+static void
+handle_ptp_message (PtpMessage * msg, GstClockTime receive_time)
+{
+  /* Ignore our own messages */
+  if (msg->source_port_identity.clock_identity == ptp_clock_id.clock_identity &&
+      msg->source_port_identity.port_number == ptp_clock_id.port_number)
+    return;
+
+  switch (msg->message_type) {
+    case PTP_MESSAGE_TYPE_ANNOUNCE:
+      handle_announce_message (msg, receive_time);
+      break;
+    case PTP_MESSAGE_TYPE_SYNC:
+      handle_sync_message (msg, receive_time);
+      break;
+    case PTP_MESSAGE_TYPE_FOLLOW_UP:
+      handle_follow_up_message (msg, receive_time);
+      break;
+    case PTP_MESSAGE_TYPE_DELAY_RESP:
+      handle_delay_resp_message (msg, receive_time);
+      break;
+    default:
+      break;
+  }
+}
+
+static gboolean
+have_stdin_data_cb (GIOChannel * channel, GIOCondition condition,
+    gpointer user_data)
+{
+  GIOStatus status;
+  StdIOHeader header;
+  gchar buffer[8192];
+  GError *err = NULL;
+  gsize read;
+
+  if ((condition & G_IO_STATUS_EOF)) {
+    GST_ERROR ("Got EOF on stdin");
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  }
+
+  status =
+      g_io_channel_read_chars (channel, (gchar *) & header, sizeof (header),
+      &read, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    GST_ERROR ("Failed to read from stdin: %s", err->message);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status == G_IO_STATUS_EOF) {
+    GST_ERROR ("Got EOF on stdin");
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status != G_IO_STATUS_NORMAL) {
+    GST_ERROR ("Unexpected stdin read status: %d", status);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (read != sizeof (header)) {
+    GST_ERROR ("Unexpected read size: %" G_GSIZE_FORMAT, read);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (header.size > 8192) {
+    GST_ERROR ("Unexpected size: %u", header.size);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  }
+
+  status = g_io_channel_read_chars (channel, buffer, header.size, &read, &err);
+  if (status == G_IO_STATUS_ERROR) {
+    GST_ERROR ("Failed to read from stdin: %s", err->message);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status == G_IO_STATUS_EOF) {
+    GST_ERROR ("EOF on stdin");
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (status != G_IO_STATUS_NORMAL) {
+    GST_ERROR ("Unexpected stdin read status: %d", status);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  } else if (read != header.size) {
+    GST_ERROR ("Unexpected read size: %" G_GSIZE_FORMAT, read);
+    g_main_loop_quit (main_loop);
+    return G_SOURCE_REMOVE;
+  }
+
+  switch (header.type) {
+    case TYPE_EVENT:
+    case TYPE_GENERAL:{
+      GstClockTime receive_time = gst_clock_get_time (observation_system_clock);
+      PtpMessage msg;
+
+      if (parse_ptp_message (&msg, (const guint8 *) buffer, header.size)) {
+        dump_ptp_message (&msg);
+        handle_ptp_message (&msg, receive_time);
+      }
+      break;
+    }
+    default:
+    case TYPE_CLOCK_ID:{
+      if (header.size != 8) {
+        GST_ERROR ("Unexpected clock id size (%u != 8)", header.size);
+        g_main_loop_quit (main_loop);
+        return G_SOURCE_REMOVE;
+      }
+      g_mutex_lock (&ptp_lock);
+      ptp_clock_id.clock_identity = GST_READ_UINT64_BE (buffer);
+      ptp_clock_id.port_number = getpid ();
+      GST_DEBUG ("Got clock id 0x%016" G_GINT64_MODIFIER "x %u",
+          ptp_clock_id.clock_identity, ptp_clock_id.port_number);
+      g_cond_signal (&ptp_cond);
+      g_mutex_unlock (&ptp_lock);
+      break;
+    }
+  }
+
+  return G_SOURCE_CONTINUE;
+}
+
+/* Cleanup all announce messages and announce message senders
+ * that are timed out by now, and clean up all pending syncs
+ * that are missing their FOLLOW_UP or DELAY_RESP */
+static gboolean
+cleanup_cb (gpointer data)
+{
+  GstClockTime now = gst_clock_get_time (observation_system_clock);
+  GList *l, *m, *n;
+
+  for (l = domain_data; l; l = l->next) {
+    PtpDomainData *domain = l->data;
+
+    for (n = domain->announce_senders; n;) {
+      PtpAnnounceSender *sender = n->data;
+      gboolean timed_out = TRUE;
+
+      /* Keep only 5 messages per sender around */
+      while (g_queue_get_length (&sender->announce_messages) > 5) {
+        PtpAnnounceMessage *msg = g_queue_pop_head (&sender->announce_messages);
+        g_free (msg);
+      }
+
+      for (m = sender->announce_messages.head; m; m = m->next) {
+        PtpAnnounceMessage *msg = m->data;
+
+        if (msg->receive_time +
+            sender->announce_interval * PTP_ANNOUNCE_RECEIPT_TIMEOUT > now) {
+          timed_out = FALSE;
+          break;
+        }
+      }
+
+      if (timed_out) {
+        GST_DEBUG ("Announce sender 0x%016" G_GINT64_MODIFIER "x %u timed out",
+            sender->master_clock_identity.clock_identity,
+            sender->master_clock_identity.port_number);
+        g_queue_foreach (&sender->announce_messages, (GFunc) g_free, NULL);
+        g_queue_clear (&sender->announce_messages);
+      }
+
+      if (g_queue_get_length (&sender->announce_messages) == 0) {
+        GList *tmp = n->next;
+
+        if (compare_clock_identity (&sender->master_clock_identity,
+                &domain->master_clock_identity) == 0)
+          GST_WARNING ("currently selected master clock timed out");
+        g_free (sender);
+        domain->announce_senders =
+            g_list_delete_link (domain->announce_senders, n);
+        n = tmp;
+      } else {
+        n = n->next;
+      }
+    }
+    select_best_master_clock (domain, now);
+
+    /* Clean up any pending syncs */
+    for (n = domain->pending_syncs.head; n;) {
+      PtpPendingSync *sync = n->data;
+      gboolean timed_out = FALSE;
+
+      /* Time out pending syncs after 4 sync intervals or 10 seconds,
+       * and pending delay reqs after 4 delay req intervals or 10 seconds
+       */
+      if (sync->delay_req_send_time_local != GST_CLOCK_TIME_NONE &&
+          ((domain->min_delay_req_interval != 0
+                  && sync->delay_req_send_time_local +
+                  4 * domain->min_delay_req_interval < now)
+              || (sync->delay_req_send_time_local + 10 * GST_SECOND < now))) {
+        timed_out = TRUE;
+      } else if ((domain->sync_interval != 0
+              && sync->sync_recv_time_local + 4 * domain->sync_interval < now)
+          || (sync->sync_recv_time_local + 10 * GST_SECOND < now)) {
+        timed_out = TRUE;
+      }
+
+      if (timed_out) {
+        GList *tmp = n->next;
+        ptp_pending_sync_free (sync);
+        g_queue_delete_link (&domain->pending_syncs, n);
+        n = tmp;
+      } else {
+        n = n->next;
+      }
+    }
+  }
+
+  return G_SOURCE_CONTINUE;
+}
+
+static gpointer
+ptp_helper_main (gpointer data)
+{
+  GSource *cleanup_source;
+
+  GST_DEBUG ("Starting PTP helper loop");
+
+  /* Check all 5 seconds, if we have to cleanup ANNOUNCE or pending syncs message */
+  cleanup_source = g_timeout_source_new_seconds (5);
+  g_source_set_priority (cleanup_source, G_PRIORITY_DEFAULT);
+  g_source_set_callback (cleanup_source, (GSourceFunc) cleanup_cb, NULL, NULL);
+  g_source_attach (cleanup_source, main_context);
+  g_source_unref (cleanup_source);
+
+  g_main_loop_run (main_loop);
+  GST_DEBUG ("Stopped PTP helper loop");
+
+  g_mutex_lock (&ptp_lock);
+  ptp_clock_id.clock_identity = GST_PTP_CLOCK_ID_NONE;
+  ptp_clock_id.port_number = 0;
+  initted = FALSE;
+  g_cond_signal (&ptp_cond);
+  g_mutex_unlock (&ptp_lock);
+
+  return NULL;
+}
+
+/**
+ * gst_ptp_is_supported:
+ *
+ * Check if PTP clocks are generally supported on this system, and if previous
+ * initializations did not fail.
+ *
+ * Returns: %TRUE if PTP clocks are generally supported on this system, and
+ * previous initializations did not fail.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_ptp_is_supported (void)
+{
+  return supported;
+}
+
+/**
+ * gst_ptp_is_initialized:
+ *
+ * Check if the GStreamer PTP clock subsystem is initialized.
+ *
+ * Returns: %TRUE if the GStreamer PTP clock subsystem is intialized.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_ptp_is_initialized (void)
+{
+  return initted;
+}
+
+/**
+ * gst_ptp_init:
+ * @clock_id: PTP clock id of this process' clock or %GST_PTP_CLOCK_ID_NONE
+ * @interfaces: (transfer none) (array zero-terminated=1) (allow-none): network interfaces to run the clock on
+ *
+ * Initialize the GStreamer PTP subsystem and create a PTP ordinary clock in
+ * slave-only mode for all domains on the given @interfaces with the
+ * given @clock_id.
+ *
+ * If @clock_id is %GST_PTP_CLOCK_ID_NONE, a clock id is automatically
+ * generated from the MAC address of the first network interface.
+ *
+ *
+ * This function is automatically called by gst_ptp_clock_new() with default
+ * parameters if it wasn't called before.
+ *
+ * Returns: %TRUE if the GStreamer PTP clock subsystem could be initialized.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_ptp_init (guint64 clock_id, gchar ** interfaces)
+{
+  gboolean ret;
+  const gchar *env;
+  gchar **argv = NULL;
+  gint argc, argc_c;
+  gint fd_r, fd_w;
+  GError *err = NULL;
+  GSource *stdin_source;
+
+  GST_DEBUG_CATEGORY_INIT (ptp_debug, "ptp", 0, "PTP clock");
+
+  g_mutex_lock (&ptp_lock);
+  if (!supported) {
+    GST_ERROR ("PTP not supported");
+    ret = FALSE;
+    goto done;
+  }
+
+  if (initted) {
+    GST_DEBUG ("PTP already initialized");
+    ret = TRUE;
+    goto done;
+  }
+
+  if (ptp_helper_pid) {
+    GST_DEBUG ("PTP currently initializing");
+    goto wait;
+  }
+
+  if (!domain_stats_hooks_initted) {
+    g_hook_list_init (&domain_stats_hooks, sizeof (GHook));
+    domain_stats_hooks_initted = TRUE;
+  }
+
+  argc = 1;
+  if (clock_id != GST_PTP_CLOCK_ID_NONE)
+    argc += 2;
+  if (interfaces != NULL)
+    argc += 2 * g_strv_length (interfaces);
+
+  argv = g_new0 (gchar *, argc + 2);
+  argc_c = 0;
+
+  env = g_getenv ("GST_PTP_HELPER_1_0");
+  if (env == NULL)
+    env = g_getenv ("GST_PTP_HELPER");
+  if (env != NULL && *env != '\0') {
+    GST_LOG ("Trying GST_PTP_HELPER env var: %s", env);
+    argv[argc_c++] = g_strdup (env);
+  } else {
+    argv[argc_c++] = g_strdup (GST_PTP_HELPER_INSTALLED);
+  }
+
+  if (clock_id != GST_PTP_CLOCK_ID_NONE) {
+    argv[argc_c++] = g_strdup ("-c");
+    argv[argc_c++] = g_strdup_printf ("0x%016" G_GINT64_MODIFIER "x", clock_id);
+  }
+
+  if (interfaces != NULL) {
+    gchar **ptr = interfaces;
+
+    while (*ptr) {
+      argv[argc_c++] = g_strdup ("-i");
+      argv[argc_c++] = g_strdup (*ptr);
+      ptr++;
+    }
+  }
+
+  main_context = g_main_context_new ();
+  main_loop = g_main_loop_new (main_context, FALSE);
+
+  ptp_helper_thread =
+      g_thread_try_new ("ptp-helper-thread", ptp_helper_main, NULL, &err);
+  if (!ptp_helper_thread) {
+    GST_ERROR ("Failed to start PTP helper thread: %s", err->message);
+    g_clear_error (&err);
+    ret = FALSE;
+    goto done;
+  }
+
+  if (!g_spawn_async_with_pipes (NULL, argv, NULL, 0, NULL, NULL,
+          &ptp_helper_pid, &fd_w, &fd_r, NULL, &err)) {
+    GST_ERROR ("Failed to start ptp helper process: %s", err->message);
+    g_clear_error (&err);
+    ret = FALSE;
+    supported = FALSE;
+    goto done;
+  }
+
+  stdin_channel = g_io_channel_unix_new (fd_r);
+  g_io_channel_set_encoding (stdin_channel, NULL, NULL);
+  g_io_channel_set_buffered (stdin_channel, FALSE);
+  g_io_channel_set_close_on_unref (stdin_channel, TRUE);
+  stdin_source =
+      g_io_create_watch (stdin_channel, G_IO_IN | G_IO_PRI | G_IO_HUP);
+  g_source_set_priority (stdin_source, G_PRIORITY_DEFAULT);
+  g_source_set_callback (stdin_source, (GSourceFunc) have_stdin_data_cb, NULL,
+      NULL);
+  g_source_attach (stdin_source, main_context);
+  g_source_unref (stdin_source);
+
+  /* Create stdout channel */
+  stdout_channel = g_io_channel_unix_new (fd_w);
+  g_io_channel_set_encoding (stdout_channel, NULL, NULL);
+  g_io_channel_set_close_on_unref (stdout_channel, TRUE);
+  g_io_channel_set_buffered (stdout_channel, FALSE);
+
+  delay_req_rand = g_rand_new ();
+  observation_system_clock =
+      g_object_new (GST_TYPE_SYSTEM_CLOCK, "name", "ptp-observation-clock",
+      NULL);
+
+  initted = TRUE;
+
+wait:
+  GST_DEBUG ("Waiting for PTP to be initialized");
+
+  while (ptp_clock_id.clock_identity == GST_PTP_CLOCK_ID_NONE && initted)
+    g_cond_wait (&ptp_cond, &ptp_lock);
+
+  ret = initted;
+  if (ret) {
+    GST_DEBUG ("Initialized and got clock id 0x%016" G_GINT64_MODIFIER "x %u",
+        ptp_clock_id.clock_identity, ptp_clock_id.port_number);
+  } else {
+    GST_ERROR ("Failed to initialize");
+    supported = FALSE;
+  }
+
+done:
+  g_strfreev (argv);
+
+  if (!ret) {
+    if (ptp_helper_pid) {
+#ifndef G_OS_WIN32
+      kill (ptp_helper_pid, SIGKILL);
+      waitpid (ptp_helper_pid, NULL, 0);
+#else
+      TerminateProcess (ptp_helper_pid, 1);
+      WaitForSingleObject (ptp_helper_pid, INFINITE);
+#endif
+      g_spawn_close_pid (ptp_helper_pid);
+    }
+    ptp_helper_pid = 0;
+
+    if (stdin_channel)
+      g_io_channel_unref (stdin_channel);
+    stdin_channel = NULL;
+    if (stdout_channel)
+      g_io_channel_unref (stdout_channel);
+    stdout_channel = NULL;
+
+    if (main_loop && ptp_helper_thread) {
+      g_main_loop_quit (main_loop);
+      g_thread_join (ptp_helper_thread);
+    }
+    ptp_helper_thread = NULL;
+    if (main_loop)
+      g_main_loop_unref (main_loop);
+    main_loop = NULL;
+    if (main_context)
+      g_main_context_unref (main_context);
+    main_context = NULL;
+
+    if (delay_req_rand)
+      g_rand_free (delay_req_rand);
+    delay_req_rand = NULL;
+
+    if (observation_system_clock)
+      gst_object_unref (observation_system_clock);
+    observation_system_clock = NULL;
+  }
+
+  g_mutex_unlock (&ptp_lock);
+
+  return ret;
+}
+
+/**
+ * gst_ptp_deinit:
+ *
+ * Deinitialize the GStreamer PTP subsystem and stop the PTP clock. If there
+ * are any remaining GstPtpClock instances, they won't be further synchronized
+ * to the PTP network clock.
+ *
+ * Since: 1.6
+ */
+void
+gst_ptp_deinit (void)
+{
+  GList *l, *m;
+
+  g_mutex_lock (&ptp_lock);
+
+  if (ptp_helper_pid) {
+#ifndef G_OS_WIN32
+    kill (ptp_helper_pid, SIGKILL);
+    waitpid (ptp_helper_pid, NULL, 0);
+#else
+    TerminateProcess (ptp_helper_pid, 1);
+    WaitForSingleObject (ptp_helper_pid, INFINITE);
+#endif
+    g_spawn_close_pid (ptp_helper_pid);
+  }
+  ptp_helper_pid = 0;
+
+  if (stdin_channel)
+    g_io_channel_unref (stdin_channel);
+  stdin_channel = NULL;
+  if (stdout_channel)
+    g_io_channel_unref (stdout_channel);
+  stdout_channel = NULL;
+
+  if (main_loop && ptp_helper_thread) {
+    GThread *tmp = ptp_helper_thread;
+    ptp_helper_thread = NULL;
+    g_mutex_unlock (&ptp_lock);
+    g_main_loop_quit (main_loop);
+    g_thread_join (tmp);
+    g_mutex_lock (&ptp_lock);
+  }
+  if (main_loop)
+    g_main_loop_unref (main_loop);
+  main_loop = NULL;
+  if (main_context)
+    g_main_context_unref (main_context);
+  main_context = NULL;
+
+  if (delay_req_rand)
+    g_rand_free (delay_req_rand);
+  delay_req_rand = NULL;
+  if (observation_system_clock)
+    gst_object_unref (observation_system_clock);
+  observation_system_clock = NULL;
+
+  for (l = domain_data; l; l = l->next) {
+    PtpDomainData *domain = l->data;
+
+    for (m = domain->announce_senders; m; m = m->next) {
+      PtpAnnounceSender *sender = m->data;
+
+      g_queue_foreach (&sender->announce_messages, (GFunc) g_free, NULL);
+      g_queue_clear (&sender->announce_messages);
+      g_free (sender);
+    }
+    g_list_free (domain->announce_senders);
+
+    g_queue_foreach (&domain->pending_syncs, (GFunc) ptp_pending_sync_free,
+        NULL);
+    g_queue_clear (&domain->pending_syncs);
+    gst_object_unref (domain->domain_clock);
+    g_free (domain);
+  }
+  g_list_free (domain_data);
+  domain_data = NULL;
+  g_list_foreach (domain_clocks, (GFunc) g_free, NULL);
+  g_list_free (domain_clocks);
+  domain_clocks = NULL;
+
+  ptp_clock_id.clock_identity = GST_PTP_CLOCK_ID_NONE;
+  ptp_clock_id.port_number = 0;
+
+  initted = FALSE;
+
+  g_mutex_unlock (&ptp_lock);
+}
+
+#define DEFAULT_DOMAIN 0
+
+enum
+{
+  PROP_0,
+  PROP_DOMAIN,
+  PROP_INTERNAL_CLOCK
+};
+
+#define GST_PTP_CLOCK_GET_PRIVATE(obj)  \
+  (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_PTP_CLOCK, GstPtpClockPrivate))
+
+struct _GstPtpClockPrivate
+{
+  guint domain;
+  GstClock *domain_clock;
+  gulong domain_stats_id;
+};
+
+#define gst_ptp_clock_parent_class parent_class
+G_DEFINE_TYPE (GstPtpClock, gst_ptp_clock, GST_TYPE_SYSTEM_CLOCK);
+
+static void gst_ptp_clock_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_ptp_clock_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_ptp_clock_finalize (GObject * object);
+
+static GstClockTime gst_ptp_clock_get_internal_time (GstClock * clock);
+
+static void
+gst_ptp_clock_class_init (GstPtpClockClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstClockClass *clock_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  clock_class = GST_CLOCK_CLASS (klass);
+
+  g_type_class_add_private (klass, sizeof (GstPtpClockPrivate));
+
+  gobject_class->finalize = gst_ptp_clock_finalize;
+  gobject_class->get_property = gst_ptp_clock_get_property;
+  gobject_class->set_property = gst_ptp_clock_set_property;
+
+  g_object_class_install_property (gobject_class, PROP_DOMAIN,
+      g_param_spec_uint ("domain", "Domain",
+          "The PTP domain", 0, G_MAXUINT8,
+          DEFAULT_DOMAIN,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_INTERNAL_CLOCK,
+      g_param_spec_object ("internal-clock", "Internal Clock",
+          "Internal clock", GST_TYPE_CLOCK,
+          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+  clock_class->get_internal_time = gst_ptp_clock_get_internal_time;
+}
+
+static void
+gst_ptp_clock_init (GstPtpClock * self)
+{
+  GstPtpClockPrivate *priv;
+
+  self->priv = priv = GST_PTP_CLOCK_GET_PRIVATE (self);
+
+  GST_OBJECT_FLAG_SET (self, GST_CLOCK_FLAG_CAN_SET_MASTER);
+  GST_OBJECT_FLAG_SET (self, GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC);
+
+  priv->domain = DEFAULT_DOMAIN;
+}
+
+static gboolean
+gst_ptp_clock_ensure_domain_clock (GstPtpClock * self)
+{
+  gboolean got_clock = TRUE;
+
+  if (G_UNLIKELY (!self->priv->domain_clock)) {
+    g_mutex_lock (&domain_clocks_lock);
+    if (!self->priv->domain_clock) {
+      GList *l;
+
+      got_clock = FALSE;
+
+      for (l = domain_clocks; l; l = l->next) {
+        PtpDomainData *clock_data = l->data;
+
+        if (clock_data->domain == self->priv->domain
+            && clock_data->last_ptp_time != 0) {
+          self->priv->domain_clock = clock_data->domain_clock;
+          got_clock = TRUE;
+          break;
+        }
+      }
+    }
+    g_mutex_unlock (&domain_clocks_lock);
+    if (got_clock) {
+      g_object_notify (G_OBJECT (self), "internal-clock");
+      gst_clock_set_synced (GST_CLOCK (self), TRUE);
+    }
+  }
+
+  return got_clock;
+}
+
+static gboolean
+gst_ptp_clock_stats_callback (guint8 domain, const GstStructure * stats,
+    gpointer user_data)
+{
+  GstPtpClock *self = user_data;
+
+  if (domain != self->priv->domain
+      || !gst_structure_has_name (stats, GST_PTP_STATISTICS_TIME_UPDATED))
+    return TRUE;
+
+  /* Let's set our internal clock */
+  if (!gst_ptp_clock_ensure_domain_clock (self))
+    return TRUE;
+
+  self->priv->domain_stats_id = 0;
+
+  return FALSE;
+}
+
+static void
+gst_ptp_clock_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstPtpClock *self = GST_PTP_CLOCK (object);
+
+  switch (prop_id) {
+    case PROP_DOMAIN:
+      self->priv->domain = g_value_get_uint (value);
+      gst_ptp_clock_ensure_domain_clock (self);
+      if (!self->priv->domain_clock)
+        self->priv->domain_stats_id =
+            gst_ptp_statistics_callback_add (gst_ptp_clock_stats_callback, self,
+            NULL);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_ptp_clock_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstPtpClock *self = GST_PTP_CLOCK (object);
+
+  switch (prop_id) {
+    case PROP_DOMAIN:
+      g_value_set_uint (value, self->priv->domain);
+      break;
+    case PROP_INTERNAL_CLOCK:
+      gst_ptp_clock_ensure_domain_clock (self);
+      g_value_set_object (value, self->priv->domain_clock);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_ptp_clock_finalize (GObject * object)
+{
+  GstPtpClock *self = GST_PTP_CLOCK (object);
+
+  if (self->priv->domain_stats_id)
+    gst_ptp_statistics_callback_remove (self->priv->domain_stats_id);
+
+  G_OBJECT_CLASS (gst_ptp_clock_parent_class)->finalize (object);
+}
+
+static GstClockTime
+gst_ptp_clock_get_internal_time (GstClock * clock)
+{
+  GstPtpClock *self = GST_PTP_CLOCK (clock);
+
+  gst_ptp_clock_ensure_domain_clock (self);
+
+  if (!self->priv->domain_clock) {
+    GST_ERROR_OBJECT (self, "Domain %u has no clock yet and is not synced",
+        self->priv->domain);
+    return GST_CLOCK_TIME_NONE;
+  }
+
+  return gst_clock_get_time (self->priv->domain_clock);
+}
+
+/**
+ * gst_ptp_clock_new:
+ * @name: Name of the clock
+ * @domain: PTP domain
+ *
+ * Creates a new PTP clock instance that exports the PTP time of the master
+ * clock in @domain. This clock can be slaved to other clocks as needed.
+ *
+ * If gst_ptp_init() was not called before, this will call gst_ptp_init() with
+ * default parameters.
+ *
+ *
+ * This clock only returns valid timestamps after it received the first
+ * times from the PTP master clock on the network. Once this happens the
+ * GstPtpClock::internal-clock property will become non-NULL. You can
+ * check this with gst_clock_wait_for_sync(), the GstClock::synced signal and
+ * gst_clock_is_synced().
+ *
+ * Since: 1.6
+ */
+GstClock *
+gst_ptp_clock_new (const gchar * name, guint domain)
+{
+  g_return_val_if_fail (name != NULL, NULL);
+  g_return_val_if_fail (domain <= G_MAXUINT8, NULL);
+
+  if (!initted && !gst_ptp_init (GST_PTP_CLOCK_ID_NONE, NULL)) {
+    GST_ERROR ("Failed to initialize PTP");
+    return NULL;
+  }
+
+  return g_object_new (GST_TYPE_PTP_CLOCK, "name", name, "domain", domain,
+      NULL);
+}
+
+typedef struct
+{
+  guint8 domain;
+  const GstStructure *stats;
+} DomainStatsMarshalData;
+
+static void
+domain_stats_marshaller (GHook * hook, DomainStatsMarshalData * data)
+{
+  GstPtpStatisticsCallback callback = (GstPtpStatisticsCallback) hook->func;
+
+  if (!callback (data->domain, data->stats, hook->data))
+    g_hook_destroy (&domain_stats_hooks, hook->hook_id);
+}
+
+static void
+emit_ptp_statistics (guint8 domain, const GstStructure * stats)
+{
+  DomainStatsMarshalData data = { domain, stats };
+
+  g_mutex_lock (&ptp_lock);
+  g_hook_list_marshal (&domain_stats_hooks, TRUE,
+      (GHookMarshaller) domain_stats_marshaller, &data);
+  g_mutex_unlock (&ptp_lock);
+}
+
+/**
+ * gst_ptp_statistics_callback_add:
+ * @callback: GstPtpStatisticsCallback to call
+ * @user_data: Data to pass to the callback
+ * @destroy_data: GDestroyNotify to destroy the data
+ *
+ * Installs a new statistics callback for gathering PTP statistics. See
+ * GstPtpStatisticsCallback for a list of statistics that are provided.
+ *
+ * Returns: Id for the callback that can be passed to
+ * gst_ptp_statistics_callback_remove()
+ *
+ * Since: 1.6
+ */
+gulong
+gst_ptp_statistics_callback_add (GstPtpStatisticsCallback callback,
+    gpointer user_data, GDestroyNotify destroy_data)
+{
+  GHook *hook;
+
+  g_mutex_lock (&ptp_lock);
+
+  if (!domain_stats_hooks_initted) {
+    g_hook_list_init (&domain_stats_hooks, sizeof (GHook));
+    domain_stats_hooks_initted = TRUE;
+  }
+
+  hook = g_hook_alloc (&domain_stats_hooks);
+  hook->func = callback;
+  hook->data = user_data;
+  hook->destroy = destroy_data;
+  g_hook_prepend (&domain_stats_hooks, hook);
+  g_atomic_int_add (&domain_stats_n_hooks, 1);
+
+  g_mutex_unlock (&ptp_lock);
+
+  return hook->hook_id;
+}
+
+/**
+ * gst_ptp_statistics_callback_remove:
+ * @id: Callback id to remove
+ *
+ * Removes a PTP statistics callback that was previously added with
+ * gst_ptp_statistics_callback_add().
+ *
+ * Since: 1.6
+ */
+void
+gst_ptp_statistics_callback_remove (gulong id)
+{
+  g_mutex_lock (&ptp_lock);
+  if (g_hook_destroy (&domain_stats_hooks, id))
+    g_atomic_int_add (&domain_stats_n_hooks, -1);
+  g_mutex_unlock (&ptp_lock);
+}
diff --git a/libs/gst/net/gstptpclock.h b/libs/gst/net/gstptpclock.h
new file mode 100644
index 0000000..7a85cab
--- /dev/null
+++ b/libs/gst/net/gstptpclock.h
@@ -0,0 +1,149 @@
+/* GStreamer
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_PTP_CLOCK_H__
+#define __GST_PTP_CLOCK_H__
+
+#include <gst/gst.h>
+#include <gst/gstsystemclock.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_PTP_CLOCK \
+  (gst_ptp_clock_get_type())
+#define GST_PTP_CLOCK(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PTP_CLOCK,GstPtpClock))
+#define GST_PTP_CLOCK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PTP_CLOCK,GstPtpClockClass))
+#define GST_IS_PTP_CLOCK(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PTP_CLOCK))
+#define GST_IS_PTP_CLOCK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PTP_CLOCK))
+
+typedef struct _GstPtpClock GstPtpClock;
+typedef struct _GstPtpClockClass GstPtpClockClass;
+typedef struct _GstPtpClockPrivate GstPtpClockPrivate;
+
+/**
+ * GstPtpClock:
+ * @clock: parented to #GstSystemClock
+ *
+ * Opaque #GstPtpClock structure.
+ */
+struct _GstPtpClock {
+  GstSystemClock clock;
+
+  /*< private >*/
+  GstPtpClockPrivate *priv;
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+/**
+ * GstPtpClockClass:
+ * @parent_class: parented to #GstSystemClockClass
+ *
+ * Opaque #GstPtpClockClass structure.
+ */
+struct _GstPtpClockClass {
+  GstSystemClockClass parent_class;
+
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+/**
+ * GST_PTP_CLOCK_ID_NONE:
+ * PTP clock identification that can be passed to gst_ptp_init() to
+ * automatically select one based on the MAC address of interfaces
+ */
+#define GST_PTP_CLOCK_ID_NONE ((guint64) -1)
+
+GType           gst_ptp_clock_get_type             (void);
+
+gboolean        gst_ptp_is_supported               (void);
+gboolean        gst_ptp_is_initialized             (void);
+gboolean        gst_ptp_init                       (guint64 clock_id,
+                                                    gchar ** interfaces);
+void            gst_ptp_deinit                     (void);
+
+#define GST_PTP_STATISTICS_NEW_DOMAIN_FOUND           "GstPtpStatisticsNewDomainFound"
+#define GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED "GstPtpStatisticsBestMasterClockSelected"
+#define GST_PTP_STATISTICS_PATH_DELAY_MEASURED        "GstPtpStatisticsPathDelayMeasured"
+#define GST_PTP_STATISTICS_TIME_UPDATED               "GstPtpStatisticsTimeUpdated"
+
+/**
+ * GstPtpStatisticsCallback:
+ * @domain: PTP domain identifier
+ * @stats: New statistics
+ * @user_data: Data passed to gst_ptp_statistics_callback_add()
+ *
+ * The statistics can be the following structures:
+ *
+ * GST_PTP_STATISTICS_NEW_DOMAIN_FOUND:
+ * "domain"                G_TYPE_UINT          The domain identifier of the domain
+ * "clock"                 GST_TYPE_CLOCK       The internal clock that is slaved to the
+ *                                              PTP domain
+ *
+ * GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED:
+ * "domain"                G_TYPE_UINT          The domain identifier of the domain
+ * "master-clock-id"       G_TYPE_UINT64        PTP clock identifier of the selected master
+ *                                              clock
+ * "master-clock-port"     G_TYPE_UINT          PTP port number of the selected master clock
+ * "grandmaster-clock-id"  G_TYPE_UINT64        PTP clock identifier of the grandmaster clock
+ *
+ * GST_PTP_STATISTICS_PATH_DELAY_MEASURED:
+ * "domain"                G_TYPE_UINT          The domain identifier of the domain
+ * "mean-path-delay-avg"   GST_TYPE_CLOCK_TIME  Average mean path delay
+ * "mean-path-delay"       GST_TYPE_CLOCK_TIME  Latest mean path delay
+ * "delay-request-delay"   GST_TYPE_CLOCK_TIME  Delay of DELAY_REQ / DELAY_RESP messages
+ *
+ * GST_PTP_STATISTICS_TIME_UPDATED:
+ * "domain"                G_TYPE_UINT          The domain identifier of the domain
+ * "mean-path-delay-avg"   GST_TYPE_CLOCK_TIME  Average mean path delay
+ * "local-time"            GST_TYPE_CLOCK_TIME  Local time that corresponds to ptp-time
+ * "ptp-time"              GST_TYPE_CLOCK_TIME  Newly measured PTP time at local-time
+ * "estimated-ptp-time"    GST_TYPE_CLOCK_TIME  Estimated PTP time based on previous measurements
+ * "discontinuity"         G_TYPE_INT64         Difference between estimated and measured PTP time
+ * "synced"                G_TYPE_BOOLEAN       Currently synced to the remote clock
+ * "r-squared"             G_TYPE_DOUBLE        R² of clock estimation regression
+ * "internal-time"         GST_TYPE_CLOCK_TIME  Internal time clock parameter
+ * "external-time"         GST_TYPE_CLOCK_TIME  External time clock parameter
+ * "rate-num"              G_TYPE_UINT64        Internal/external rate numerator
+ * "rate-den"              G_TYPE_UINT64        Internal/external rate denominator
+ * "rate"                  G_TYPE_DOUBLE        Internal/external rate
+ *
+ * If %FALSE is returned, the callback is removed and never called again.
+ *
+ */
+typedef gboolean  (*GstPtpStatisticsCallback)      (guint8 domain,
+                                                    const GstStructure * stats,
+                                                    gpointer user_data);
+gulong          gst_ptp_statistics_callback_add    (GstPtpStatisticsCallback callback,
+                                                    gpointer user_data, GDestroyNotify destroy_data);
+void            gst_ptp_statistics_callback_remove (gulong id);
+
+GstClock*       gst_ptp_clock_new                  (const gchar *name,
+                                                    guint domain);
+
+G_END_DECLS
+
+#endif /* __GST_PTP_CLOCK_H__ */
+
diff --git a/libs/gst/net/net.h b/libs/gst/net/net.h
index 1ef53d6..8af032e 100644
--- a/libs/gst/net/net.h
+++ b/libs/gst/net/net.h
@@ -27,5 +27,6 @@
 #include <gst/net/gstnetclientclock.h>
 #include <gst/net/gstnettimepacket.h>
 #include <gst/net/gstnettimeprovider.h>
+#include <gst/net/gstptpclock.h>
 
 #endif /* __GST_NET__H__ */
diff --git a/m4/Makefile.in b/m4/Makefile.in
index dabf986..73001ee 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = m4
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -142,6 +153,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -153,7 +165,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -244,6 +261,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -255,9 +273,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -279,6 +299,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -340,8 +361,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -407,6 +430,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -435,7 +459,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu m4/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -610,6 +633,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/m4/check-checks.m4 b/m4/check-checks.m4
index 349a1b5..16ba777 100644
--- a/m4/check-checks.m4
+++ b/m4/check-checks.m4
@@ -7,7 +7,7 @@
 
 CHECK_MAJOR_VERSION=0
 CHECK_MINOR_VERSION=9
-CHECK_MICRO_VERSION=8
+CHECK_MICRO_VERSION=14
 CHECK_VERSION=$CHECK_MAJOR_VERSION.$CHECK_MINOR_VERSION.$CHECK_MICRO_VERSION
 
 AC_SUBST(CHECK_MAJOR_VERSION)
@@ -20,6 +20,82 @@
 
 AC_CHECK_FUNCS([localtime_r])
 
+dnl Check for getpid() and _getpid()
+AC_CHECK_FUNCS([getpid _getpid])
+
+dnl Check for strdup() and _strdup()
+AC_CHECK_DECLS([strdup])
+AC_CHECK_FUNCS([_strdup])
+
+dnl Check for mkstemp
+AC_CHECK_FUNCS([mkstemp])
+
+dnl Check for fork
+AC_CHECK_FUNCS([fork], HAVE_FORK=1, HAVE_FORK=0)
+AC_SUBST(HAVE_FORK)
+
+dnl Check for alarm, localtime_r and strsignal
+dnl First check for time.h as it might be used by localtime_r
+AC_CHECK_HEADERS([time.h])
+AC_CHECK_DECLS([alarm, localtime_r, strsignal], [], [], [
+    AC_INCLUDES_DEFAULT
+#if HAVE_TIME_H
+#include <time.h>
+#endif /* HAVE_TIME_H */
+])
+AC_CHECK_FUNCS([alarm setitimer strsignal])
+AM_CONDITIONAL(HAVE_ALARM, test "x$ac_cv_func_alarm" = "xyes")
+AM_CONDITIONAL(HAVE_LOCALTIME_R, test "x$ac_cv_func_localtime_r" = "xyes")
+AM_CONDITIONAL(HAVE_STRSIGNAL, test "x$ac_cv_func_strsignal" = "xyes")
+
+dnl Check if struct timespec/itimerspec are defined in time.h. If not, we need
+dnl to define it in libs/gst/check/libcheck/libcompat.h. Note the optional
+dnl inclusion of pthread.h. On MinGW(-w64), the pthread.h file contains the
+dnl timespec/itimerspec definitions.
+AC_CHECK_MEMBERS([struct timespec.tv_sec, struct timespec.tv_nsec], [],
+  [AC_DEFINE_UNQUOTED(STRUCT_TIMESPEC_DEFINITION_MISSING, 1,
+    [Need to define the timespec structure])], [
+#include <time.h>
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+])
+AC_CHECK_MEMBERS([struct itimerspec.it_interval, struct itimerspec.it_value],
+  [], [AC_DEFINE_UNQUOTED(STRUCT_ITIMERSPEC_DEFINITION_MISSING, 1,
+    [Need to define the itimerspec structure])], [
+#include <time.h>
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+])
+
+dnl Check if types timer_t/clockid_t are defined. If not, we need to define
+dnl it in libs/gst/check/libcheck/ibcompat.h. Note the optional inclusion of
+dnl pthread.h. On MinGW(-w64), the pthread.h file contains the
+dnl timer_t/clockid_t definitions.
+AC_CHECK_TYPE(timer_t, [], [
+    AC_DEFINE([timer_t], [int], [timer_t])
+  ], [
+    AC_INCLUDES_DEFAULT
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+])
+AC_CHECK_TYPE(clockid_t, [], [
+    AC_DEFINE([clockid_t], [int], [clockid_t])
+  ], [
+    AC_INCLUDES_DEFAULT
+#if HAVE_PTHREAD
+#include <pthread.h>
+#endif /* HAVE_PTHREAD */
+])
+
+dnl Check for POSIX timer functions in librt
+AC_CHECK_LIB([rt], [timer_create, timer_settime, timer_delete])
+AM_CONDITIONAL(HAVE_TIMER_CREATE_SETTIME_DELETE, test "x$ac_cv_lib_rt_timer_create__timer_settime__timer_delete" = "xyes")
+
+dnl Allow for checking HAVE_CLOCK_GETTIME in automake files
+AM_CONDITIONAL(HAVE_CLOCK_GETTIME, test "x$ac_cv_func_clock_gettime" = "xyes")
 
 dnl Create _stdint.h in the top-level directory
 AX_CREATE_STDINT_H
diff --git a/missing b/missing
index db98974..f62bbae 100755
--- a/missing
+++ b/missing
@@ -3,7 +3,7 @@
 
 scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 93277d3..1e15507 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,17 +90,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = pkgconfig
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/gstreamer.pc.in \
-	$(srcdir)/gstreamer-uninstalled.pc.in \
-	$(srcdir)/gstreamer-base.pc.in \
-	$(srcdir)/gstreamer-base-uninstalled.pc.in \
-	$(srcdir)/gstreamer-check.pc.in \
-	$(srcdir)/gstreamer-check-uninstalled.pc.in \
-	$(srcdir)/gstreamer-controller.pc.in \
-	$(srcdir)/gstreamer-controller-uninstalled.pc.in \
-	$(srcdir)/gstreamer-net.pc.in \
-	$(srcdir)/gstreamer-net-uninstalled.pc.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -99,6 +98,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -116,7 +116,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -129,6 +129,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES = gstreamer.pc gstreamer-uninstalled.pc \
@@ -186,6 +187,17 @@
 am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
 DATA = $(pkgconfig_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(srcdir)/gstreamer-base-uninstalled.pc.in \
+	$(srcdir)/gstreamer-base.pc.in \
+	$(srcdir)/gstreamer-check-uninstalled.pc.in \
+	$(srcdir)/gstreamer-check.pc.in \
+	$(srcdir)/gstreamer-controller-uninstalled.pc.in \
+	$(srcdir)/gstreamer-controller.pc.in \
+	$(srcdir)/gstreamer-net-uninstalled.pc.in \
+	$(srcdir)/gstreamer-net.pc.in \
+	$(srcdir)/gstreamer-uninstalled.pc.in \
+	$(srcdir)/gstreamer.pc.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -197,7 +209,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -288,6 +305,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -299,9 +317,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -323,6 +343,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -384,8 +405,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -451,6 +474,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -516,7 +540,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pkgconfig/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu pkgconfig/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -737,6 +760,8 @@
 	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
 	uninstall-am uninstall-pkgconfigDATA
 
+.PRECIOUS: Makefile
+
 
 all-local: $(pcfiles) $(pcfiles_uninstalled)
 
diff --git a/pkgconfig/gstreamer-uninstalled.pc.in b/pkgconfig/gstreamer-uninstalled.pc.in
index ac1eeef..bf8bf42 100644
--- a/pkgconfig/gstreamer-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-uninstalled.pc.in
@@ -7,6 +7,8 @@
 toolsdir=@abs_top_builddir@/tools
 pluginsdir=@abs_top_builddir@
 girdir=@abs_top_builddir@/gst
+completionsdir=@abs_top_builddir@/data/completions
+helpersdir=@abs_top_builddir@/libs/gst/helpers
 typelibdir=@abs_top_builddir@/gst
 
 Name: GStreamer Uninstalled
diff --git a/pkgconfig/gstreamer.pc.in b/pkgconfig/gstreamer.pc.in
index b949d6c..381c96d 100644
--- a/pkgconfig/gstreamer.pc.in
+++ b/pkgconfig/gstreamer.pc.in
@@ -7,6 +7,8 @@
 datarootdir=${prefix}/share
 datadir=${datarootdir}
 girdir=${datadir}/gir-1.0
+completionsdir=@BASH_COMPLETION_DIR@
+helpersdir=@BASH_HELPERS_DIR@
 typelibdir=${libdir}/girepository-1.0
 
 Name: GStreamer
@@ -15,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}
+Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 17233d2..4e46e71 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,8 +1,3 @@
 SUBDIRS = elements
 
 DIST_SUBDIRS = elements
-
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer \
-	 -:SUBDIR $(patsubst %,plugins/%, $(SUBDIRS)) \
-	> $@
diff --git a/plugins/Makefile.in b/plugins/Makefile.in
index 72a07c9..cf163b9 100644
--- a/plugins/Makefile.in
+++ b/plugins/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = plugins
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -176,6 +187,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -212,7 +224,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -303,6 +320,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -314,9 +332,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -338,6 +358,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -399,8 +420,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -466,6 +489,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -495,7 +519,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu plugins/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -790,11 +813,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer \
-	 -:SUBDIR $(patsubst %,plugins/%, $(SUBDIRS)) \
-	> $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/plugins/elements/Makefile.am b/plugins/elements/Makefile.am
index 3821b3c..db4d38c 100644
--- a/plugins/elements/Makefile.am
+++ b/plugins/elements/Makefile.am
@@ -4,6 +4,7 @@
 libgstcoreelements_la_DEPENDENCIES = $(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la
 libgstcoreelements_la_SOURCES =	\
 	gstcapsfilter.c		\
+	gstconcat.c		\
 	gstdownloadbuffer.c     \
 	gstelements.c		\
 	gstelements_private.c	\
@@ -23,6 +24,7 @@
 	gstsparsefile.c		\
 	gsttee.c		\
 	gsttypefindelement.c	\
+	gststreamiddemux.c	\
 	gstvalve.c
 
 libgstcoreelements_la_CFLAGS = $(GST_OBJ_CFLAGS)
@@ -34,6 +36,7 @@
 
 noinst_HEADERS =		\
 	gstcapsfilter.h		\
+	gstconcat.h		\
 	gstdownloadbuffer.h	\
 	gstelements_private.h	\
 	gstfakesink.h		\
@@ -52,6 +55,7 @@
 	gstsparsefile.h		\
 	gsttee.h		\
 	gsttypefindelement.h	\
+	gststreamiddemux.h	\
 	gstvalve.h
 
 EXTRA_DIST = gstfdsrc.c \
@@ -64,14 +68,3 @@
 	$(GCOV) -b -f -o $^ > $@.out
 
 gcov: $(libgstcoreelements_la_SOURCES:=.gcov)
-
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstcoreelements -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstcoreelements_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstcoreelements_la_CFLAGS) \
-	 -:LDFLAGS $(libgstcoreelements_la_LDFLAGS) \
-	            $(libgstcoreelements_la_LIBADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	               LOCAL_MODULE_PATH:=$$\(TARGET_OUT\)/lib/gstreamer-@GST_API_VERSION@ \
-	> $@
diff --git a/plugins/elements/Makefile.in b/plugins/elements/Makefile.in
index a7df076..9d3538f 100644
--- a/plugins/elements/Makefile.in
+++ b/plugins/elements/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = plugins/elements
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(noinst_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,6 +130,8 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -157,6 +168,7 @@
 am__DEPENDENCIES_1 =
 am_libgstcoreelements_la_OBJECTS =  \
 	libgstcoreelements_la-gstcapsfilter.lo \
+	libgstcoreelements_la-gstconcat.lo \
 	libgstcoreelements_la-gstdownloadbuffer.lo \
 	libgstcoreelements_la-gstelements.lo \
 	libgstcoreelements_la-gstelements_private.lo \
@@ -176,6 +188,7 @@
 	libgstcoreelements_la-gstsparsefile.lo \
 	libgstcoreelements_la-gsttee.lo \
 	libgstcoreelements_la-gsttypefindelement.lo \
+	libgstcoreelements_la-gststreamiddemux.lo \
 	libgstcoreelements_la-gstvalve.lo
 libgstcoreelements_la_OBJECTS = $(am_libgstcoreelements_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -247,6 +260,7 @@
   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@
@@ -258,7 +272,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -349,6 +368,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -360,9 +380,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -384,6 +406,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -445,8 +468,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -512,6 +537,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -528,6 +554,7 @@
 libgstcoreelements_la_DEPENDENCIES = $(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la
 libgstcoreelements_la_SOURCES = \
 	gstcapsfilter.c		\
+	gstconcat.c		\
 	gstdownloadbuffer.c     \
 	gstelements.c		\
 	gstelements_private.c	\
@@ -547,6 +574,7 @@
 	gstsparsefile.c		\
 	gsttee.c		\
 	gsttypefindelement.c	\
+	gststreamiddemux.c	\
 	gstvalve.c
 
 libgstcoreelements_la_CFLAGS = $(GST_OBJ_CFLAGS)
@@ -558,6 +586,7 @@
 libgstcoreelements_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 noinst_HEADERS = \
 	gstcapsfilter.h		\
+	gstconcat.h		\
 	gstdownloadbuffer.h	\
 	gstelements_private.h	\
 	gstfakesink.h		\
@@ -576,6 +605,7 @@
 	gstsparsefile.h		\
 	gsttee.h		\
 	gsttypefindelement.h	\
+	gststreamiddemux.h	\
 	gstvalve.h
 
 EXTRA_DIST = gstfdsrc.c \
@@ -598,7 +628,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/elements/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu plugins/elements/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -662,6 +691,7 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstcapsfilter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstconcat.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstelements.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstelements_private.Plo@am__quote@
@@ -679,6 +709,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstqueue.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstqueue2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstsparsefile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gststreamiddemux.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gsttee.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gsttypefindelement.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstvalve.Plo@am__quote@
@@ -714,6 +745,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 $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gstcapsfilter.lo `test -f 'gstcapsfilter.c' || echo '$(srcdir)/'`gstcapsfilter.c
 
+libgstcoreelements_la-gstconcat.lo: gstconcat.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gstconcat.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gstconcat.Tpo -c -o libgstcoreelements_la-gstconcat.lo `test -f 'gstconcat.c' || echo '$(srcdir)/'`gstconcat.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gstconcat.Tpo $(DEPDIR)/libgstcoreelements_la-gstconcat.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstconcat.c' object='libgstcoreelements_la-gstconcat.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 $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gstconcat.lo `test -f 'gstconcat.c' || echo '$(srcdir)/'`gstconcat.c
+
 libgstcoreelements_la-gstdownloadbuffer.lo: gstdownloadbuffer.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gstdownloadbuffer.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Tpo -c -o libgstcoreelements_la-gstdownloadbuffer.lo `test -f 'gstdownloadbuffer.c' || echo '$(srcdir)/'`gstdownloadbuffer.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Tpo $(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Plo
@@ -847,6 +885,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 $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gsttypefindelement.lo `test -f 'gsttypefindelement.c' || echo '$(srcdir)/'`gsttypefindelement.c
 
+libgstcoreelements_la-gststreamiddemux.lo: gststreamiddemux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gststreamiddemux.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gststreamiddemux.Tpo -c -o libgstcoreelements_la-gststreamiddemux.lo `test -f 'gststreamiddemux.c' || echo '$(srcdir)/'`gststreamiddemux.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gststreamiddemux.Tpo $(DEPDIR)/libgstcoreelements_la-gststreamiddemux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gststreamiddemux.c' object='libgstcoreelements_la-gststreamiddemux.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 $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gststreamiddemux.lo `test -f 'gststreamiddemux.c' || echo '$(srcdir)/'`gststreamiddemux.c
+
 libgstcoreelements_la-gstvalve.lo: gstvalve.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gstvalve.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gstvalve.Tpo -c -o libgstcoreelements_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gstvalve.Tpo $(DEPDIR)/libgstcoreelements_la-gstvalve.Plo
@@ -1068,23 +1113,14 @@
 	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-pluginLTLIBRARIES
 
+.PRECIOUS: Makefile
+
 
 %.c.gcov: .libs/libgstcoreelements_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
 
 gcov: $(libgstcoreelements_la_SOURCES:=.gcov)
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer -:SHARED libgstcoreelements -:TAGS eng debug \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES $(libgstcoreelements_la_SOURCES) \
-	 -:CFLAGS $(DEFS) $(libgstcoreelements_la_CFLAGS) \
-	 -:LDFLAGS $(libgstcoreelements_la_LDFLAGS) \
-	            $(libgstcoreelements_la_LIBADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	               LOCAL_MODULE_PATH:=$$\(TARGET_OUT\)/lib/gstreamer-@GST_API_VERSION@ \
-	> $@
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/plugins/elements/gstcapsfilter.c b/plugins/elements/gstcapsfilter.c
index a499453..74dbafb 100644
--- a/plugins/elements/gstcapsfilter.c
+++ b/plugins/elements/gstcapsfilter.c
@@ -28,8 +28,11 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch videotestsrc ! video/x-raw,format=GRAY8 ! videoconvert ! autovideosink
- * ]| Limits acceptable video from videotestsrc to be grayscale.
+ * gst-launch-1.0 videotestsrc ! capsfilter caps=video/x-raw,format=GRAY8 ! videoconvert ! autovideosink
+ * ]| Limits acceptable video from videotestsrc to be grayscale. Equivalent to
+ * |[
+ * gst-launch-1.0 videotestsrc ! video/x-raw,format=GRAY8 ! videoconvert ! autovideosink
+ * ]| which is a short notation for the capsfilter element.
  * </refsect2>
  */
 
@@ -43,9 +46,11 @@
 enum
 {
   PROP_0,
-  PROP_FILTER_CAPS
+  PROP_FILTER_CAPS,
+  PROP_CAPS_CHANGE_MODE
 };
 
+#define DEFAULT_CAPS_CHANGE_MODE (GST_CAPS_FILTER_CAPS_CHANGE_MODE_IMMEDIATE)
 
 static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
@@ -61,6 +66,26 @@
 GST_DEBUG_CATEGORY_STATIC (gst_capsfilter_debug);
 #define GST_CAT_DEFAULT gst_capsfilter_debug
 
+/* TODO: Add a drop-buffers mode */
+#define GST_TYPE_CAPS_FILTER_CAPS_CHANGE_MODE (gst_caps_filter_caps_change_mode_get_type())
+static GType
+gst_caps_filter_caps_change_mode_get_type (void)
+{
+  static GType type = 0;
+  static const GEnumValue data[] = {
+    {GST_CAPS_FILTER_CAPS_CHANGE_MODE_IMMEDIATE,
+        "Only accept the current filter caps", "immediate"},
+    {GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED,
+        "Temporarily accept previous filter caps", "delayed"},
+    {0, NULL, NULL},
+  };
+
+  if (!type) {
+    type = g_enum_register_static ("GstCapsFilterCapsChangeMode", data);
+  }
+  return type;
+}
+
 #define _do_init \
     GST_DEBUG_CATEGORY_INIT (gst_capsfilter_debug, "capsfilter", 0, \
     "capsfilter element");
@@ -104,7 +129,15 @@
           _("Restrict the possible allowed capabilities (NULL means ANY). "
               "Setting this property takes a reference to the supplied GstCaps "
               "object."), GST_TYPE_CAPS,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_CAPS_CHANGE_MODE,
+      g_param_spec_enum ("caps-change-mode", _("Caps Change Mode"),
+          _("Filter caps change behaviour"),
+          GST_TYPE_CAPS_FILTER_CAPS_CHANGE_MODE, DEFAULT_CAPS_CHANGE_MODE,
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   gstelement_class = GST_ELEMENT_CLASS (klass);
   gst_element_class_set_static_metadata (gstelement_class,
@@ -135,13 +168,15 @@
   gst_base_transform_set_gap_aware (trans, TRUE);
   gst_base_transform_set_prefer_passthrough (trans, FALSE);
   filter->filter_caps = gst_caps_new_any ();
+  filter->filter_caps_used = FALSE;
+  filter->caps_change_mode = DEFAULT_CAPS_CHANGE_MODE;
 }
 
 static void
 gst_capsfilter_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
-  GstCapsFilter *capsfilter = GST_CAPSFILTER (object);
+  GstCapsFilter *capsfilter = GST_CAPS_FILTER (object);
 
   switch (prop_id) {
     case PROP_FILTER_CAPS:{
@@ -159,6 +194,18 @@
       GST_OBJECT_LOCK (capsfilter);
       old_caps = capsfilter->filter_caps;
       capsfilter->filter_caps = new_caps;
+      if (old_caps && capsfilter->filter_caps_used &&
+          capsfilter->caps_change_mode ==
+          GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED) {
+        capsfilter->previous_caps =
+            g_list_prepend (capsfilter->previous_caps, gst_caps_ref (old_caps));
+      } else if (capsfilter->caps_change_mode !=
+          GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED) {
+        g_list_free_full (capsfilter->previous_caps,
+            (GDestroyNotify) gst_caps_unref);
+        capsfilter->previous_caps = NULL;
+      }
+      capsfilter->filter_caps_used = FALSE;
       GST_OBJECT_UNLOCK (capsfilter);
 
       gst_caps_unref (old_caps);
@@ -168,6 +215,21 @@
       gst_base_transform_reconfigure_sink (GST_BASE_TRANSFORM (object));
       break;
     }
+    case PROP_CAPS_CHANGE_MODE:{
+      GstCapsFilterCapsChangeMode old_change_mode;
+
+      GST_OBJECT_LOCK (capsfilter);
+      old_change_mode = capsfilter->caps_change_mode;
+      capsfilter->caps_change_mode = g_value_get_enum (value);
+
+      if (capsfilter->caps_change_mode != old_change_mode) {
+        g_list_free_full (capsfilter->previous_caps,
+            (GDestroyNotify) gst_caps_unref);
+        capsfilter->previous_caps = NULL;
+      }
+      GST_OBJECT_UNLOCK (capsfilter);
+      break;
+    }
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -178,7 +240,7 @@
 gst_capsfilter_get_property (GObject * object, guint prop_id, GValue * value,
     GParamSpec * pspec)
 {
-  GstCapsFilter *capsfilter = GST_CAPSFILTER (object);
+  GstCapsFilter *capsfilter = GST_CAPS_FILTER (object);
 
   switch (prop_id) {
     case PROP_FILTER_CAPS:
@@ -186,6 +248,9 @@
       gst_value_set_caps (value, capsfilter->filter_caps);
       GST_OBJECT_UNLOCK (capsfilter);
       break;
+    case PROP_CAPS_CHANGE_MODE:
+      g_value_set_enum (value, capsfilter->caps_change_mode);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -195,7 +260,7 @@
 static void
 gst_capsfilter_dispose (GObject * object)
 {
-  GstCapsFilter *filter = GST_CAPSFILTER (object);
+  GstCapsFilter *filter = GST_CAPS_FILTER (object);
 
   gst_caps_replace (&filter->filter_caps, NULL);
   g_list_free_full (filter->pending_events, (GDestroyNotify) gst_event_unref);
@@ -208,13 +273,18 @@
 gst_capsfilter_transform_caps (GstBaseTransform * base,
     GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
-  GstCapsFilter *capsfilter = GST_CAPSFILTER (base);
+  GstCapsFilter *capsfilter = GST_CAPS_FILTER (base);
   GstCaps *ret, *filter_caps, *tmp;
+  gboolean retried = FALSE;
+  GstCapsFilterCapsChangeMode caps_change_mode;
 
   GST_OBJECT_LOCK (capsfilter);
   filter_caps = gst_caps_ref (capsfilter->filter_caps);
+  capsfilter->filter_caps_used = TRUE;
+  caps_change_mode = capsfilter->caps_change_mode;
   GST_OBJECT_UNLOCK (capsfilter);
 
+retry:
   if (filter) {
     tmp =
         gst_caps_intersect_full (filter, filter_caps, GST_CAPS_INTERSECT_FIRST);
@@ -230,6 +300,26 @@
       filter_caps);
   GST_DEBUG_OBJECT (capsfilter, "intersect: %" GST_PTR_FORMAT, ret);
 
+  if (gst_caps_is_empty (ret)
+      && caps_change_mode ==
+      GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED && capsfilter->previous_caps
+      && !retried) {
+    GList *l;
+
+    GST_DEBUG_OBJECT (capsfilter,
+        "Current filter caps are not compatible, retry with previous");
+    GST_OBJECT_LOCK (capsfilter);
+    gst_caps_unref (filter_caps);
+    gst_caps_unref (ret);
+    filter_caps = gst_caps_new_empty ();
+    for (l = capsfilter->previous_caps; l; l = l->next) {
+      filter_caps = gst_caps_merge (filter_caps, gst_caps_ref (l->data));
+    }
+    GST_OBJECT_UNLOCK (capsfilter);
+    retried = TRUE;
+    goto retry;
+  }
+
   gst_caps_unref (filter_caps);
 
   return ret;
@@ -239,16 +329,36 @@
 gst_capsfilter_accept_caps (GstBaseTransform * base,
     GstPadDirection direction, GstCaps * caps)
 {
-  GstCapsFilter *capsfilter = GST_CAPSFILTER (base);
+  GstCapsFilter *capsfilter = GST_CAPS_FILTER (base);
   GstCaps *filter_caps;
   gboolean ret;
 
   GST_OBJECT_LOCK (capsfilter);
   filter_caps = gst_caps_ref (capsfilter->filter_caps);
+  capsfilter->filter_caps_used = TRUE;
   GST_OBJECT_UNLOCK (capsfilter);
 
   ret = gst_caps_can_intersect (caps, filter_caps);
   GST_DEBUG_OBJECT (capsfilter, "can intersect: %d", ret);
+  if (!ret
+      && capsfilter->caps_change_mode ==
+      GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED) {
+    GList *l;
+
+    GST_OBJECT_LOCK (capsfilter);
+    for (l = capsfilter->previous_caps; l; l = l->next) {
+      ret = gst_caps_can_intersect (caps, l->data);
+      if (ret)
+        break;
+    }
+    GST_OBJECT_UNLOCK (capsfilter);
+
+    /* Tell upstream to reconfigure, it's still
+     * looking at old caps */
+    if (ret)
+      gst_base_transform_reconfigure_sink (base);
+  }
+
   if (ret) {
     /* if we can intersect, see if the other end also accepts */
     if (direction == GST_PAD_SRC)
@@ -303,7 +413,7 @@
     GstBuffer ** buf)
 {
   GstFlowReturn ret = GST_FLOW_OK;
-  GstCapsFilter *filter = GST_CAPSFILTER (trans);
+  GstCapsFilter *filter = GST_CAPS_FILTER (trans);
 
   /* always return the input as output buffer */
   *buf = input;
@@ -379,7 +489,8 @@
 static gboolean
 gst_capsfilter_sink_event (GstBaseTransform * trans, GstEvent * event)
 {
-  GstCapsFilter *filter = GST_CAPSFILTER (trans);
+  GstCapsFilter *filter = GST_CAPS_FILTER (trans);
+  gboolean ret;
 
   if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP) {
     GList *l;
@@ -421,16 +532,54 @@
 done:
 
   GST_LOG_OBJECT (trans, "Forwarding %s event", GST_EVENT_TYPE_NAME (event));
-  return GST_BASE_TRANSFORM_CLASS (parent_class)->sink_event (trans, event);
+  ret =
+      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;
+
+    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);
+        }
+        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);
+  }
+  gst_event_unref (event);
+
+  return ret;
 }
 
 static gboolean
 gst_capsfilter_stop (GstBaseTransform * trans)
 {
-  GstCapsFilter *filter = GST_CAPSFILTER (trans);
+  GstCapsFilter *filter = GST_CAPS_FILTER (trans);
 
   g_list_free_full (filter->pending_events, (GDestroyNotify) gst_event_unref);
   filter->pending_events = NULL;
 
+  GST_OBJECT_LOCK (filter);
+  g_list_free_full (filter->previous_caps, (GDestroyNotify) gst_caps_unref);
+  filter->previous_caps = NULL;
+  GST_OBJECT_UNLOCK (filter);
+
   return TRUE;
 }
diff --git a/plugins/elements/gstcapsfilter.h b/plugins/elements/gstcapsfilter.h
index ab9ac1f..652ec34 100644
--- a/plugins/elements/gstcapsfilter.h
+++ b/plugins/elements/gstcapsfilter.h
@@ -21,8 +21,8 @@
  */
 
 
-#ifndef __GST_CAPSFILTER_H__
-#define __GST_CAPSFILTER_H__
+#ifndef __GST_CAPS_FILTER_H__
+#define __GST_CAPS_FILTER_H__
 
 
 #include <gst/gst.h>
@@ -30,21 +30,33 @@
 
 G_BEGIN_DECLS
 
-#define GST_TYPE_CAPSFILTER \
+#define GST_TYPE_CAPS_FILTER \
   (gst_capsfilter_get_type())
-#define GST_CAPSFILTER(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CAPSFILTER,GstCapsFilter))
-#define GST_CAPSFILTER_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CAPSFILTER,GstCapsFilterClass))
-#define GST_IS_CAPSFILTER(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CAPSFILTER))
-#define GST_IS_CAPSFILTER_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CAPSFILTER))
+#define GST_CAPS_FILTER(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CAPS_FILTER,GstCapsFilter))
+#define GST_CAPS_FILTER_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CAPS_FILTER,GstCapsFilterClass))
+#define GST_IS_CAPS_FILTER(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CAPS_FILTER))
+#define GST_IS_CAPS_FILTER_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CAPS_FILTER))
 
 typedef struct _GstCapsFilter GstCapsFilter;
 typedef struct _GstCapsFilterClass GstCapsFilterClass;
 
 /**
+ * GstCapsFilterCapsChangeMode:
+ * @GST_CAPS_FILTER_CAPS_CHANGE_MODE_IMMEDIATE: Only accept the current filter caps
+ * @GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED: Temporarily accept previous filter caps
+ *
+ * Filter caps change behaviour
+ */
+typedef enum {
+  GST_CAPS_FILTER_CAPS_CHANGE_MODE_IMMEDIATE,
+  GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED
+} GstCapsFilterCapsChangeMode;
+
+/**
  * GstCapsFilter:
  *
  * The opaque #GstCapsFilter data structure.
@@ -53,7 +65,11 @@
   GstBaseTransform trans;
 
   GstCaps *filter_caps;
+  gboolean filter_caps_used;
+  GstCapsFilterCapsChangeMode caps_change_mode;
+
   GList *pending_events;
+  GList *previous_caps;
 };
 
 struct _GstCapsFilterClass {
@@ -64,5 +80,5 @@
 
 G_END_DECLS
 
-#endif /* __GST_CAPSFILTER_H__ */
+#endif /* __GST_CAPS_FILTER_H__ */
 
diff --git a/plugins/elements/gstconcat.c b/plugins/elements/gstconcat.c
new file mode 100644
index 0000000..5397c8e
--- /dev/null
+++ b/plugins/elements/gstconcat.c
@@ -0,0 +1,842 @@
+/* GStreamer concat element
+ *
+ *  Copyright (c) 2014 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+/**
+ * SECTION:element-concat
+ * @see_also: #GstFunnel
+ *
+ * Concatenates streams together to one continous stream.
+ *
+ * All streams but the current one are blocked until the current one
+ * finished with %GST_EVENT_EOS. Then the next stream is enabled, while
+ * keeping the running time continous for %GST_FORMAT_TIME segments or
+ * keeping the segment continous for %GST_FORMAT_BYTES segments.
+ *
+ * Streams are switched in the order in which the sinkpads were requested.
+ *
+ * By default, the stream segment's base values are adjusted to ensure
+ * the segment transitions between streams are continuous. In some cases,
+ * it may be desirable to turn off these adjustments (for example, because
+ * another downstream element like a streamsynchronizer adjusts the base
+ * values on its own). The adjust-value property can be used for this purpose.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch-1.0 concat name=c ! xvimagesink  videotestsrc num-buffers=100 ! c.   videotestsrc num-buffers=100 pattern=ball ! c.
+ * ]| Plays two video streams one after another.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstconcat.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_concat_debug);
+#define GST_CAT_DEFAULT gst_concat_debug
+
+G_GNUC_INTERNAL GType gst_concat_pad_get_type (void);
+
+#define GST_TYPE_CONCAT_PAD (gst_concat_pad_get_type())
+#define GST_CONCAT_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_CONCAT_PAD, GstConcatPad))
+#define GST_CONCAT_PAD_CAST(obj) ((GstConcatPad *)(obj))
+#define GST_CONCAT_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_CONCAT_PAD, GstConcatPadClass))
+#define GST_IS_CONCAT_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_CONCAT_PAD))
+#define GST_IS_CONCAT_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_CONCAT_PAD))
+
+typedef struct _GstConcatPad GstConcatPad;
+typedef struct _GstConcatPadClass GstConcatPadClass;
+
+struct _GstConcatPad
+{
+  GstPad parent;
+
+  GstSegment segment;
+
+  /* Protected by the concat lock */
+  gboolean flushing;
+};
+
+struct _GstConcatPadClass
+{
+  GstPadClass parent;
+};
+
+G_DEFINE_TYPE (GstConcatPad, gst_concat_pad, GST_TYPE_PAD);
+
+static void
+gst_concat_pad_class_init (GstConcatPadClass * klass)
+{
+}
+
+static void
+gst_concat_pad_init (GstConcatPad * self)
+{
+  gst_segment_init (&self->segment, GST_FORMAT_UNDEFINED);
+  self->flushing = FALSE;
+}
+
+static GstStaticPadTemplate concat_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink_%u",
+    GST_PAD_SINK,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate concat_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+enum
+{
+  PROP_0,
+  PROP_ACTIVE_PAD,
+  PROP_ADJUST_BASE
+};
+
+#define DEFAULT_ADJUST_BASE TRUE
+
+#define _do_init \
+  GST_DEBUG_CATEGORY_INIT (gst_concat_debug, "concat", 0, "concat element");
+#define gst_concat_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstConcat, gst_concat, GST_TYPE_ELEMENT, _do_init);
+
+static void gst_concat_dispose (GObject * object);
+static void gst_concat_finalize (GObject * object);
+static void gst_concat_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec);
+static void gst_concat_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec);
+
+static GstStateChangeReturn gst_concat_change_state (GstElement * element,
+    GstStateChange transition);
+static GstPad *gst_concat_request_new_pad (GstElement * element,
+    GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
+static void gst_concat_release_pad (GstElement * element, GstPad * pad);
+
+static GstFlowReturn gst_concat_sink_chain (GstPad * pad, GstObject * parent,
+    GstBuffer * buffer);
+static gboolean gst_concat_sink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event);
+static gboolean gst_concat_sink_query (GstPad * pad, GstObject * parent,
+    GstQuery * query);
+
+static gboolean gst_concat_src_event (GstPad * pad, GstObject * parent,
+    GstEvent * event);
+static gboolean gst_concat_src_query (GstPad * pad, GstObject * parent,
+    GstQuery * query);
+
+static gboolean gst_concat_switch_pad (GstConcat * self);
+
+static void gst_concat_notify_active_pad (GstConcat * self);
+
+static GParamSpec *pspec_active_pad = NULL;
+
+static void
+gst_concat_class_init (GstConcatClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+  gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_concat_dispose);
+  gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_concat_finalize);
+
+  gobject_class->get_property = gst_concat_get_property;
+  gobject_class->set_property = gst_concat_set_property;
+
+  pspec_active_pad = g_param_spec_object ("active-pad", "Active pad",
+      "Currently active src pad", GST_TYPE_PAD, G_PARAM_READABLE |
+      G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_ACTIVE_PAD,
+      pspec_active_pad);
+  g_object_class_install_property (gobject_class, PROP_ADJUST_BASE,
+      g_param_spec_boolean ("adjust-base", "Adjust segment base",
+          "Adjust the base value of segments to ensure they are adjacent",
+          DEFAULT_ADJUST_BASE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_set_static_metadata (gstelement_class,
+      "Concat", "Generic", "Concatenate multiple streams",
+      "Sebastian Dröge <sebastian@centricular.com>");
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&concat_sink_template));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&concat_src_template));
+
+  gstelement_class->request_new_pad =
+      GST_DEBUG_FUNCPTR (gst_concat_request_new_pad);
+  gstelement_class->release_pad = GST_DEBUG_FUNCPTR (gst_concat_release_pad);
+  gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_concat_change_state);
+}
+
+static void
+gst_concat_init (GstConcat * self)
+{
+  g_mutex_init (&self->lock);
+  g_cond_init (&self->cond);
+
+  self->srcpad = gst_pad_new_from_static_template (&concat_src_template, "src");
+  gst_pad_set_event_function (self->srcpad,
+      GST_DEBUG_FUNCPTR (gst_concat_src_event));
+  gst_pad_set_query_function (self->srcpad,
+      GST_DEBUG_FUNCPTR (gst_concat_src_query));
+  gst_pad_use_fixed_caps (self->srcpad);
+
+  gst_element_add_pad (GST_ELEMENT (self), self->srcpad);
+
+  self->adjust_base = DEFAULT_ADJUST_BASE;
+}
+
+static void
+gst_concat_dispose (GObject * object)
+{
+  GstConcat *self = GST_CONCAT (object);
+  GList *item;
+
+  gst_object_replace ((GstObject **) & self->current_sinkpad, NULL);
+
+restart:
+  for (item = GST_ELEMENT_PADS (object); item; item = g_list_next (item)) {
+    GstPad *pad = GST_PAD (item->data);
+
+    if (GST_PAD_IS_SINK (pad)) {
+      gst_element_release_request_pad (GST_ELEMENT (object), pad);
+      goto restart;
+    }
+  }
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_concat_finalize (GObject * object)
+{
+  GstConcat *self = GST_CONCAT (object);
+
+  g_mutex_clear (&self->lock);
+  g_cond_clear (&self->cond);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_concat_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstConcat *self = GST_CONCAT (object);
+
+  switch (prop_id) {
+    case PROP_ACTIVE_PAD:{
+      g_mutex_lock (&self->lock);
+      g_value_set_object (value, self->current_sinkpad);
+      g_mutex_unlock (&self->lock);
+      break;
+    }
+    case PROP_ADJUST_BASE:{
+      g_mutex_lock (&self->lock);
+      g_value_set_boolean (value, self->adjust_base);
+      g_mutex_unlock (&self->lock);
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_concat_set_property (GObject * object, guint prop_id, const GValue * value,
+    GParamSpec * pspec)
+{
+  GstConcat *self = GST_CONCAT (object);
+
+  switch (prop_id) {
+    case PROP_ADJUST_BASE:{
+      g_mutex_lock (&self->lock);
+      self->adjust_base = g_value_get_boolean (value);
+      g_mutex_unlock (&self->lock);
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstPad *
+gst_concat_request_new_pad (GstElement * element, GstPadTemplate * templ,
+    const gchar * name, const GstCaps * caps)
+{
+  GstConcat *self = GST_CONCAT (element);
+  GstPad *sinkpad;
+  gchar *pad_name;
+  gboolean do_notify = FALSE;
+
+  GST_DEBUG_OBJECT (element, "requesting pad");
+
+  g_mutex_lock (&self->lock);
+  pad_name = g_strdup_printf ("sink_%u", self->pad_count);
+  self->pad_count++;
+  g_mutex_unlock (&self->lock);
+
+  sinkpad = GST_PAD_CAST (g_object_new (GST_TYPE_CONCAT_PAD,
+          "name", pad_name, "direction", templ->direction, "template", templ,
+          NULL));
+  g_free (pad_name);
+
+  gst_pad_set_chain_function (sinkpad,
+      GST_DEBUG_FUNCPTR (gst_concat_sink_chain));
+  gst_pad_set_event_function (sinkpad,
+      GST_DEBUG_FUNCPTR (gst_concat_sink_event));
+  gst_pad_set_query_function (sinkpad,
+      GST_DEBUG_FUNCPTR (gst_concat_sink_query));
+  GST_OBJECT_FLAG_SET (sinkpad, GST_PAD_FLAG_PROXY_CAPS);
+  GST_OBJECT_FLAG_SET (sinkpad, GST_PAD_FLAG_PROXY_ALLOCATION);
+
+  gst_pad_set_active (sinkpad, TRUE);
+
+  g_mutex_lock (&self->lock);
+  self->sinkpads = g_list_prepend (self->sinkpads, gst_object_ref (sinkpad));
+  if (!self->current_sinkpad) {
+    do_notify = TRUE;
+    self->current_sinkpad = gst_object_ref (sinkpad);
+  }
+  g_mutex_unlock (&self->lock);
+
+  gst_element_add_pad (element, sinkpad);
+
+  if (do_notify)
+    gst_concat_notify_active_pad (self);
+
+  return sinkpad;
+}
+
+static void
+gst_concat_release_pad (GstElement * element, GstPad * pad)
+{
+  GstConcat *self = GST_CONCAT (element);
+  GstConcatPad *spad = GST_CONCAT_PAD_CAST (pad);
+  GList *l;
+  gboolean current_pad_removed = FALSE;
+  gboolean eos = FALSE;
+  gboolean do_notify = FALSE;
+
+  GST_DEBUG_OBJECT (self, "releasing pad");
+
+  g_mutex_lock (&self->lock);
+  spad->flushing = TRUE;
+  g_cond_broadcast (&self->cond);
+  g_mutex_unlock (&self->lock);
+
+  gst_pad_set_active (pad, FALSE);
+
+  /* Now the pad is definitely not running anymore */
+
+  g_mutex_lock (&self->lock);
+  if (self->current_sinkpad == GST_PAD_CAST (spad)) {
+    eos = !gst_concat_switch_pad (self);
+    current_pad_removed = TRUE;
+    do_notify = TRUE;
+  }
+
+  for (l = self->sinkpads; l; l = l->next) {
+    if ((gpointer) spad == l->data) {
+      gst_object_unref (spad);
+      self->sinkpads = g_list_delete_link (self->sinkpads, l);
+      break;
+    }
+  }
+  g_mutex_unlock (&self->lock);
+
+  gst_element_remove_pad (GST_ELEMENT_CAST (self), pad);
+
+  if (do_notify)
+    gst_concat_notify_active_pad (self);
+
+  if (GST_STATE (self) > GST_STATE_READY) {
+    if (current_pad_removed && !eos)
+      gst_element_post_message (GST_ELEMENT_CAST (self),
+          gst_message_new_duration_changed (GST_OBJECT_CAST (self)));
+
+    /* FIXME: Sending EOS from application thread */
+    if (eos)
+      gst_pad_push_event (self->srcpad, gst_event_new_eos ());
+  }
+}
+
+/* Returns FALSE if flushing
+ * Must be called from the pad's streaming thread
+ */
+static gboolean
+gst_concat_pad_wait (GstConcatPad * spad, GstConcat * self)
+{
+  g_mutex_lock (&self->lock);
+  if (spad->flushing) {
+    g_mutex_unlock (&self->lock);
+    GST_DEBUG_OBJECT (spad, "Flushing");
+    return FALSE;
+  }
+
+  while (spad != GST_CONCAT_PAD_CAST (self->current_sinkpad)) {
+    GST_TRACE_OBJECT (spad, "Not the current sinkpad - waiting");
+    g_cond_wait (&self->cond, &self->lock);
+    if (spad->flushing) {
+      g_mutex_unlock (&self->lock);
+      GST_DEBUG_OBJECT (spad, "Flushing");
+      return FALSE;
+    }
+  }
+  /* This pad can only become not the current sinkpad from
+   * a) This streaming thread (we hold the stream lock)
+   * b) Releasing the pad (takes the stream lock, see above)
+   *
+   * Unlocking here is thus safe and we can safely push
+   * serialized data to our srcpad
+   */
+  GST_DEBUG_OBJECT (spad, "Now the current sinkpad");
+  g_mutex_unlock (&self->lock);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_concat_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstFlowReturn ret;
+  GstConcat *self = GST_CONCAT (parent);
+  GstConcatPad *spad = GST_CONCAT_PAD (pad);
+
+  GST_LOG_OBJECT (pad, "received buffer %p", buffer);
+
+  if (!gst_concat_pad_wait (spad, self))
+    return GST_FLOW_FLUSHING;
+
+  if (self->last_stop == GST_CLOCK_TIME_NONE)
+    self->last_stop = spad->segment.start;
+
+  if (self->format == GST_FORMAT_TIME) {
+    GstClockTime start_time = GST_BUFFER_TIMESTAMP (buffer);
+    GstClockTime end_time = GST_CLOCK_TIME_NONE;
+
+    if (start_time != GST_CLOCK_TIME_NONE)
+      end_time = start_time;
+    if (GST_BUFFER_DURATION_IS_VALID (buffer))
+      end_time += GST_BUFFER_DURATION (buffer);
+
+    if (end_time != GST_CLOCK_TIME_NONE && end_time > self->last_stop)
+      self->last_stop = end_time;
+  } else {
+    self->last_stop += gst_buffer_get_size (buffer);
+  }
+
+  ret = gst_pad_push (self->srcpad, buffer);
+
+  GST_LOG_OBJECT (pad, "handled buffer %s", gst_flow_get_name (ret));
+
+  return ret;
+}
+
+/* Returns FALSE if no further pad, must be called with concat lock */
+static gboolean
+gst_concat_switch_pad (GstConcat * self)
+{
+  GList *l;
+  gboolean next;
+  GstSegment segment;
+  gint64 last_stop;
+
+  segment = GST_CONCAT_PAD (self->current_sinkpad)->segment;
+
+  last_stop = self->last_stop;
+  if (last_stop == GST_CLOCK_TIME_NONE)
+    last_stop = segment.stop;
+  if (last_stop == GST_CLOCK_TIME_NONE)
+    last_stop = segment.start;
+  g_assert (last_stop != GST_CLOCK_TIME_NONE);
+
+  if (last_stop > segment.stop)
+    last_stop = segment.stop;
+
+  if (segment.format == GST_FORMAT_TIME)
+    last_stop =
+        gst_segment_to_running_time (&segment, segment.format, last_stop);
+  else
+    last_stop += segment.start;
+
+  self->current_start_offset += last_stop;
+
+  for (l = self->sinkpads; l; l = l->next) {
+    if ((gpointer) self->current_sinkpad == l->data) {
+      l = l->prev;
+      GST_DEBUG_OBJECT (self,
+          "Switching from pad %" GST_PTR_FORMAT " to %" GST_PTR_FORMAT,
+          self->current_sinkpad, l ? l->data : NULL);
+      gst_object_unref (self->current_sinkpad);
+      self->current_sinkpad = l ? gst_object_ref (l->data) : NULL;
+      g_cond_broadcast (&self->cond);
+      break;
+    }
+  }
+
+  next = self->current_sinkpad != NULL;
+
+  self->last_stop = GST_CLOCK_TIME_NONE;
+
+  return next;
+}
+
+static void
+gst_concat_notify_active_pad (GstConcat * self)
+{
+  g_object_notify_by_pspec ((GObject *) self, pspec_active_pad);
+}
+
+static gboolean
+gst_concat_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GstConcat *self = GST_CONCAT (parent);
+  GstConcatPad *spad = GST_CONCAT_PAD_CAST (pad);
+  gboolean ret = TRUE;
+
+  GST_LOG_OBJECT (pad, "received event %" GST_PTR_FORMAT, event);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_STREAM_START:{
+      if (!gst_concat_pad_wait (spad, self)) {
+        ret = FALSE;
+        gst_event_unref (event);
+      } else {
+        ret = gst_pad_event_default (pad, parent, event);
+      }
+      break;
+    }
+    case GST_EVENT_SEGMENT:{
+      gboolean adjust_base;
+
+      /* Drop segment event, we create our own one */
+      gst_event_copy_segment (event, &spad->segment);
+      gst_event_unref (event);
+
+      g_mutex_lock (&self->lock);
+      adjust_base = self->adjust_base;
+      if (self->format == GST_FORMAT_UNDEFINED) {
+        if (spad->segment.format != GST_FORMAT_TIME
+            && spad->segment.format != GST_FORMAT_BYTES) {
+          g_mutex_unlock (&self->lock);
+          GST_ELEMENT_ERROR (self, CORE, FAILED, (NULL),
+              ("Can only operate in TIME or BYTES format"));
+          ret = FALSE;
+          break;
+        }
+        self->format = spad->segment.format;
+        GST_DEBUG_OBJECT (self, "Operating in %s format",
+            gst_format_get_name (self->format));
+        g_mutex_unlock (&self->lock);
+      } else if (self->format != spad->segment.format) {
+        g_mutex_unlock (&self->lock);
+        GST_ELEMENT_ERROR (self, CORE, FAILED, (NULL),
+            ("Operating in %s format but new pad has %s",
+                gst_format_get_name (self->format),
+                gst_format_get_name (spad->segment.format)));
+        ret = FALSE;
+      } else {
+        g_mutex_unlock (&self->lock);
+      }
+
+      if (!gst_concat_pad_wait (spad, self)) {
+        ret = FALSE;
+      } else {
+        GstSegment segment = spad->segment;
+
+        if (adjust_base) {
+          /* We know no duration */
+          segment.duration = -1;
+
+          /* Update segment values to be continous with last stream */
+          if (self->format == GST_FORMAT_TIME) {
+            segment.base += self->current_start_offset;
+          } else {
+            /* Shift start/stop byte position */
+            segment.start += self->current_start_offset;
+            if (segment.stop != -1)
+              segment.stop += self->current_start_offset;
+          }
+        }
+
+        gst_pad_push_event (self->srcpad, gst_event_new_segment (&segment));
+      }
+      break;
+    }
+    case GST_EVENT_EOS:{
+      gst_event_unref (event);
+
+      if (!gst_concat_pad_wait (spad, self)) {
+        ret = FALSE;
+      } else {
+        gboolean next;
+
+        g_mutex_lock (&self->lock);
+        next = gst_concat_switch_pad (self);
+        g_mutex_unlock (&self->lock);
+        ret = TRUE;
+
+        gst_concat_notify_active_pad (self);
+
+        if (!next) {
+          gst_pad_push_event (self->srcpad, gst_event_new_eos ());
+        } else {
+          gst_element_post_message (GST_ELEMENT_CAST (self),
+              gst_message_new_duration_changed (GST_OBJECT_CAST (self)));
+        }
+      }
+      break;
+    }
+    case GST_EVENT_FLUSH_START:{
+      gboolean forward;
+
+      g_mutex_lock (&self->lock);
+      spad->flushing = TRUE;
+      g_cond_broadcast (&self->cond);
+      forward = (self->current_sinkpad == GST_PAD_CAST (spad));
+      g_mutex_unlock (&self->lock);
+
+      if (forward)
+        ret = gst_pad_event_default (pad, parent, event);
+      else
+        gst_event_unref (event);
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:{
+      gboolean forward;
+
+      gst_segment_init (&spad->segment, GST_FORMAT_UNDEFINED);
+      spad->flushing = FALSE;
+
+      g_mutex_lock (&self->lock);
+      forward = (self->current_sinkpad == GST_PAD_CAST (spad));
+      g_mutex_unlock (&self->lock);
+
+      if (forward) {
+        gboolean reset_time;
+
+        gst_event_parse_flush_stop (event, &reset_time);
+        if (reset_time) {
+          GST_DEBUG_OBJECT (self,
+              "resetting start offset to 0 after flushing with reset_time = TRUE");
+          self->current_start_offset = 0;
+        }
+        ret = gst_pad_event_default (pad, parent, event);
+      } else {
+        gst_event_unref (event);
+      }
+      break;
+    }
+    default:{
+      /* Wait for other serialized events before forwarding */
+      if (GST_EVENT_IS_SERIALIZED (event) && !gst_concat_pad_wait (spad, self)) {
+        gst_event_unref (event);
+        ret = FALSE;
+      } else {
+        ret = gst_pad_event_default (pad, parent, event);
+      }
+      break;
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_concat_sink_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  GstConcat *self = GST_CONCAT (parent);
+  GstConcatPad *spad = GST_CONCAT_PAD_CAST (pad);
+  gboolean ret = TRUE;
+
+  GST_LOG_OBJECT (pad, "received query %" GST_PTR_FORMAT, query);
+
+  switch (GST_QUERY_TYPE (query)) {
+    default:
+      /* Wait for other serialized queries before forwarding */
+      if (GST_QUERY_IS_SERIALIZED (query) && !gst_concat_pad_wait (spad, self)) {
+        ret = FALSE;
+      } else {
+        ret = gst_pad_query_default (pad, parent, query);
+      }
+      break;
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_concat_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GstConcat *self = GST_CONCAT (parent);
+  gboolean ret = TRUE;
+
+  GST_LOG_OBJECT (pad, "received event %" GST_PTR_FORMAT, event);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:{
+      GstPad *sinkpad = NULL;
+
+      g_mutex_lock (&self->lock);
+      if ((sinkpad = self->current_sinkpad))
+        gst_object_ref (sinkpad);
+      g_mutex_unlock (&self->lock);
+      if (sinkpad) {
+        ret = gst_pad_push_event (sinkpad, event);
+        gst_object_unref (sinkpad);
+      } else {
+        gst_event_unref (event);
+        ret = FALSE;
+      }
+      break;
+    }
+    case GST_EVENT_QOS:{
+      GstQOSType type;
+      GstClockTimeDiff diff;
+      GstClockTime timestamp;
+      gdouble proportion;
+
+      gst_event_parse_qos (event, &type, &proportion, &diff, &timestamp);
+      gst_event_unref (event);
+
+      if (timestamp != GST_CLOCK_TIME_NONE
+          && timestamp > self->current_start_offset) {
+        timestamp -= self->current_start_offset;
+        event = gst_event_new_qos (type, proportion, diff, timestamp);
+        ret = gst_pad_push_event (self->current_sinkpad, event);
+      } else {
+        ret = FALSE;
+      }
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:{
+      gboolean reset_time;
+
+      gst_event_parse_flush_stop (event, &reset_time);
+      if (reset_time) {
+        GST_DEBUG_OBJECT (self,
+            "resetting start offset to 0 after flushing with reset_time = TRUE");
+        self->current_start_offset = 0;
+      }
+
+      ret = gst_pad_event_default (pad, parent, event);
+      break;
+    }
+    default:
+      ret = gst_pad_event_default (pad, parent, event);
+      break;
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_concat_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  gboolean ret = TRUE;
+
+  GST_LOG_OBJECT (pad, "received query %" GST_PTR_FORMAT, query);
+
+  switch (GST_QUERY_TYPE (query)) {
+    default:
+      ret = gst_pad_query_default (pad, parent, query);
+      break;
+  }
+
+  return ret;
+}
+
+static void
+reset_pad (const GValue * data, gpointer user_data)
+{
+  GstPad *pad = g_value_get_object (data);
+  GstConcatPad *spad = GST_CONCAT_PAD_CAST (pad);
+
+  gst_segment_init (&spad->segment, GST_FORMAT_UNDEFINED);
+  spad->flushing = FALSE;
+}
+
+static void
+unblock_pad (const GValue * data, gpointer user_data)
+{
+  GstPad *pad = g_value_get_object (data);
+  GstConcatPad *spad = GST_CONCAT_PAD_CAST (pad);
+
+  spad->flushing = TRUE;
+}
+
+static GstStateChangeReturn
+gst_concat_change_state (GstElement * element, GstStateChange transition)
+{
+  GstConcat *self = GST_CONCAT (element);
+  GstStateChangeReturn ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:{
+      GstIterator *iter = gst_element_iterate_sink_pads (element);
+      GstIteratorResult res;
+
+      self->format = GST_FORMAT_UNDEFINED;
+      self->current_start_offset = 0;
+      self->last_stop = GST_CLOCK_TIME_NONE;
+
+      do {
+        res = gst_iterator_foreach (iter, reset_pad, NULL);
+      } while (res == GST_ITERATOR_RESYNC);
+
+      gst_iterator_free (iter);
+
+      if (res == GST_ITERATOR_ERROR)
+        return GST_STATE_CHANGE_FAILURE;
+      break;
+    }
+    case GST_STATE_CHANGE_PAUSED_TO_READY:{
+      GstIterator *iter = gst_element_iterate_sink_pads (element);
+      GstIteratorResult res;
+
+      g_mutex_lock (&self->lock);
+      do {
+        res = gst_iterator_foreach (iter, unblock_pad, NULL);
+      } while (res == GST_ITERATOR_RESYNC);
+
+      gst_iterator_free (iter);
+      g_cond_broadcast (&self->cond);
+      g_mutex_unlock (&self->lock);
+
+      if (res == GST_ITERATOR_ERROR)
+        return GST_STATE_CHANGE_FAILURE;
+
+      break;
+    }
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  return ret;
+}
diff --git a/plugins/elements/gstconcat.h b/plugins/elements/gstconcat.h
new file mode 100644
index 0000000..a74db55
--- /dev/null
+++ b/plugins/elements/gstconcat.h
@@ -0,0 +1,75 @@
+/* GStreamer concat element
+ *
+ *  Copyright (c) 2014 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __GST_CONCAT_H__
+#define __GST_CONCAT_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_CONCAT (gst_concat_get_type())
+#define GST_CONCAT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CONCAT, GstConcat))
+#define GST_CONCAT_CAST(obj) ((GstConcat*)obj)
+#define GST_CONCAT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CONCAT,GstConcatClass))
+#define GST_IS_CONCAT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CONCAT))
+#define GST_IS_CONCAT_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CONCAT))
+
+typedef struct _GstConcat GstConcat;
+typedef struct _GstConcatClass GstConcatClass;
+
+/**
+ * GstConcat:
+ *
+ * The private concat structure
+ */
+struct _GstConcat
+{
+  /*< private >*/
+  GstElement parent;
+
+  GMutex lock;
+  GCond cond;
+  GList *sinkpads; /* Last is earliest */
+  GstPad *current_sinkpad;
+  GstPad *srcpad;
+  guint pad_count;
+
+  /* Format we're operating in */
+  GstFormat format;
+  /* In format, running time or accumulated byte offset */
+  guint64 current_start_offset;
+  /* Between current pad's segment start and stop */
+  guint64 last_stop;
+
+  gboolean adjust_base;
+};
+
+struct _GstConcatClass
+{
+  GstElementClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_concat_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_CONCAT_H__ */
diff --git a/plugins/elements/gstdownloadbuffer.c b/plugins/elements/gstdownloadbuffer.c
index db3be22..83c28fa 100644
--- a/plugins/elements/gstdownloadbuffer.c
+++ b/plugins/elements/gstdownloadbuffer.c
@@ -174,7 +174,7 @@
 G_DEFINE_TYPE_WITH_CODE (GstDownloadBuffer, gst_download_buffer,
     GST_TYPE_ELEMENT, _do_init);
 
-static void update_buffering (GstDownloadBuffer * dlbuf);
+static GstMessage *update_buffering (GstDownloadBuffer * dlbuf);
 
 static void gst_download_buffer_finalize (GObject * object);
 
@@ -225,11 +225,13 @@
       g_param_spec_uint ("max-size-bytes", "Max. size (kB)",
           "Max. amount of data to buffer (bytes, 0=disable)",
           0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME,
       g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
           "Max. amount of data to buffer (in ns, 0=disable)", 0, G_MAXUINT64,
-          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_LOW_PERCENT,
       g_param_spec_int ("low-percent", "Low percent",
@@ -390,25 +392,19 @@
 #define AVG_OUT(avg,val) ((avg) * 3.0 + (val)) / 4.0
 
 static void
-update_time_level (GstDownloadBuffer * dlbuf)
+update_levels (GstDownloadBuffer * dlbuf, guint bytes)
 {
+  dlbuf->cur_level.bytes = bytes;
+
   if (dlbuf->byte_in_rate > 0.0) {
     dlbuf->cur_level.time =
         dlbuf->cur_level.bytes / dlbuf->byte_in_rate * GST_SECOND;
   }
+
   GST_DEBUG ("levels: bytes %u/%u, time %" GST_TIME_FORMAT "/%" GST_TIME_FORMAT,
       dlbuf->cur_level.bytes, dlbuf->max_level.bytes,
       GST_TIME_ARGS (dlbuf->cur_level.time),
       GST_TIME_ARGS (dlbuf->max_level.time));
-  /* update the buffering */
-  update_buffering (dlbuf);
-}
-
-static void
-update_levels (GstDownloadBuffer * dlbuf, guint bytes)
-{
-  dlbuf->cur_level.bytes = bytes;
-  update_time_level (dlbuf);
 }
 
 static void
@@ -566,14 +562,15 @@
   }
 }
 
-static void
+static GstMessage *
 update_buffering (GstDownloadBuffer * dlbuf)
 {
   gint percent;
   gboolean post = FALSE;
+  GstMessage *message = NULL;
 
   if (!get_buffering_percent (dlbuf, NULL, &percent))
-    return;
+    return NULL;
 
   if (dlbuf->is_buffering) {
     post = TRUE;
@@ -597,7 +594,6 @@
   }
 
   if (post) {
-    GstMessage *message;
     GstBufferingMode mode;
     gint avg_in, avg_out;
     gint64 buffering_left;
@@ -609,9 +605,9 @@
         (gint) percent);
     gst_message_set_buffering_stats (message, mode,
         avg_in, avg_out, buffering_left);
-
-    gst_element_post_message (GST_ELEMENT_CAST (dlbuf), message);
   }
+
+  return message;
 }
 
 static gboolean
@@ -844,6 +840,7 @@
 out_flushing:
   {
     GST_DEBUG_OBJECT (dlbuf, "we are flushing");
+    g_clear_error (&error);
     gst_buffer_unmap (buf, &info);
     if (*buffer == NULL)
       gst_buffer_unref (buf);
@@ -1051,6 +1048,8 @@
     }
     default:
       if (GST_EVENT_IS_SERIALIZED (event)) {
+        GstMessage *msg = NULL;
+
         /* serialized events go in the buffer */
         GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->sinkresult,
             out_flushing);
@@ -1061,6 +1060,8 @@
              * filled and we can read all data from the dlbuf. */
             /* update the buffering status */
             update_levels (dlbuf, dlbuf->max_level.bytes);
+            /* update the buffering */
+            msg = update_buffering (dlbuf);
             /* wakeup the waiter and let it recheck */
             GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, -1);
             break;
@@ -1078,6 +1079,8 @@
         }
         gst_event_unref (event);
         GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+        if (msg != NULL)
+          gst_element_post_message (GST_ELEMENT_CAST (dlbuf), msg);
       } else {
         /* non-serialized events are passed upstream. */
         ret = gst_pad_push_event (dlbuf->srcpad, event);
@@ -1127,6 +1130,7 @@
   guint64 offset;
   gsize res, available;
   GError *error = NULL;
+  GstMessage *msg = NULL;
 
   dlbuf = GST_DOWNLOAD_BUFFER (parent);
 
@@ -1208,8 +1212,14 @@
       update_levels (dlbuf, 0);
   }
 
+  /* update the buffering */
+  msg = update_buffering (dlbuf);
+
   GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
 
+  if (msg != NULL)
+    gst_element_post_message (GST_ELEMENT_CAST (dlbuf), msg);
+
   return GST_FLOW_OK;
 
   /* ERRORS */
@@ -1251,12 +1261,18 @@
     dlbuf->write_pos = dlbuf->upstream_size;
     dlbuf->filling = FALSE;
     update_levels (dlbuf, dlbuf->max_level.bytes);
+    msg = update_buffering (dlbuf);
+
     gst_element_post_message (GST_ELEMENT_CAST (dlbuf),
         gst_message_new_element (GST_OBJECT_CAST (dlbuf),
             gst_structure_new ("GstCacheDownloadComplete",
                 "location", G_TYPE_STRING, dlbuf->temp_location, NULL)));
+
     GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
 
+    if (msg != NULL)
+      gst_element_post_message (GST_ELEMENT_CAST (dlbuf), msg);
+
     return GST_FLOW_EOS;
   }
 }
@@ -1269,6 +1285,7 @@
   GstDownloadBuffer *dlbuf;
   GstFlowReturn ret;
   GstBuffer *buffer = NULL;
+  GstMessage *msg = NULL;
 
   dlbuf = GST_DOWNLOAD_BUFFER (GST_PAD_PARENT (pad));
 
@@ -1288,9 +1305,15 @@
   if (ret != GST_FLOW_OK)
     goto out_flushing;
 
+  /* update the buffering */
+  msg = update_buffering (dlbuf);
+
   g_atomic_int_set (&dlbuf->downstream_may_block, 1);
   GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
 
+  if (msg != NULL)
+    gst_element_post_message (GST_ELEMENT_CAST (dlbuf), msg);
+
   ret = gst_pad_push (dlbuf->srcpad, buffer);
   g_atomic_int_set (&dlbuf->downstream_may_block, 0);
 
@@ -1589,14 +1612,21 @@
 {
   GstDownloadBuffer *dlbuf;
   GstFlowReturn ret;
+  GstMessage *msg = NULL;
 
   dlbuf = GST_DOWNLOAD_BUFFER_CAST (parent);
 
   GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->srcresult, out_flushing);
   /* FIXME - function will block when the range is not yet available */
   ret = gst_download_buffer_read_buffer (dlbuf, offset, length, buffer);
+  /* update the buffering */
+  msg = update_buffering (dlbuf);
+
   GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
 
+  if (msg != NULL)
+    gst_element_post_message (GST_ELEMENT_CAST (dlbuf), msg);
+
   return ret;
 
   /* ERRORS */
@@ -1835,6 +1865,7 @@
     guint prop_id, const GValue * value, GParamSpec * pspec)
 {
   GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (object);
+  GstMessage *msg = NULL;
 
   /* someone could change levels here, and since this
    * affects the get/put funcs, we need to lock for safety. */
@@ -1843,11 +1874,11 @@
   switch (prop_id) {
     case PROP_MAX_SIZE_BYTES:
       dlbuf->max_level.bytes = g_value_get_uint (value);
-      CAPACITY_CHANGE (dlbuf);
+      msg = CAPACITY_CHANGE (dlbuf);
       break;
     case PROP_MAX_SIZE_TIME:
       dlbuf->max_level.time = g_value_get_uint64 (value);
-      CAPACITY_CHANGE (dlbuf);
+      msg = CAPACITY_CHANGE (dlbuf);
       break;
     case PROP_LOW_PERCENT:
       dlbuf->low_percent = g_value_get_int (value);
@@ -1867,6 +1898,10 @@
   }
 
   GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  if (msg != NULL)
+    gst_element_post_message (GST_ELEMENT_CAST (dlbuf), msg);
+
 }
 
 static void
diff --git a/plugins/elements/gstelements.c b/plugins/elements/gstelements.c
index 93d3a9a..5c07855 100644
--- a/plugins/elements/gstelements.c
+++ b/plugins/elements/gstelements.c
@@ -28,6 +28,7 @@
 #include <gst/gst.h>
 
 #include "gstcapsfilter.h"
+#include "gstconcat.h"
 #include "gstdownloadbuffer.h"
 #include "gstfakesink.h"
 #include "gstfakesrc.h"
@@ -45,6 +46,7 @@
 #include "gsttee.h"
 #include "gsttypefindelement.h"
 #include "gstvalve.h"
+#include "gststreamiddemux.h"
 
 static gboolean
 plugin_init (GstPlugin * plugin)
@@ -52,6 +54,9 @@
   if (!gst_element_register (plugin, "capsfilter", GST_RANK_NONE,
           gst_capsfilter_get_type ()))
     return FALSE;
+  if (!gst_element_register (plugin, "concat", GST_RANK_NONE,
+          gst_concat_get_type ()))
+    return FALSE;
   if (!gst_element_register (plugin, "downloadbuffer", GST_RANK_NONE,
           gst_download_buffer_get_type ()))
     return FALSE;
@@ -105,6 +110,10 @@
           gst_valve_get_type ()))
     return FALSE;
 
+  if (!gst_element_register (plugin, "streamiddemux", GST_RANK_PRIMARY,
+          gst_streamid_demux_get_type ()))
+    return FALSE;
+
   return TRUE;
 }
 
diff --git a/plugins/elements/gstelements_private.c b/plugins/elements/gstelements_private.c
index 2364741..08855c8 100644
--- a/plugins/elements/gstelements_private.c
+++ b/plugins/elements/gstelements_private.c
@@ -25,33 +25,55 @@
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
+#include <stdio.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+#include <errno.h>
+#include <string.h>
 #include <string.h>
 #include "gst/gst.h"
 #include "gstelements_private.h"
 
+#ifdef G_OS_WIN32
+#  define WIN32_LEAN_AND_MEAN   /* prevents from including too many things */
+#  include <windows.h>
+#  undef WIN32_LEAN_AND_MEAN
+#  ifndef EWOULDBLOCK
+#  define EWOULDBLOCK EAGAIN
+#  endif
+#endif /* G_OS_WIN32 */
+
+#define BUFFER_FLAG_SHIFT 4
+
+G_STATIC_ASSERT ((1 << BUFFER_FLAG_SHIFT) == GST_MINI_OBJECT_FLAG_LAST);
+
 /* Returns a newly allocated string describing the flags on this buffer */
 char *
 gst_buffer_get_flags_string (GstBuffer * buffer)
 {
-  static const char *const flag_list[] = {
-    "", "", "", "", "live", "decode-only", "discont", "resync", "corrupted",
-    "marker", "header", "gap", "droppable", "delta-unit", "tag-memory",
-    "FIXME"
+  static const char flag_strings[] =
+      "\000\000\000\000live\000decode-only\000discont\000resync\000corrupted\000"
+      "marker\000header\000gap\000droppable\000delta-unit\000tag-memory\000"
+      "FIXME";
+  static const guint8 flag_idx[] = { 0, 1, 2, 3, 4, 9, 21, 29, 36, 46, 53,
+    60, 64, 74, 85, 96
   };
   int i, max_bytes;
   char *flag_str, *end;
 
-  max_bytes = 1;                /* NUL */
-  for (i = 0; i < G_N_ELEMENTS (flag_list); i++) {
-    max_bytes += strlen (flag_list[i]) + 1;     /* string and space */
-  }
+  /* max size is all flag strings plus a space or terminator after each one */
+  max_bytes = sizeof (flag_strings);
   flag_str = g_malloc (max_bytes);
 
   end = flag_str;
   end[0] = '\0';
-  for (i = 0; i < G_N_ELEMENTS (flag_list); i++) {
+  for (i = BUFFER_FLAG_SHIFT; i < G_N_ELEMENTS (flag_idx); i++) {
     if (GST_MINI_OBJECT_CAST (buffer)->flags & (1 << i)) {
-      strcpy (end, flag_list[i]);
+      strcpy (end, flag_strings + flag_idx[i]);
       end += strlen (end);
       end[0] = ' ';
       end[1] = '\0';
@@ -61,3 +83,241 @@
 
   return flag_str;
 }
+
+/* Define our own iovec structure here, so that we can use it unconditionally
+ * in the code below and use almost the same code path for systems where
+ * writev() is supported and those were it's not supported */
+#ifndef HAVE_SYS_UIO_H
+struct iovec
+{
+  gpointer iov_base;
+  gsize iov_len;
+};
+#endif
+
+/* completely arbitrary thresholds */
+#define FDSINK_MAX_ALLOCA_SIZE (64 * 1024)      /* 64k */
+#define FDSINK_MAX_MALLOC_SIZE ( 8 * 1024 * 1024)       /*  8M */
+
+/* UIO_MAXIOV is documented in writev(2), but <sys/uio.h> only
+ * declares it on osx/ios if defined(KERNEL) */
+#ifndef UIO_MAXIOV
+#define UIO_MAXIOV 512
+#endif
+
+static gssize
+gst_writev (gint fd, const struct iovec *iov, gint iovcnt, gsize total_bytes)
+{
+  gssize written;
+
+#ifdef HAVE_SYS_UIO_H
+  if (iovcnt <= UIO_MAXIOV) {
+    do {
+      written = writev (fd, iov, iovcnt);
+    } while (written < 0 && errno == EINTR);
+  } else
+#endif
+  {
+    gint i;
+
+    /* We merge the memories here because technically write()/writev() is
+     * supposed to be atomic, which it's not if we do multiple separate
+     * write() calls. It's very doubtful anyone cares though in our use
+     * cases, and it's not clear how that can be reconciled with the
+     * possibility of short writes, so in any case we might want to
+     * simplify this later or just remove it. */
+    if (total_bytes <= FDSINK_MAX_MALLOC_SIZE) {
+      gchar *mem, *p;
+
+      if (total_bytes <= FDSINK_MAX_ALLOCA_SIZE)
+        mem = g_alloca (total_bytes);
+      else
+        mem = g_malloc (total_bytes);
+
+      p = mem;
+      for (i = 0; i < iovcnt; ++i) {
+        memcpy (p, iov[i].iov_base, iov[i].iov_len);
+        p += iov[i].iov_len;
+      }
+
+      do {
+        written = write (fd, mem, total_bytes);
+      } while (written < 0 && errno == EINTR);
+
+      if (total_bytes > FDSINK_MAX_ALLOCA_SIZE)
+        g_free (mem);
+    } else {
+      gssize ret;
+
+      written = 0;
+      for (i = 0; i < iovcnt; ++i) {
+        do {
+          ret = write (fd, iov[i].iov_base, iov[i].iov_len);
+        } while (ret < 0 && errno == EINTR);
+        if (ret > 0)
+          written += ret;
+        if (ret != iov[i].iov_len)
+          break;
+      }
+    }
+  }
+
+  return written;
+}
+
+static gsize
+fill_vectors (struct iovec *vecs, GstMapInfo * maps, guint n, GstBuffer * buf)
+{
+  GstMemory *mem;
+  gsize size = 0;
+  guint i;
+
+  g_assert (gst_buffer_n_memory (buf) == n);
+
+  for (i = 0; i < n; ++i) {
+    mem = gst_buffer_peek_memory (buf, i);
+    if (gst_memory_map (mem, &maps[i], GST_MAP_READ)) {
+      vecs[i].iov_base = maps[i].data;
+      vecs[i].iov_len = maps[i].size;
+    } else {
+      GST_WARNING ("Failed to map memory %p for reading", mem);
+      vecs[i].iov_base = (void *) "";
+      vecs[i].iov_len = 0;
+    }
+    size += vecs[i].iov_len;
+  }
+
+  return size;
+}
+
+GstFlowReturn
+gst_writev_buffers (GstObject * sink, gint fd, GstPoll * fdset,
+    GstBuffer ** buffers, guint num_buffers, guint8 * mem_nums,
+    guint total_mem_num, guint64 * total_written, guint64 * cur_pos)
+{
+  struct iovec *vecs;
+  GstMapInfo *map_infos;
+  GstFlowReturn flow_ret;
+  gsize size = 0;
+  guint i, j;
+
+  GST_LOG_OBJECT (sink, "%u buffers, %u memories", num_buffers, total_mem_num);
+
+  vecs = g_newa (struct iovec, total_mem_num);
+  map_infos = g_newa (GstMapInfo, total_mem_num);
+
+  /* populate output vectors */
+  for (i = 0, j = 0; i < num_buffers; ++i) {
+    size += fill_vectors (&vecs[j], &map_infos[j], mem_nums[i], buffers[i]);
+    j += mem_nums[i];
+  }
+
+  /* now write it all out! */
+  {
+    gssize ret, left;
+    guint n_vecs = total_mem_num;
+
+    left = size;
+    do {
+#ifndef HAVE_WIN32
+      if (fdset != NULL) {
+        do {
+          GST_DEBUG_OBJECT (sink, "going into select, have %" G_GSSIZE_FORMAT
+              " bytes to write", left);
+          ret = gst_poll_wait (fdset, GST_CLOCK_TIME_NONE);
+        } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
+
+        if (ret == -1) {
+          if (errno == EBUSY)
+            goto stopped;
+          else
+            goto select_error;
+        }
+      }
+#endif
+
+      ret = gst_writev (fd, vecs, n_vecs, left);
+
+      if (ret > 0) {
+        if (total_written)
+          *total_written += ret;
+        if (cur_pos)
+          *cur_pos += ret;
+      }
+
+      if (ret == left)
+        break;
+
+      if (ret < 0 && (errno == EAGAIN || errno == EWOULDBLOCK)) {
+        /* do nothing, try again */
+      } else if (ret < 0) {
+        goto write_error;
+      } else if (ret < left) {
+        /* skip vectors that have been written in full */
+        while (ret >= vecs[0].iov_len) {
+          ret -= vecs[0].iov_len;
+          left -= vecs[0].iov_len;
+          ++vecs;
+          --n_vecs;
+        }
+        g_assert (n_vecs > 0);
+        /* skip partially written vector data */
+        if (ret > 0) {
+          vecs[0].iov_len -= ret;
+          vecs[0].iov_base = ((guint8 *) vecs[0].iov_base) + ret;
+          left -= ret;
+        }
+      }
+#ifdef HAVE_WIN32
+      /* do short sleep on windows where we don't use gst_poll(),
+       * to avoid excessive busy looping */
+      if (fdset != NULL)
+        g_usleep (1000);
+#endif
+
+    }
+    while (left > 0);
+  }
+
+  flow_ret = GST_FLOW_OK;
+
+out:
+
+  for (i = 0; i < total_mem_num; ++i)
+    gst_memory_unmap (map_infos[i].memory, &map_infos[i]);
+
+  return flow_ret;
+
+/* ERRORS */
+#ifndef HAVE_WIN32
+select_error:
+  {
+    GST_ELEMENT_ERROR (sink, RESOURCE, READ, (NULL),
+        ("select on file descriptor: %s", g_strerror (errno)));
+    GST_DEBUG_OBJECT (sink, "Error during select: %s", g_strerror (errno));
+    flow_ret = GST_FLOW_ERROR;
+    goto out;
+  }
+stopped:
+  {
+    GST_DEBUG_OBJECT (sink, "Select stopped");
+    flow_ret = GST_FLOW_FLUSHING;
+    goto out;
+  }
+#endif
+write_error:
+  {
+    switch (errno) {
+      case ENOSPC:
+        GST_ELEMENT_ERROR (sink, RESOURCE, NO_SPACE_LEFT, (NULL), (NULL));
+        break;
+      default:{
+        GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL),
+            ("Error while writing to file descriptor %d: %s",
+                fd, g_strerror (errno)));
+      }
+    }
+    flow_ret = GST_FLOW_ERROR;
+    goto out;
+  }
+}
diff --git a/plugins/elements/gstelements_private.h b/plugins/elements/gstelements_private.h
index 9ccae1b..469b3b8 100644
--- a/plugins/elements/gstelements_private.h
+++ b/plugins/elements/gstelements_private.h
@@ -30,6 +30,12 @@
 G_GNUC_INTERNAL
 char *    gst_buffer_get_flags_string                   (GstBuffer *buffer);
 
+G_GNUC_INTERNAL
+GstFlowReturn  gst_writev_buffers (GstObject * sink, gint fd, GstPoll * fdset,
+                                   GstBuffer ** buffers, guint num_buffers,
+                                   guint8 * mem_nums, guint total_mem_num,
+                                   guint64 * total_written, guint64 * cur_pos);
+
 G_END_DECLS
 
 #endif /* __GST_ELEMENTS_PRIVATE_H__ */
diff --git a/plugins/elements/gstfakesink.c b/plugins/elements/gstfakesink.c
index dde0fce..8a1d1da 100644
--- a/plugins/elements/gstfakesink.c
+++ b/plugins/elements/gstfakesink.c
@@ -28,7 +28,7 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch audiotestsrc num-buffers=1000 ! fakesink sync=false
+ * gst-launch-1.0 audiotestsrc num-buffers=1000 ! fakesink sync=false
  * ]| Render 1000 audio buffers (of default size) as fast as possible.
  * </refsect2>
  */
@@ -168,10 +168,12 @@
   g_object_class_install_property (gobject_class, PROP_SILENT,
       g_param_spec_boolean ("silent", "Silent",
           "Don't produce last_message events", DEFAULT_SILENT,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_DUMP,
       g_param_spec_boolean ("dump", "Dump", "Dump buffer contents to stdout",
-          DEFAULT_DUMP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_DUMP, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class,
       PROP_CAN_ACTIVATE_PUSH,
       g_param_spec_boolean ("can-activate-push", "Can activate push",
diff --git a/plugins/elements/gstfakesrc.c b/plugins/elements/gstfakesrc.c
index 7b03cf5..50fad8e 100644
--- a/plugins/elements/gstfakesrc.c
+++ b/plugins/elements/gstfakesrc.c
@@ -32,7 +32,7 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch -v fakesrc num-buffers=5 ! fakesink
+ * gst-launch-1.0 -v fakesrc num-buffers=5 ! fakesink
  * ]| This pipeline will push 5 empty buffers to the fakesink element and then
  * sends an EOS.
  * </refsect2>
@@ -131,7 +131,7 @@
 
   if (!fakesrc_output_type) {
     fakesrc_output_type =
-        g_enum_register_static ("GstFakeSrcOutput", fakesrc_output);
+        g_enum_register_static ("GstFakeSrcOutputType", fakesrc_output);
   }
   return fakesrc_output_type;
 }
@@ -183,7 +183,7 @@
   static const GEnumValue fakesrc_filltype[] = {
     {FAKE_SRC_FILLTYPE_NOTHING, "Leave data as malloced", "nothing"},
     {FAKE_SRC_FILLTYPE_ZERO, "Fill buffers with zeros", "zero"},
-    {FAKE_SRC_FILLTYPE_RANDOM, "Fill buffers with random crap", "random"},
+    {FAKE_SRC_FILLTYPE_RANDOM, "Fill buffers with random data", "random"},
     {FAKE_SRC_FILLTYPE_PATTERN, "Fill buffers with pattern 0x00 -> 0xff",
         "pattern"},
     {FAKE_SRC_FILLTYPE_PATTERN_CONT,
@@ -279,9 +279,10 @@
   g_object_class_install_property (gobject_class, PROP_SYNC,
       g_param_spec_boolean ("sync", "Sync", "Sync to the clock to the datarate",
           DEFAULT_SYNC, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /*  FIXME 2.0: Remove unused pattern property. Not implemented */
   g_object_class_install_property (gobject_class, PROP_PATTERN,
-      g_param_spec_string ("pattern", "pattern", "pattern", DEFAULT_PATTERN,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+      g_param_spec_string ("pattern", "pattern", "Set the pattern (unused)",
+          DEFAULT_PATTERN, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   pspec_last_message = g_param_spec_string ("last-message", "last-message",
       "The last status message", NULL,
       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
@@ -555,7 +556,6 @@
       g_value_set_boolean (value, src->sync);
       break;
     case PROP_PATTERN:
-      g_value_set_string (value, src->pattern);
       break;
     case PROP_SILENT:
       g_value_set_boolean (value, src->silent);
diff --git a/plugins/elements/gstfakesrc.h b/plugins/elements/gstfakesrc.h
index e4acb9c..5190ee8 100644
--- a/plugins/elements/gstfakesrc.h
+++ b/plugins/elements/gstfakesrc.h
@@ -134,7 +134,6 @@
   guint		parentsize;
   guint		parentoffset;
   guint8	 pattern_byte;
-  gchar		*pattern;
   GList		*patternlist;
   gint		 datarate;
   gboolean	 sync;
diff --git a/plugins/elements/gstfdsink.c b/plugins/elements/gstfdsink.c
index d7b9e88..fb65ac6 100644
--- a/plugins/elements/gstfdsink.c
+++ b/plugins/elements/gstfdsink.c
@@ -58,6 +58,7 @@
 #include <string.h>
 
 #include "gstfdsink.h"
+#include "gstelements_private.h"
 
 #ifdef G_OS_WIN32
 #include <io.h>                 /* lseek, open, close, read */
@@ -107,6 +108,8 @@
 static gboolean gst_fd_sink_query (GstBaseSink * bsink, GstQuery * query);
 static GstFlowReturn gst_fd_sink_render (GstBaseSink * sink,
     GstBuffer * buffer);
+static GstFlowReturn gst_fd_sink_render_list (GstBaseSink * bsink,
+    GstBufferList * buffer_list);
 static gboolean gst_fd_sink_start (GstBaseSink * basesink);
 static gboolean gst_fd_sink_stop (GstBaseSink * basesink);
 static gboolean gst_fd_sink_unlock (GstBaseSink * basesink);
@@ -138,6 +141,7 @@
       gst_static_pad_template_get (&sinktemplate));
 
   gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_fd_sink_render);
+  gstbasesink_class->render_list = GST_DEBUG_FUNCPTR (gst_fd_sink_render_list);
   gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_fd_sink_start);
   gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_fd_sink_stop);
   gstbasesink_class->unlock = GST_DEBUG_FUNCPTR (gst_fd_sink_unlock);
@@ -228,107 +232,69 @@
 }
 
 static GstFlowReturn
-gst_fd_sink_render (GstBaseSink * sink, GstBuffer * buffer)
+gst_fd_sink_render_buffers (GstFdSink * sink, GstBuffer ** buffers,
+    guint num_buffers, guint8 * mem_nums, guint total_mems)
 {
-  GstFdSink *fdsink;
-  GstMapInfo info;
-  guint8 *ptr;
-  gsize left;
-  gint written;
+  return gst_writev_buffers (GST_OBJECT_CAST (sink), sink->fd, sink->fdset,
+      buffers, num_buffers, mem_nums, total_mems, &sink->bytes_written,
+      &sink->current_pos);
+}
 
-#ifndef HAVE_WIN32
-  gint retval;
-#endif
+static GstFlowReturn
+gst_fd_sink_render_list (GstBaseSink * bsink, GstBufferList * buffer_list)
+{
+  GstFlowReturn flow;
+  GstBuffer **buffers;
+  GstFdSink *sink;
+  guint8 *mem_nums;
+  guint total_mems;
+  guint i, num_buffers;
 
-  fdsink = GST_FD_SINK (sink);
+  sink = GST_FD_SINK_CAST (bsink);
 
-  g_return_val_if_fail (fdsink->fd >= 0, GST_FLOW_ERROR);
+  num_buffers = gst_buffer_list_length (buffer_list);
+  if (num_buffers == 0)
+    goto no_data;
 
-  gst_buffer_map (buffer, &info, GST_MAP_READ);
-
-  ptr = info.data;
-  left = info.size;
-
-again:
-#ifndef HAVE_WIN32
-  do {
-    GST_DEBUG_OBJECT (fdsink, "going into select, have %" G_GSIZE_FORMAT
-        " bytes to write", info.size);
-    retval = gst_poll_wait (fdsink->fdset, GST_CLOCK_TIME_NONE);
-  } while (retval == -1 && (errno == EINTR || errno == EAGAIN));
-
-  if (retval == -1) {
-    if (errno == EBUSY)
-      goto stopped;
-    else
-      goto select_error;
-  }
-#endif
-
-  GST_DEBUG_OBJECT (fdsink, "writing %" G_GSIZE_FORMAT " bytes to"
-      " file descriptor %d", info.size, fdsink->fd);
-
-  written = write (fdsink->fd, ptr, left);
-
-  /* check for errors */
-  if (G_UNLIKELY (written < 0)) {
-    /* try to write again on non-fatal errors */
-    if (errno == EAGAIN || errno == EINTR)
-      goto again;
-
-    /* else go to our error handler */
-    goto write_error;
+  /* extract buffers from list and count memories */
+  buffers = g_newa (GstBuffer *, num_buffers);
+  mem_nums = g_newa (guint8, num_buffers);
+  for (i = 0, total_mems = 0; i < num_buffers; ++i) {
+    buffers[i] = gst_buffer_list_get (buffer_list, i);
+    mem_nums[i] = gst_buffer_n_memory (buffers[i]);
+    total_mems += mem_nums[i];
   }
 
-  /* all is fine when we get here */
-  left -= written;
-  ptr += written;
-  fdsink->bytes_written += written;
-  fdsink->current_pos += written;
+  flow =
+      gst_fd_sink_render_buffers (sink, buffers, num_buffers, mem_nums,
+      total_mems);
 
-  GST_DEBUG_OBJECT (fdsink, "wrote %d bytes, %" G_GSIZE_FORMAT " left", written,
-      left);
+  return flow;
 
-  /* short write, select and try to write the remainder */
-  if (G_UNLIKELY (left > 0))
-    goto again;
-
-  gst_buffer_unmap (buffer, &info);
-
-  return GST_FLOW_OK;
-
-#ifndef HAVE_WIN32
-select_error:
+no_data:
   {
-    GST_ELEMENT_ERROR (fdsink, RESOURCE, READ, (NULL),
-        ("select on file descriptor: %s.", g_strerror (errno)));
-    GST_DEBUG_OBJECT (fdsink, "Error during select");
-    gst_buffer_unmap (buffer, &info);
-    return GST_FLOW_ERROR;
+    GST_LOG_OBJECT (sink, "empty buffer list");
+    return GST_FLOW_OK;
   }
-stopped:
-  {
-    GST_DEBUG_OBJECT (fdsink, "Select stopped");
-    gst_buffer_unmap (buffer, &info);
-    return GST_FLOW_FLUSHING;
-  }
-#endif
+}
 
-write_error:
-  {
-    switch (errno) {
-      case ENOSPC:
-        GST_ELEMENT_ERROR (fdsink, RESOURCE, NO_SPACE_LEFT, (NULL), (NULL));
-        break;
-      default:{
-        GST_ELEMENT_ERROR (fdsink, RESOURCE, WRITE, (NULL),
-            ("Error while writing to file descriptor %d: %s",
-                fdsink->fd, g_strerror (errno)));
-      }
-    }
-    gst_buffer_unmap (buffer, &info);
-    return GST_FLOW_ERROR;
-  }
+static GstFlowReturn
+gst_fd_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
+{
+  GstFlowReturn flow;
+  GstFdSink *sink;
+  guint8 n_mem;
+
+  sink = GST_FD_SINK_CAST (bsink);
+
+  n_mem = gst_buffer_n_memory (buffer);
+
+  if (n_mem > 0)
+    flow = gst_fd_sink_render_buffers (sink, &buffer, 1, &n_mem, n_mem);
+  else
+    flow = GST_FLOW_OK;
+
+  return flow;
 }
 
 static gboolean
diff --git a/plugins/elements/gstfdsink.h b/plugins/elements/gstfdsink.h
index 3d7ee31..66a2340 100644
--- a/plugins/elements/gstfdsink.h
+++ b/plugins/elements/gstfdsink.h
@@ -40,6 +40,7 @@
   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FD_SINK))
 #define GST_IS_FD_SINK_CLASS(klass) \
   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FD_SINK))
+#define GST_FD_SINK_CAST(obj) ((GstFdSink *)(obj))
 
 typedef struct _GstFdSink GstFdSink;
 typedef struct _GstFdSinkClass GstFdSinkClass;
diff --git a/plugins/elements/gstfdsrc.c b/plugins/elements/gstfdsrc.c
index 82b8344..cebca21 100644
--- a/plugins/elements/gstfdsrc.c
+++ b/plugins/elements/gstfdsrc.c
@@ -30,9 +30,9 @@
  * The above mentioned pipeline should dump data packets to the console.
  *
  * If the #GstFdSrc:timeout property is set to a value bigger than 0, fdsrc will
- * generate an element message named
- * <classname>&quot;GstFdSrcTimeout&quot;</classname>
+ * generate an element message named <classname>&quot;GstFdSrcTimeout&quot;</classname>
  * if no data was received in the given timeout.
+ *
  * The message's structure contains one field:
  * <itemizedlist>
  * <listitem>
@@ -47,7 +47,7 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * echo "Hello GStreamer" | gst-launch -v fdsrc ! fakesink dump=true
+ * echo "Hello GStreamer" | gst-launch-1.0 -v fdsrc ! fakesink dump=true
  * ]| A simple pipeline to read from the standard input and dump the data
  * with a fakesink as hex ascii block.
  * </refsect2>
@@ -645,12 +645,14 @@
   }
 
   if ((q = g_strstr_len (uri, -1, "?"))) {
-    gchar *sp;
+    gchar *sp, *end = NULL;
 
     GST_INFO_OBJECT (src, "found ?");
 
     if ((sp = g_strstr_len (q, -1, "size="))) {
-      if (sscanf (sp, "size=%" G_GUINT64_FORMAT, &size) != 1) {
+      sp += strlen ("size=");
+      size = g_ascii_strtoull (sp, &end, 10);
+      if ((size == 0 && errno == EINVAL) || size == G_MAXUINT64 || end == sp) {
         GST_INFO_OBJECT (src, "parsing size failed");
         size = -1;
       } else {
diff --git a/plugins/elements/gstfilesink.c b/plugins/elements/gstfilesink.c
index 470ad5e..eb5c768 100644
--- a/plugins/elements/gstfilesink.c
+++ b/plugins/elements/gstfilesink.c
@@ -29,7 +29,7 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch v4l2src num-buffers=1 ! jpegenc ! filesink location=capture1.jpeg
+ * gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=capture1.jpeg
  * ]| Capture one frame from a v4l2 camera and save as jpeg image.
  * </refsect2>
  */
@@ -58,6 +58,8 @@
 #define off_t guint64
 #undef ftruncate
 #define ftruncate _chsize
+#undef fsync
+#define fsync _commit
 #ifdef _MSC_VER                 /* Check if we are using MSVC, fileno is deprecated in favour */
 #define fileno _fileno          /* of _fileno */
 #endif
@@ -68,21 +70,24 @@
 #include <unistd.h>
 #endif
 
+#include "gstelements_private.h"
+#include "gstfilesink.h"
+
 static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS_ANY);
 
-#define GST_TYPE_BUFFER_MODE (buffer_mode_get_type ())
+#define GST_TYPE_FILE_SINK_BUFFER_MODE (gst_file_sink_buffer_mode_get_type ())
 static GType
-buffer_mode_get_type (void)
+gst_file_sink_buffer_mode_get_type (void)
 {
   static GType buffer_mode_type = 0;
   static const GEnumValue buffer_mode[] = {
-    {-1, "Default buffering", "default"},
-    {_IOFBF, "Fully buffered", "full"},
-    {_IOLBF, "Line buffered", "line"},
-    {_IONBF, "Unbuffered", "unbuffered"},
+    {GST_FILE_SINK_BUFFER_MODE_DEFAULT, "Default buffering", "default"},
+    {GST_FILE_SINK_BUFFER_MODE_FULL, "Fully buffered", "full"},
+    {GST_FILE_SINK_BUFFER_MODE_LINE, "Line buffered", "line"},
+    {GST_FILE_SINK_BUFFER_MODE_UNBUFFERED, "Unbuffered", "unbuffered"},
     {0, NULL, NULL},
   };
 
@@ -97,7 +102,7 @@
 #define GST_CAT_DEFAULT gst_file_sink_debug
 
 #define DEFAULT_LOCATION 	NULL
-#define DEFAULT_BUFFER_MODE 	-1
+#define DEFAULT_BUFFER_MODE 	GST_FILE_SINK_BUFFER_MODE_DEFAULT
 #define DEFAULT_BUFFER_SIZE 	64 * 1024
 #define DEFAULT_APPEND		FALSE
 
@@ -164,6 +169,8 @@
 static gboolean gst_file_sink_event (GstBaseSink * sink, GstEvent * event);
 static GstFlowReturn gst_file_sink_render (GstBaseSink * sink,
     GstBuffer * buffer);
+static GstFlowReturn gst_file_sink_render_list (GstBaseSink * sink,
+    GstBufferList * list);
 
 static gboolean gst_file_sink_do_seek (GstFileSink * filesink,
     guint64 new_offset);
@@ -201,7 +208,7 @@
 
   g_object_class_install_property (gobject_class, PROP_BUFFER_MODE,
       g_param_spec_enum ("buffer-mode", "Buffering mode",
-          "The buffering mode to use", GST_TYPE_BUFFER_MODE,
+          "The buffering mode to use", GST_TYPE_FILE_SINK_BUFFER_MODE,
           DEFAULT_BUFFER_MODE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_BUFFER_SIZE,
@@ -231,6 +238,8 @@
   gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_file_sink_stop);
   gstbasesink_class->query = GST_DEBUG_FUNCPTR (gst_file_sink_query);
   gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_file_sink_render);
+  gstbasesink_class->render_list =
+      GST_DEBUG_FUNCPTR (gst_file_sink_render_list);
   gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_file_sink_event);
 
   if (sizeof (off_t) < 8) {
@@ -283,8 +292,8 @@
      * this should be in UTF8 */
     sink->filename = g_strdup (location);
     sink->uri = gst_filename_to_uri (location, NULL);
-    GST_INFO ("filename : %s", sink->filename);
-    GST_INFO ("uri      : %s", sink->uri);
+    GST_INFO_OBJECT (sink, "filename : %s", sink->filename);
+    GST_INFO_OBJECT (sink, "uri      : %s", sink->uri);
   } else {
     sink->filename = NULL;
     sink->uri = NULL;
@@ -647,45 +656,94 @@
 }
 
 static GstFlowReturn
+gst_file_sink_render_buffers (GstFileSink * sink, GstBuffer ** buffers,
+    guint num_buffers, guint8 * mem_nums, guint total_mems)
+{
+  GST_DEBUG_OBJECT (sink,
+      "writing %u buffers (%u memories) at position %" G_GUINT64_FORMAT,
+      num_buffers, total_mems, sink->current_pos);
+
+  return gst_writev_buffers (GST_OBJECT_CAST (sink), fileno (sink->file), NULL,
+      buffers, num_buffers, mem_nums, total_mems, NULL, &sink->current_pos);
+}
+
+static GstFlowReturn
+gst_file_sink_render_list (GstBaseSink * bsink, GstBufferList * buffer_list)
+{
+  GstFlowReturn flow;
+  GstBuffer **buffers;
+  GstFileSink *sink;
+  guint8 *mem_nums;
+  guint total_mems;
+  guint i, num_buffers;
+  gboolean sync_after = FALSE;
+
+  sink = GST_FILE_SINK_CAST (bsink);
+
+  num_buffers = gst_buffer_list_length (buffer_list);
+  if (num_buffers == 0)
+    goto no_data;
+
+  /* extract buffers from list and count memories */
+  buffers = g_newa (GstBuffer *, num_buffers);
+  mem_nums = g_newa (guint8, num_buffers);
+  for (i = 0, total_mems = 0; i < num_buffers; ++i) {
+    buffers[i] = gst_buffer_list_get (buffer_list, i);
+    mem_nums[i] = gst_buffer_n_memory (buffers[i]);
+    total_mems += mem_nums[i];
+    if (GST_BUFFER_FLAG_IS_SET (buffers[i], GST_BUFFER_FLAG_SYNC_AFTER))
+      sync_after = TRUE;
+  }
+
+  flow =
+      gst_file_sink_render_buffers (sink, buffers, num_buffers, mem_nums,
+      total_mems);
+
+  if (flow == GST_FLOW_OK && sync_after) {
+    if (fflush (sink->file) || fsync (fileno (sink->file))) {
+      GST_ELEMENT_ERROR (sink, RESOURCE, WRITE,
+          (_("Error while writing to file \"%s\"."), sink->filename),
+          ("%s", g_strerror (errno)));
+      flow = GST_FLOW_ERROR;
+    }
+  }
+
+  return flow;
+
+no_data:
+  {
+    GST_LOG_OBJECT (sink, "empty buffer list");
+    return GST_FLOW_OK;
+  }
+}
+
+static GstFlowReturn
 gst_file_sink_render (GstBaseSink * sink, GstBuffer * buffer)
 {
   GstFileSink *filesink;
-  GstMapInfo info;
+  GstFlowReturn flow;
+  guint8 n_mem;
 
-  filesink = GST_FILE_SINK (sink);
+  filesink = GST_FILE_SINK_CAST (sink);
 
-  gst_buffer_map (buffer, &info, GST_MAP_READ);
+  n_mem = gst_buffer_n_memory (buffer);
 
-  GST_DEBUG_OBJECT (filesink,
-      "writing %" G_GSIZE_FORMAT " bytes at %" G_GUINT64_FORMAT,
-      info.size, filesink->current_pos);
+  if (n_mem > 0)
+    flow = gst_file_sink_render_buffers (filesink, &buffer, 1, &n_mem, n_mem);
+  else
+    flow = GST_FLOW_OK;
 
-  if (info.size > 0 && info.data != NULL) {
-    if (fwrite (info.data, info.size, 1, filesink->file) != 1)
-      goto handle_error;
-
-    filesink->current_pos += info.size;
-  }
-  gst_buffer_unmap (buffer, &info);
-
-  return GST_FLOW_OK;
-
-handle_error:
-  {
-    switch (errno) {
-      case ENOSPC:{
-        GST_ELEMENT_ERROR (filesink, RESOURCE, NO_SPACE_LEFT, (NULL), (NULL));
-        break;
-      }
-      default:{
-        GST_ELEMENT_ERROR (filesink, RESOURCE, WRITE,
-            (_("Error while writing to file \"%s\"."), filesink->filename),
-            ("%s", g_strerror (errno)));
-      }
+  if (flow == GST_FLOW_OK &&
+      GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_SYNC_AFTER)) {
+    if (fflush (filesink->file) || fsync (fileno (filesink->file))) {
+      GST_ELEMENT_ERROR (filesink, RESOURCE, WRITE,
+          (_("Error while writing to file \"%s\"."), filesink->filename),
+          ("%s", g_strerror (errno)));
+      flow = GST_FLOW_ERROR;
     }
-    gst_buffer_unmap (buffer, &info);
-    return GST_FLOW_ERROR;
   }
+
+  return flow;
 }
 
 static gboolean
diff --git a/plugins/elements/gstfilesink.h b/plugins/elements/gstfilesink.h
index 72a9a47..bd0e0ba 100644
--- a/plugins/elements/gstfilesink.h
+++ b/plugins/elements/gstfilesink.h
@@ -41,11 +41,28 @@
   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FILE_SINK))
 #define GST_IS_FILE_SINK_CLASS(klass) \
   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FILE_SINK))
+#define GST_FILE_SINK_CAST(obj) ((GstFileSink *)(obj))
 
 typedef struct _GstFileSink GstFileSink;
 typedef struct _GstFileSinkClass GstFileSinkClass;
 
 /**
+ * GstFileSinkBufferMode:
+ * @GST_FILE_SINK_BUFFER_MODE_DEFAULT: Default buffering
+ * @GST_FILE_SINK_BUFFER_MODE_FULL: Fully buffered
+ * @GST_FILE_SINK_BUFFER_MODE_LINE: Line buffered
+ * @GST_FILE_SINK_BUFFER_MODE_UNBUFFERED: Unbuffered
+ *
+ * File read buffering mode.
+ */
+typedef enum {
+  GST_FILE_SINK_BUFFER_MODE_DEFAULT    = -1,
+  GST_FILE_SINK_BUFFER_MODE_FULL       = _IOFBF,
+  GST_FILE_SINK_BUFFER_MODE_LINE       = _IOLBF,
+  GST_FILE_SINK_BUFFER_MODE_UNBUFFERED = _IONBF
+} GstFileSinkBufferMode;
+
+/**
  * GstFileSink:
  *
  * Opaque #GstFileSink structure.
diff --git a/plugins/elements/gstfilesrc.c b/plugins/elements/gstfilesrc.c
index 164e3a9..f99245a 100644
--- a/plugins/elements/gstfilesrc.c
+++ b/plugins/elements/gstfilesrc.c
@@ -28,8 +28,8 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch filesrc location=song.ogg ! decodebin ! autoaudiosink
- * ]| Play a song.ogg from local dir.
+ * gst-launch-1.0 filesrc location=song.ogg ! decodebin ! audioconvert ! audioresample ! autoaudiosink
+ * ]| Play song.ogg audio file which must be in the current working directory.
  * </refsect2>
  */
 
@@ -75,7 +75,6 @@
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS_ANY);
 
-/* FIXME we should be using glib for this */
 #ifndef S_ISREG
 #define S_ISREG(mode) ((mode)&_S_IFREG)
 #endif
@@ -254,7 +253,7 @@
     GST_INFO ("uri      : %s", src->uri);
   }
   g_object_notify (G_OBJECT (src), "location");
-  /* FIXME 0.11: notify "uri" property once there is one */
+  /* FIXME 2.0: notify "uri" property once there is one */
 
   return TRUE;
 
diff --git a/plugins/elements/gstfunnel.c b/plugins/elements/gstfunnel.c
index 19de206..80ba3a4 100644
--- a/plugins/elements/gstfunnel.c
+++ b/plugins/elements/gstfunnel.c
@@ -76,6 +76,14 @@
 
 G_DEFINE_TYPE (GstFunnelPad, gst_funnel_pad, GST_TYPE_PAD);
 
+#define DEFAULT_FORWARD_STICKY_EVENTS	TRUE
+
+enum
+{
+  PROP_0,
+  PROP_FORWARD_STICKY_EVENTS
+};
+
 static void
 gst_funnel_pad_class_init (GstFunnelPadClass * klass)
 {
@@ -112,10 +120,44 @@
 
 static GstFlowReturn gst_funnel_sink_chain (GstPad * pad, GstObject * parent,
     GstBuffer * buffer);
+static GstFlowReturn gst_funnel_sink_chain_list (GstPad * pad,
+    GstObject * parent, GstBufferList * list);
 static gboolean gst_funnel_sink_event (GstPad * pad, GstObject * parent,
     GstEvent * event);
 
 static void
+gst_funnel_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstFunnel *funnel = GST_FUNNEL (object);
+
+  switch (prop_id) {
+    case PROP_FORWARD_STICKY_EVENTS:
+      funnel->forward_sticky_events = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_funnel_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstFunnel *funnel = GST_FUNNEL (object);
+
+  switch (prop_id) {
+    case PROP_FORWARD_STICKY_EVENTS:
+      g_value_set_boolean (value, funnel->forward_sticky_events);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
 gst_funnel_dispose (GObject * object)
 {
   GstFunnel *funnel = GST_FUNNEL (object);
@@ -142,8 +184,17 @@
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
 
+  gobject_class->set_property = gst_funnel_set_property;
+  gobject_class->get_property = gst_funnel_get_property;
   gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_funnel_dispose);
 
+  g_object_class_install_property (gobject_class, PROP_FORWARD_STICKY_EVENTS,
+      g_param_spec_boolean ("forward-sticky-events", "Forward sticky events",
+          "Forward sticky events on stream changes",
+          DEFAULT_FORWARD_STICKY_EVENTS,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+          GST_PARAM_MUTABLE_READY));
+
   gst_element_class_set_static_metadata (gstelement_class,
       "Funnel pipe fitting", "Generic", "N-to-1 pipe fitting",
       "Olivier Crete <olivier.crete@collabora.co.uk>");
@@ -167,6 +218,8 @@
   gst_pad_use_fixed_caps (funnel->srcpad);
 
   gst_element_add_pad (GST_ELEMENT (funnel), funnel->srcpad);
+
+  funnel->forward_sticky_events = DEFAULT_FORWARD_STICKY_EVENTS;
 }
 
 static GstPad *
@@ -183,6 +236,8 @@
 
   gst_pad_set_chain_function (sinkpad,
       GST_DEBUG_FUNCPTR (gst_funnel_sink_chain));
+  gst_pad_set_chain_list_function (sinkpad,
+      GST_DEBUG_FUNCPTR (gst_funnel_sink_chain_list));
   gst_pad_set_event_function (sinkpad,
       GST_DEBUG_FUNCPTR (gst_funnel_sink_event));
 
@@ -193,6 +248,9 @@
 
   gst_element_add_pad (element, sinkpad);
 
+  GST_DEBUG_OBJECT (element, "requested pad %s:%s",
+      GST_DEBUG_PAD_NAME (sinkpad));
+
   return sinkpad;
 }
 
@@ -210,7 +268,7 @@
   for (item = element->sinkpads; item != NULL; item = g_list_next (item)) {
     GstFunnelPad *sinkpad = GST_FUNNEL_PAD_CAST (item->data);
 
-    if (sinkpad->got_eos == FALSE) {
+    if (!sinkpad->got_eos) {
       return FALSE;
     }
   }
@@ -229,7 +287,7 @@
   gboolean got_eos;
   gboolean send_eos = FALSE;
 
-  GST_DEBUG_OBJECT (funnel, "releasing pad");
+  GST_DEBUG_OBJECT (funnel, "releasing pad %s:%s", GST_DEBUG_PAD_NAME (pad));
 
   gst_pad_set_active (pad, FALSE);
 
@@ -261,31 +319,56 @@
 }
 
 static GstFlowReturn
-gst_funnel_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+gst_funnel_sink_chain_object (GstPad * pad, GstFunnel * funnel,
+    gboolean is_list, GstMiniObject * obj)
 {
   GstFlowReturn res;
-  GstFunnel *funnel = GST_FUNNEL (parent);
 
-  GST_DEBUG_OBJECT (funnel, "received buffer %p", buffer);
+  GST_DEBUG_OBJECT (pad, "received buffer%s %p", (is_list ? "list" : ""), obj);
 
   GST_PAD_STREAM_LOCK (funnel->srcpad);
 
-  if (funnel->last_sinkpad != pad) {
+  if ((funnel->last_sinkpad == NULL) || (funnel->forward_sticky_events
+          && (funnel->last_sinkpad != pad))) {
     gst_object_replace ((GstObject **) & funnel->last_sinkpad,
         GST_OBJECT (pad));
 
+    GST_DEBUG_OBJECT (pad, "Forwarding sticky events");
     gst_pad_sticky_events_foreach (pad, forward_events, funnel->srcpad);
   }
 
-  res = gst_pad_push (funnel->srcpad, buffer);
+  if (is_list)
+    res = gst_pad_push_list (funnel->srcpad, GST_BUFFER_LIST_CAST (obj));
+  else
+    res = gst_pad_push (funnel->srcpad, GST_BUFFER_CAST (obj));
 
   GST_PAD_STREAM_UNLOCK (funnel->srcpad);
 
-  GST_LOG_OBJECT (funnel, "handled buffer %s", gst_flow_get_name (res));
+  GST_LOG_OBJECT (pad, "handled buffer%s %s", (is_list ? "list" : ""),
+      gst_flow_get_name (res));
 
   return res;
 }
 
+static GstFlowReturn
+gst_funnel_sink_chain_list (GstPad * pad, GstObject * parent,
+    GstBufferList * list)
+{
+  GstFunnel *funnel = GST_FUNNEL (parent);
+
+  return gst_funnel_sink_chain_object (pad, funnel, TRUE,
+      GST_MINI_OBJECT_CAST (list));
+}
+
+static GstFlowReturn
+gst_funnel_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstFunnel *funnel = GST_FUNNEL (parent);
+
+  return gst_funnel_sink_chain_object (pad, funnel, FALSE,
+      GST_MINI_OBJECT_CAST (buffer));
+}
+
 static gboolean
 gst_funnel_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
@@ -295,6 +378,8 @@
   gboolean res = TRUE;
   gboolean unlock = FALSE;
 
+  GST_DEBUG_OBJECT (pad, "received event %" GST_PTR_FORMAT, event);
+
   if (GST_EVENT_IS_STICKY (event)) {
     unlock = TRUE;
     GST_PAD_STREAM_LOCK (funnel->srcpad);
@@ -317,6 +402,15 @@
     GST_OBJECT_LOCK (funnel);
     fpad->got_eos = FALSE;
     GST_OBJECT_UNLOCK (funnel);
+  } else if (GST_EVENT_TYPE (event) == GST_EVENT_GAP) {
+    /* 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 (forward)
diff --git a/plugins/elements/gstfunnel.h b/plugins/elements/gstfunnel.h
index 75b69ee..9a53b5d 100644
--- a/plugins/elements/gstfunnel.h
+++ b/plugins/elements/gstfunnel.h
@@ -56,6 +56,7 @@
   GstPad         *srcpad;
 
   GstPad *last_sinkpad;
+  gboolean forward_sticky_events;
 };
 
 struct _GstFunnelClass {
diff --git a/plugins/elements/gstidentity.c b/plugins/elements/gstidentity.c
index dbc9494..0214596 100644
--- a/plugins/elements/gstidentity.c
+++ b/plugins/elements/gstidentity.c
@@ -112,6 +112,8 @@
     GstStateChange transition);
 static gboolean gst_identity_accept_caps (GstBaseTransform * base,
     GstPadDirection direction, GstCaps * caps);
+static gboolean gst_identity_query (GstBaseTransform * base,
+    GstPadDirection direction, GstQuery * query);
 
 static guint gst_identity_signals[LAST_SIGNAL] = { 0 };
 
@@ -125,6 +127,7 @@
   identity = GST_IDENTITY (object);
 
   g_free (identity->last_message);
+  g_cond_clear (&identity->blocked_cond);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -239,6 +242,7 @@
   gstbasetrans_class->stop = GST_DEBUG_FUNCPTR (gst_identity_stop);
   gstbasetrans_class->accept_caps =
       GST_DEBUG_FUNCPTR (gst_identity_accept_caps);
+  gstbasetrans_class->query = gst_identity_query;
 }
 
 static void
@@ -256,6 +260,7 @@
   identity->dump = DEFAULT_DUMP;
   identity->last_message = NULL;
   identity->signal_handoffs = DEFAULT_SIGNAL_HANDOFFS;
+  g_cond_init (&identity->blocked_cond);
 
   gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM_CAST (identity), TRUE);
 }
@@ -266,6 +271,48 @@
   g_object_notify_by_pspec ((GObject *) identity, pspec_last_message);
 }
 
+static GstFlowReturn
+gst_identity_do_sync (GstIdentity * identity, GstClockTime running_time)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  if (identity->sync &&
+      GST_BASE_TRANSFORM_CAST (identity)->segment.format == GST_FORMAT_TIME) {
+    GstClock *clock;
+
+    GST_OBJECT_LOCK (identity);
+
+    while (identity->blocked)
+      g_cond_wait (&identity->blocked_cond, GST_OBJECT_GET_LOCK (identity));
+
+
+    if ((clock = GST_ELEMENT (identity)->clock)) {
+      GstClockReturn cret;
+      GstClockTime timestamp;
+
+      timestamp = running_time + GST_ELEMENT (identity)->base_time +
+          identity->upstream_latency;
+
+      /* save id if we need to unlock */
+      identity->clock_id = gst_clock_new_single_shot_id (clock, timestamp);
+      GST_OBJECT_UNLOCK (identity);
+
+      cret = gst_clock_id_wait (identity->clock_id, NULL);
+
+      GST_OBJECT_LOCK (identity);
+      if (identity->clock_id) {
+        gst_clock_id_unref (identity->clock_id);
+        identity->clock_id = NULL;
+      }
+      if (cret == GST_CLOCK_UNSCHEDULED)
+        ret = GST_FLOW_EOS;
+    }
+    GST_OBJECT_UNLOCK (identity);
+  }
+
+  return ret;
+}
+
 static gboolean
 gst_identity_sink_event (GstBaseTransform * trans, GstEvent * event)
 {
@@ -299,7 +346,7 @@
   }
 
   if (identity->single_segment && (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT)) {
-    if (trans->have_segment == FALSE) {
+    if (!trans->have_segment) {
       GstEvent *news;
       GstSegment segment;
 
@@ -318,8 +365,7 @@
     }
   }
 
-  /* also transform GAP timestamp similar to buffer timestamps */
-  if (identity->single_segment && (GST_EVENT_TYPE (event) == GST_EVENT_GAP) &&
+  if (GST_EVENT_TYPE (event) == GST_EVENT_GAP &&
       trans->have_segment && trans->segment.format == GST_FORMAT_TIME) {
     GstClockTime start, dur;
 
@@ -327,8 +373,14 @@
     if (GST_CLOCK_TIME_IS_VALID (start)) {
       start = gst_segment_to_running_time (&trans->segment,
           GST_FORMAT_TIME, start);
-      gst_event_unref (event);
-      event = gst_event_new_gap (start, dur);
+
+      gst_identity_do_sync (identity, start);
+
+      /* also transform GAP timestamp similar to buffer timestamps */
+      if (identity->single_segment) {
+        gst_event_unref (event);
+        event = gst_event_new_gap (start, dur);
+      }
     }
   }
 
@@ -349,8 +401,6 @@
       if (identity->clock_id) {
         GST_DEBUG_OBJECT (identity, "unlock clock wait");
         gst_clock_id_unschedule (identity->clock_id);
-        gst_clock_id_unref (identity->clock_id);
-        identity->clock_id = NULL;
       }
       GST_OBJECT_UNLOCK (identity);
     }
@@ -380,6 +430,7 @@
         /*
          * "imperfect-timestamp" bus message:
          * @identity:        the identity instance
+         * @delta:           the GST_CLOCK_DIFF to the prev timestamp
          * @prev-timestamp:  the previous buffer timestamp
          * @prev-duration:   the previous buffer duration
          * @prev-offset:     the previous buffer offset
@@ -396,6 +447,7 @@
         gst_element_post_message (GST_ELEMENT (identity),
             gst_message_new_element (GST_OBJECT (identity),
                 gst_structure_new ("imperfect-timestamp",
+                    "delta", G_TYPE_INT64, dt,
                     "prev-timestamp", G_TYPE_UINT64,
                     identity->prev_timestamp, "prev-duration", G_TYPE_UINT64,
                     identity->prev_duration, "prev-offset", G_TYPE_UINT64,
@@ -500,7 +552,9 @@
 {
   GstFlowReturn ret = GST_FLOW_OK;
   GstIdentity *identity = GST_IDENTITY (trans);
-  GstClockTime runtimestamp = G_GINT64_CONSTANT (0);
+  GstClockTime rundts = GST_CLOCK_TIME_NONE;
+  GstClockTime runpts = GST_CLOCK_TIME_NONE;
+  GstClockTime ts, duration, runtimestamp;
   gsize size;
 
   size = gst_buffer_get_size (buf);
@@ -550,37 +604,21 @@
   if (identity->signal_handoffs)
     g_signal_emit (identity, gst_identity_signals[SIGNAL_HANDOFF], 0, buf);
 
-  if (trans->segment.format == GST_FORMAT_TIME)
-    runtimestamp = gst_segment_to_running_time (&trans->segment,
-        GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (buf));
-
-  if ((identity->sync) && (trans->segment.format == GST_FORMAT_TIME)) {
-    GstClock *clock;
-
-    GST_OBJECT_LOCK (identity);
-    if ((clock = GST_ELEMENT (identity)->clock)) {
-      GstClockReturn cret;
-      GstClockTime timestamp;
-
-      timestamp = runtimestamp + GST_ELEMENT (identity)->base_time;
-
-      /* save id if we need to unlock */
-      identity->clock_id = gst_clock_new_single_shot_id (clock, timestamp);
-      GST_OBJECT_UNLOCK (identity);
-
-      cret = gst_clock_id_wait (identity->clock_id, NULL);
-
-      GST_OBJECT_LOCK (identity);
-      if (identity->clock_id) {
-        gst_clock_id_unref (identity->clock_id);
-        identity->clock_id = NULL;
-      }
-      if (cret == GST_CLOCK_UNSCHEDULED)
-        ret = GST_FLOW_EOS;
-    }
-    GST_OBJECT_UNLOCK (identity);
+  if (trans->segment.format == GST_FORMAT_TIME) {
+    rundts = gst_segment_to_running_time (&trans->segment,
+        GST_FORMAT_TIME, GST_BUFFER_DTS (buf));
+    runpts = gst_segment_to_running_time (&trans->segment,
+        GST_FORMAT_TIME, GST_BUFFER_PTS (buf));
   }
 
+  if (GST_CLOCK_TIME_IS_VALID (rundts))
+    runtimestamp = rundts;
+  else if (GST_CLOCK_TIME_IS_VALID (runpts))
+    runtimestamp = runpts;
+  else
+    runtimestamp = 0;
+  ret = gst_identity_do_sync (identity, runtimestamp);
+
   identity->offset += size;
 
   if (identity->sleep_time && ret == GST_FLOW_OK)
@@ -588,7 +626,8 @@
 
   if (identity->single_segment && (trans->segment.format == GST_FORMAT_TIME)
       && (ret == GST_FLOW_OK)) {
-    GST_BUFFER_PTS (buf) = GST_BUFFER_DTS (buf) = runtimestamp;
+    GST_BUFFER_DTS (buf) = rundts;
+    GST_BUFFER_PTS (buf) = runpts;
     GST_BUFFER_OFFSET (buf) = GST_CLOCK_TIME_NONE;
     GST_BUFFER_OFFSET_END (buf) = GST_CLOCK_TIME_NONE;
   }
@@ -608,6 +647,14 @@
       gst_identity_update_last_message_for_buffer (identity, "dropping", buf,
           size);
     }
+
+    ts = GST_BUFFER_TIMESTAMP (buf);
+    if (GST_CLOCK_TIME_IS_VALID (ts)) {
+      duration = GST_BUFFER_DURATION (buf);
+      gst_pad_push_event (GST_BASE_TRANSFORM_SRC_PAD (identity),
+          gst_event_new_gap (ts, duration));
+    }
+
     /* return DROPPED to basetransform. */
     return GST_BASE_TRANSFORM_FLOW_DROPPED;
   }
@@ -768,27 +815,78 @@
   return ret;
 }
 
+static gboolean
+gst_identity_query (GstBaseTransform * base, GstPadDirection direction,
+    GstQuery * query)
+{
+  GstIdentity *identity;
+  gboolean ret;
+
+  identity = GST_IDENTITY (base);
+
+  ret = GST_BASE_TRANSFORM_CLASS (parent_class)->query (base, direction, query);
+
+  if (GST_QUERY_TYPE (query) == GST_QUERY_LATENCY) {
+    gboolean live = FALSE;
+    GstClockTime min = 0, max = 0;
+
+    if (ret) {
+      gst_query_parse_latency (query, &live, &min, &max);
+
+      if (identity->sync && max < min) {
+        GST_ELEMENT_WARNING (base, CORE, CLOCK, (NULL),
+            ("Impossible to configure latency before identity sync=true:"
+                " max %" GST_TIME_FORMAT " < min %"
+                GST_TIME_FORMAT ". Add queues or other buffering elements.",
+                GST_TIME_ARGS (max), GST_TIME_ARGS (min)));
+      }
+    }
+
+    /* Ignore the upstream latency if it is not live */
+    GST_OBJECT_LOCK (identity);
+    if (live)
+      identity->upstream_latency = min;
+    else
+      identity->upstream_latency = 0;
+    GST_OBJECT_UNLOCK (identity);
+
+    gst_query_set_latency (query, live || identity->sync, min, max);
+    ret = TRUE;
+  }
+  return ret;
+}
+
 static GstStateChangeReturn
 gst_identity_change_state (GstElement * element, GstStateChange transition)
 {
   GstStateChangeReturn ret;
   GstIdentity *identity = GST_IDENTITY (element);
+  gboolean no_preroll = FALSE;
 
   switch (transition) {
     case GST_STATE_CHANGE_NULL_TO_READY:
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
+      GST_OBJECT_LOCK (identity);
+      identity->blocked = TRUE;
+      GST_OBJECT_UNLOCK (identity);
+      if (identity->sync)
+        no_preroll = TRUE;
       break;
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      GST_OBJECT_LOCK (identity);
+      identity->blocked = FALSE;
+      g_cond_broadcast (&identity->blocked_cond);
+      GST_OBJECT_UNLOCK (identity);
       break;
     case GST_STATE_CHANGE_PAUSED_TO_READY:
       GST_OBJECT_LOCK (identity);
       if (identity->clock_id) {
         GST_DEBUG_OBJECT (identity, "unlock clock wait");
         gst_clock_id_unschedule (identity->clock_id);
-        gst_clock_id_unref (identity->clock_id);
-        identity->clock_id = NULL;
       }
+      identity->blocked = FALSE;
+      g_cond_broadcast (&identity->blocked_cond);
       GST_OBJECT_UNLOCK (identity);
       break;
     default:
@@ -799,6 +897,12 @@
 
   switch (transition) {
     case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      GST_OBJECT_LOCK (identity);
+      identity->upstream_latency = 0;
+      identity->blocked = TRUE;
+      GST_OBJECT_UNLOCK (identity);
+      if (identity->sync)
+        no_preroll = TRUE;
       break;
     case GST_STATE_CHANGE_PAUSED_TO_READY:
       break;
@@ -808,5 +912,8 @@
       break;
   }
 
+  if (no_preroll && ret == GST_STATE_CHANGE_SUCCESS)
+    ret = GST_STATE_CHANGE_NO_PREROLL;
+
   return ret;
 }
diff --git a/plugins/elements/gstidentity.h b/plugins/elements/gstidentity.h
index 5d613b2..315cdbd 100644
--- a/plugins/elements/gstidentity.h
+++ b/plugins/elements/gstidentity.h
@@ -72,6 +72,9 @@
   gchar 	*last_message;
   guint64        offset;
   gboolean       signal_handoffs;
+  GstClockTime   upstream_latency;
+  GCond          blocked_cond;
+  gboolean       blocked;
 };
 
 struct _GstIdentityClass {
diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c
index fb50802..aa5cad3 100644
--- a/plugins/elements/gstinputselector.c
+++ b/plugins/elements/gstinputselector.c
@@ -125,21 +125,11 @@
   PROP_PAD_ALWAYS_OK
 };
 
-enum
-{
-  /* methods */
-  SIGNAL_BLOCK,
-  SIGNAL_SWITCH,
-  LAST_SIGNAL
-};
-static guint gst_input_selector_signals[LAST_SIGNAL] = { 0 };
-
 static void gst_input_selector_active_pad_changed (GstInputSelector * sel,
     GParamSpec * pspec, gpointer user_data);
 static inline gboolean gst_input_selector_is_active_sinkpad (GstInputSelector *
     sel, GstPad * pad);
-static GstPad *gst_input_selector_activate_sinkpad (GstInputSelector * sel,
-    GstPad * pad);
+static GstPad *gst_input_selector_get_active_sinkpad (GstInputSelector * sel);
 static GstPad *gst_input_selector_get_linked_pad (GstInputSelector * sel,
     GstPad * pad, gboolean strict);
 
@@ -164,7 +154,6 @@
 {
   GstPad parent;
 
-  gboolean active;              /* when buffer have passed the pad */
   gboolean pushed;              /* when buffer was pushed downstream since activation */
   gboolean eos;                 /* when EOS has been received */
   gboolean eos_sent;            /* when EOS was sent downstream */
@@ -332,11 +321,9 @@
   gint64 ret = 0;
 
   GST_OBJECT_LOCK (pad);
-  if (pad->active) {
-    GstFormat format = pad->segment.format;
-
+  if (pad->segment.format == GST_FORMAT_TIME) {
     ret =
-        gst_segment_to_running_time (&pad->segment, format,
+        gst_segment_to_running_time (&pad->segment, pad->segment.format,
         pad->segment.position);
   }
   GST_OBJECT_UNLOCK (pad);
@@ -352,7 +339,6 @@
 gst_selector_pad_reset (GstSelectorPad * pad)
 {
   GST_OBJECT_LOCK (pad);
-  pad->active = FALSE;
   pad->pushed = FALSE;
   pad->eos = FALSE;
   pad->eos_sent = FALSE;
@@ -378,7 +364,8 @@
 static void
 gst_selector_pad_free_cached_buffer (GstSelectorPadCachedBuffer * cached_buffer)
 {
-  gst_buffer_unref (cached_buffer->buffer);
+  if (cached_buffer->buffer)
+    gst_buffer_unref (cached_buffer->buffer);
   g_slice_free (GstSelectorPadCachedBuffer, cached_buffer);
 }
 
@@ -403,15 +390,12 @@
 static void
 gst_selector_pad_free_cached_buffers (GstSelectorPad * selpad)
 {
-  GstSelectorPadCachedBuffer *cached_buffer;
-
   if (!selpad->cached_buffers)
     return;
 
   GST_DEBUG_OBJECT (selpad, "Freeing cached buffers");
-  while ((cached_buffer = g_queue_pop_head (selpad->cached_buffers)))
-    gst_selector_pad_free_cached_buffer (cached_buffer);
-  g_queue_free (selpad->cached_buffers);
+  g_queue_free_full (selpad->cached_buffers,
+      (GDestroyNotify) gst_selector_pad_free_cached_buffer);
   selpad->cached_buffers = NULL;
 }
 
@@ -440,6 +424,88 @@
 }
 
 static gboolean
+forward_sticky_events (GstPad * sinkpad, GstEvent ** event, gpointer user_data)
+{
+  GstInputSelector *sel = GST_INPUT_SELECTOR (user_data);
+
+  GST_DEBUG_OBJECT (sinkpad, "forward sticky event %" GST_PTR_FORMAT, *event);
+
+  if (GST_EVENT_TYPE (*event) == GST_EVENT_SEGMENT) {
+    GstSegment *seg = &GST_SELECTOR_PAD (sinkpad)->segment;
+    GstEvent *e;
+
+    e = gst_event_new_segment (seg);
+    gst_event_set_seqnum (e, GST_SELECTOR_PAD_CAST (sinkpad)->segment_seqnum);
+
+    gst_pad_push_event (sel->srcpad, e);
+  } else if (GST_EVENT_TYPE (*event) == GST_EVENT_STREAM_START
+      && !sel->have_group_id) {
+    GstEvent *tmp =
+        gst_pad_get_sticky_event (sel->srcpad, GST_EVENT_STREAM_START, 0);
+
+    /* Only push stream-start once if not all our streams have a stream-id */
+    if (!tmp) {
+      gst_pad_push_event (sel->srcpad, gst_event_ref (*event));
+    } else {
+      gst_event_unref (tmp);
+    }
+  } else {
+    gst_pad_push_event (sel->srcpad, gst_event_ref (*event));
+  }
+
+  return TRUE;
+}
+
+static gboolean
+gst_input_selector_eos_wait (GstInputSelector * self, GstSelectorPad * pad,
+    GstEvent * eos_event)
+{
+  while (!self->eos && !self->flushing && !pad->flushing) {
+    GstPad *active_sinkpad;
+    active_sinkpad = gst_input_selector_get_active_sinkpad (self);
+    if (pad == GST_SELECTOR_PAD_CAST (active_sinkpad) && pad->eos
+        && !pad->eos_sent) {
+      GST_DEBUG_OBJECT (pad, "send EOS event");
+      GST_INPUT_SELECTOR_UNLOCK (self);
+      /* if we have a pending events, push them now */
+      if (pad->events_pending) {
+        gst_pad_sticky_events_foreach (GST_PAD_CAST (pad),
+            forward_sticky_events, self);
+        pad->events_pending = FALSE;
+      }
+
+      gst_pad_push_event (self->srcpad, gst_event_ref (eos_event));
+      GST_INPUT_SELECTOR_LOCK (self);
+      pad->eos_sent = TRUE;
+    } else {
+      /* we can be unlocked here when we are shutting down (flushing) or when we
+       * get unblocked */
+      GST_INPUT_SELECTOR_WAIT (self);
+    }
+  }
+
+  return self->flushing;
+}
+
+static gboolean
+gst_input_selector_all_eos (GstInputSelector * sel)
+{
+  GList *walk;
+
+  for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = walk->next) {
+    GstSelectorPad *selpad;
+
+    selpad = GST_SELECTOR_PAD_CAST (walk->data);
+    if (!selpad->eos) {
+      return FALSE;
+    }
+
+  }
+
+  return TRUE;
+}
+
+static gboolean
 gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
   gboolean res = TRUE;
@@ -457,7 +523,8 @@
   GST_INPUT_SELECTOR_LOCK (sel);
   prev_active_sinkpad =
       sel->active_sinkpad ? gst_object_ref (sel->active_sinkpad) : NULL;
-  active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+  active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
+  gst_object_ref (active_sinkpad);
   GST_INPUT_SELECTOR_UNLOCK (sel);
 
   if (prev_active_sinkpad != active_sinkpad) {
@@ -468,9 +535,10 @@
   }
   if (prev_active_sinkpad)
     gst_object_unref (prev_active_sinkpad);
+  gst_object_unref (active_sinkpad);
 
   GST_INPUT_SELECTOR_LOCK (sel);
-  active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+  active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
 
   /* only forward if we are dealing with the active sinkpad */
   forward = (pad == active_sinkpad);
@@ -486,6 +554,7 @@
     case GST_EVENT_FLUSH_START:
       /* Unblock the pad if it's waiting */
       selpad->flushing = TRUE;
+      sel->eos = FALSE;
       GST_INPUT_SELECTOR_BROADCAST (sel);
       break;
     case GST_EVENT_FLUSH_STOP:
@@ -522,23 +591,15 @@
     }
     case GST_EVENT_EOS:
       selpad->eos = TRUE;
-
-      if (forward) {
-        selpad->eos_sent = TRUE;
-      } else {
-        GstSelectorPad *active_selpad;
-
-        /* If the active sinkpad is in EOS state but EOS
-         * was not sent downstream this means that the pad
-         * got EOS before it was set as active pad and that
-         * the previously active pad got EOS after it was
-         * active
-         */
-        active_selpad = GST_SELECTOR_PAD (active_sinkpad);
-        forward = (active_selpad->eos && !active_selpad->eos_sent);
-        active_selpad->eos_sent = TRUE;
-      }
       GST_DEBUG_OBJECT (pad, "received EOS");
+      if (gst_input_selector_all_eos (sel)) {
+        GST_DEBUG_OBJECT (pad, "All sink pad received EOS");
+        sel->eos = TRUE;
+        GST_INPUT_SELECTOR_BROADCAST (sel);
+      } else {
+        gst_input_selector_eos_wait (sel, selpad, event);
+        forward = FALSE;
+      }
       break;
     case GST_EVENT_GAP:{
       GstClockTime ts, dur;
@@ -605,7 +666,7 @@
        */
       if (GST_PAD_DIRECTION (pad) == GST_PAD_SINK) {
         GST_INPUT_SELECTOR_LOCK (sel);
-        active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+        active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
         GST_INPUT_SELECTOR_UNLOCK (sel);
 
         if (pad != active_sinkpad) {
@@ -624,17 +685,23 @@
   return res;
 }
 
-/* must be called with the SELECTOR_LOCK, will block while the pad is blocked 
- * or return TRUE when flushing */
-static gboolean
-gst_input_selector_wait (GstInputSelector * self, GstSelectorPad * pad)
+static GstClockTime
+gst_input_selector_get_clipped_running_time (GstSegment * seg, GstBuffer * buf)
 {
-  while (self->blocked && !self->flushing && !pad->flushing) {
-    /* we can be unlocked here when we are shutting down (flushing) or when we
-     * get unblocked */
-    GST_INPUT_SELECTOR_WAIT (self);
+  GstClockTime running_time;
+
+  running_time = GST_BUFFER_PTS (buf);
+  /* If possible try to get the running time at the end of the buffer */
+  if (GST_BUFFER_DURATION_IS_VALID (buf))
+    running_time += GST_BUFFER_DURATION (buf);
+  /* Only use the segment to convert to running time if the segment is
+   * in TIME format, otherwise do our best to try to sync */
+  if (GST_CLOCK_TIME_IS_VALID (seg->stop)) {
+    if (running_time > seg->stop) {
+      running_time = seg->stop;
+    }
   }
-  return self->flushing;
+  return gst_segment_to_running_time (seg, GST_FORMAT_TIME, running_time);
 }
 
 /* must be called without the SELECTOR_LOCK, will wait until the running time
@@ -648,7 +715,7 @@
   GST_DEBUG_OBJECT (selpad, "entering wait for buffer %p", buf);
 
   /* If we have no valid timestamp we can't sync this buffer */
-  if (!GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+  if (!GST_BUFFER_PTS_IS_VALID (buf)) {
     GST_DEBUG_OBJECT (selpad, "leaving wait for buffer with "
         "invalid timestamp");
     return FALSE;
@@ -659,8 +726,7 @@
   /* Wait until
    *   a) this is the active pad
    *   b) the pad or the selector is flushing
-   *   c) the selector is not blocked
-   *   d) the buffer running time is before the current running time
+   *   c) the buffer running time is before the current running time
    *      (either active-seg or clock, depending on sync-mode)
    */
 
@@ -672,8 +738,7 @@
     gint64 cur_running_time;
     GstClockTime running_time;
 
-    active_sinkpad =
-        gst_input_selector_activate_sinkpad (sel, GST_PAD_CAST (selpad));
+    active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
     active_selpad = GST_SELECTOR_PAD_CAST (active_sinkpad);
 
     if (seg->format != GST_FORMAT_TIME) {
@@ -683,19 +748,7 @@
       return FALSE;
     }
 
-    running_time = GST_BUFFER_TIMESTAMP (buf);
-    /* If possible try to get the running time at the end of the buffer */
-    if (GST_BUFFER_DURATION_IS_VALID (buf))
-      running_time += GST_BUFFER_DURATION (buf);
-    /* Only use the segment to convert to running time if the segment is
-     * in TIME format, otherwise do our best to try to sync */
-    if (GST_CLOCK_TIME_IS_VALID (seg->stop)) {
-      if (running_time > seg->stop) {
-        running_time = seg->stop;
-      }
-    }
-    running_time =
-        gst_segment_to_running_time (seg, GST_FORMAT_TIME, running_time);
+    running_time = gst_input_selector_get_clipped_running_time (seg, buf);
     /* If this is outside the segment don't sync */
     if (running_time == -1) {
       GST_DEBUG_OBJECT (selpad,
@@ -726,8 +779,8 @@
 
       /* If the active segment is configured but not to time format
        * we can't do any syncing at all */
-      if (active_seg->format != GST_FORMAT_TIME
-          && active_seg->format != GST_FORMAT_UNDEFINED) {
+      if ((active_seg->format != GST_FORMAT_TIME
+              && active_seg->format != GST_FORMAT_UNDEFINED)) {
         GST_DEBUG_OBJECT (selpad,
             "Not waiting because active segment isn't in TIME format");
         GST_INPUT_SELECTOR_UNLOCK (sel);
@@ -740,17 +793,13 @@
             GST_FORMAT_TIME, active_seg->position);
     }
 
-    if (selpad != active_selpad && !sel->flushing && !selpad->flushing &&
-        (sel->blocked || cur_running_time == -1
+    if (selpad != active_selpad && !sel->eos && !sel->flushing
+        && !selpad->flushing && (cur_running_time == GST_CLOCK_TIME_NONE
             || running_time >= cur_running_time)) {
-      if (!sel->blocked) {
-        GST_DEBUG_OBJECT (selpad,
-            "Waiting for active streams to advance. %" GST_TIME_FORMAT " >= %"
-            GST_TIME_FORMAT, GST_TIME_ARGS (running_time),
-            GST_TIME_ARGS (cur_running_time));
-      } else
-        GST_DEBUG_OBJECT (selpad, "Waiting for selector to unblock");
-
+      GST_DEBUG_OBJECT (selpad,
+          "Waiting for active streams to advance. %" GST_TIME_FORMAT " >= %"
+          GST_TIME_FORMAT, GST_TIME_ARGS (running_time),
+          GST_TIME_ARGS (cur_running_time));
       GST_INPUT_SELECTOR_WAIT (sel);
     } else {
       GST_INPUT_SELECTOR_UNLOCK (sel);
@@ -762,48 +811,19 @@
   return (sel->flushing || selpad->flushing);
 }
 
-static gboolean
-forward_sticky_events (GstPad * sinkpad, GstEvent ** event, gpointer user_data)
-{
-  GstInputSelector *sel = GST_INPUT_SELECTOR (user_data);
-
-  if (GST_EVENT_TYPE (*event) == GST_EVENT_SEGMENT) {
-    GstSegment *seg = &GST_SELECTOR_PAD (sinkpad)->segment;
-    GstEvent *e;
-
-    e = gst_event_new_segment (seg);
-    gst_event_set_seqnum (e, GST_SELECTOR_PAD_CAST (sinkpad)->segment_seqnum);
-
-    gst_pad_push_event (sel->srcpad, e);
-  } else if (GST_EVENT_TYPE (*event) == GST_EVENT_STREAM_START
-      && !sel->have_group_id) {
-    GstEvent *tmp =
-        gst_pad_get_sticky_event (sel->srcpad, GST_EVENT_STREAM_START, 0);
-
-    /* Only push stream-start once if not all our streams have a stream-id */
-    if (!tmp) {
-      gst_pad_push_event (sel->srcpad, gst_event_ref (*event));
-    } else {
-      gst_event_unref (tmp);
-    }
-  } else {
-    gst_pad_push_event (sel->srcpad, gst_event_ref (*event));
-  }
-
-  return TRUE;
-}
-
 #if DEBUG_CACHED_BUFFERS
 static void
 gst_input_selector_debug_cached_buffers (GstInputSelector * sel)
 {
   GList *walk;
 
-  for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = g_list_next (walk)) {
+  if (gst_debug_category_get_threshold (input_selector_debug) < GST_LEVEL_DEBUG)
+    return;
+
+  for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = walk->next) {
     GstSelectorPad *selpad;
     GString *timestamps;
-    gchar *str;
-    int i;
+    GList *l;
 
     selpad = GST_SELECTOR_PAD_CAST (walk->data);
     if (!selpad->cached_buffers) {
@@ -812,16 +832,14 @@
     }
 
     timestamps = g_string_new ("Cached buffers timestamps:");
-    for (i = 0; i < selpad->cached_buffers->length; ++i) {
-      GstSelectorPadCachedBuffer *cached_buffer;
+    for (l = selpad->cached_buffers->head; l != NULL; l = l->next) {
+      GstSelectorPadCachedBuffer *cached_buffer = l->data;
 
-      cached_buffer = g_queue_peek_nth (selpad->cached_buffers, i);
       g_string_append_printf (timestamps, " %" GST_TIME_FORMAT,
-          GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (cached_buffer->buffer)));
+          GST_TIME_ARGS (GST_BUFFER_PTS (cached_buffer->buffer)));
     }
-    str = g_string_free (timestamps, FALSE);
-    GST_DEBUG_OBJECT (selpad, "%s", str);
-    g_free (str);
+    GST_DEBUG_OBJECT (selpad, "%s", timestamps->str);
+    g_string_free (timestamps, TRUE);
   }
 }
 #endif
@@ -855,7 +873,7 @@
     GstSelectorPad *active_selpad;
     GstSegment *active_seg;
 
-    active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+    active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
     active_selpad = GST_SELECTOR_PAD_CAST (active_sinkpad);
     active_seg = &active_selpad->segment;
 
@@ -891,7 +909,7 @@
       GSList *l;
 
       /* If we have no valid timestamp we can't sync this buffer */
-      if (!GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) {
+      if (!GST_BUFFER_PTS_IS_VALID (buffer)) {
         maybe_remove = g_slist_append (maybe_remove, cached_buffer);
         queue_position = g_slist_length (maybe_remove);
         continue;
@@ -900,20 +918,7 @@
       /* the buffer is still valid if its duration is valid and the
        * timestamp + duration is >= time, or if its duration is invalid
        * and the timestamp is >= time */
-      running_time = GST_BUFFER_TIMESTAMP (buffer);
-      /* If possible try to get the running time at the end of the buffer */
-      if (GST_BUFFER_DURATION_IS_VALID (buffer))
-        running_time += GST_BUFFER_DURATION (buffer);
-      /* Only use the segment to convert to running time if the segment is
-       * in TIME format, otherwise do our best to try to sync */
-      if (GST_CLOCK_TIME_IS_VALID (seg->stop)) {
-        if (running_time > seg->stop) {
-          running_time = seg->stop;
-        }
-      }
-      running_time =
-          gst_segment_to_running_time (seg, GST_FORMAT_TIME, running_time);
-
+      running_time = gst_input_selector_get_clipped_running_time (seg, buffer);
       GST_DEBUG_OBJECT (selpad,
           "checking if buffer %p running time=%" GST_TIME_FORMAT
           " >= stream time=%" GST_TIME_FORMAT, buffer,
@@ -961,18 +966,17 @@
   GstPad *active_sinkpad;
   GstPad *prev_active_sinkpad = NULL;
   GstSelectorPad *selpad;
-  GstClockTime start_time;
 
   sel = GST_INPUT_SELECTOR (parent);
   selpad = GST_SELECTOR_PAD_CAST (pad);
 
   GST_DEBUG_OBJECT (selpad,
       "entering chain for buf %p with timestamp %" GST_TIME_FORMAT, buf,
-      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+      GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
 
   GST_INPUT_SELECTOR_LOCK (sel);
-  /* wait or check for flushing */
-  if (gst_input_selector_wait (sel, selpad)) {
+
+  if (sel->flushing) {
     GST_INPUT_SELECTOR_UNLOCK (sel);
     goto flushing;
   }
@@ -981,7 +985,7 @@
 
   prev_active_sinkpad =
       sel->active_sinkpad ? gst_object_ref (sel->active_sinkpad) : NULL;
-  active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+  active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
 
   /* In sync mode wait until the active pad has advanced
    * after the running time of the current buffer */
@@ -998,7 +1002,7 @@
         saved_segment = selpad->segment;
 
         selpad->sending_cached_buffers = TRUE;
-        while (!sel->flushing && !selpad->flushing &&
+        while (!sel->eos && !sel->flushing && !selpad->flushing &&
             (cached_buffer = g_queue_pop_head (selpad->cached_buffers))) {
           GST_DEBUG_OBJECT (pad, "Cached buffers found, "
               "invoking chain for cached buffer %p", cached_buffer->buffer);
@@ -1009,6 +1013,10 @@
           gst_selector_pad_chain (pad, parent, cached_buffer->buffer);
           GST_INPUT_SELECTOR_LOCK (sel);
 
+          /* We just passed the ownership of the buffer to the chain function */
+          cached_buffer->buffer = NULL;
+          gst_selector_pad_free_cached_buffer (cached_buffer);
+
           /* we may have cleaned up the queue in the meantime because of
            * old buffers */
           if (!selpad->cached_buffers) {
@@ -1022,7 +1030,7 @@
         selpad->events_pending = TRUE;
 
         /* Might have changed while calling chain for cached buffers */
-        active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+        active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
       }
     }
 
@@ -1034,12 +1042,13 @@
     }
 
     /* Might have changed while waiting */
-    active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+    active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
   }
 
   /* update the segment on the srcpad */
-  start_time = GST_BUFFER_TIMESTAMP (buf);
-  if (GST_CLOCK_TIME_IS_VALID (start_time)) {
+  if (GST_BUFFER_PTS_IS_VALID (buf)) {
+    GstClockTime start_time = GST_BUFFER_PTS (buf);
+
     GST_LOG_OBJECT (pad, "received start time %" GST_TIME_FORMAT,
         GST_TIME_ARGS (start_time));
     if (GST_BUFFER_DURATION_IS_VALID (buf))
@@ -1076,9 +1085,10 @@
     selpad->events_pending = FALSE;
   }
 
-  if (prev_active_sinkpad)
+  if (prev_active_sinkpad) {
     gst_object_unref (prev_active_sinkpad);
-  prev_active_sinkpad = NULL;
+    prev_active_sinkpad = NULL;
+  }
 
   if (selpad->discont) {
     buf = gst_buffer_make_writable (buf);
@@ -1090,7 +1100,7 @@
 
   /* forward */
   GST_LOG_OBJECT (pad, "Forwarding buffer %p with timestamp %" GST_TIME_FORMAT,
-      buf, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+      buf, GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
 
   /* Only make the buffer read-only when necessary */
   if (sel->sync_streams && sel->cache_buffers)
@@ -1102,7 +1112,7 @@
 
   if (sel->sync_streams && sel->cache_buffers) {
     /* Might have changed while pushing */
-    active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
+    active_sinkpad = gst_input_selector_get_active_sinkpad (sel);
     /* only set pad to pushed if we are still the active pad */
     if (active_sinkpad == pad)
       selpad->pushed = TRUE;
@@ -1170,9 +1180,6 @@
 
 static gboolean gst_input_selector_event (GstPad * pad, GstObject * parent,
     GstEvent * event);
-static gboolean gst_input_selector_query (GstPad * pad, GstObject * parent,
-    GstQuery * query);
-static gint64 gst_input_selector_block (GstInputSelector * self);
 
 #define _do_init \
     GST_DEBUG_CATEGORY_INIT (input_selector_debug, \
@@ -1201,7 +1208,8 @@
   g_object_class_install_property (gobject_class, PROP_ACTIVE_PAD,
       g_param_spec_object ("active-pad", "Active pad",
           "The currently active sink pad", GST_TYPE_PAD,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   /**
    * GstInputSelector:sync-streams
@@ -1257,20 +1265,6 @@
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
           GST_PARAM_MUTABLE_READY));
 
-  /**
-   * GstInputSelector::block:
-   * @inputselector: the #GstInputSelector
-   *
-   * Block all sink pads in preparation for a switch. Returns the stop time of
-   * the current switch segment, as a running time, or 0 if there is no current
-   * active pad or the current active pad never received data.
-   */
-  gst_input_selector_signals[SIGNAL_BLOCK] =
-      g_signal_new ("block", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-      G_STRUCT_OFFSET (GstInputSelectorClass, block), NULL, NULL,
-      g_cclosure_marshal_generic, G_TYPE_INT64, 0);
-
   gst_element_class_set_static_metadata (gstelement_class, "Input selector",
       "Generic", "N-to-1 input stream selector",
       "Julien Moutte <julien@moutte.net>, "
@@ -1284,8 +1278,6 @@
   gstelement_class->request_new_pad = gst_input_selector_request_new_pad;
   gstelement_class->release_pad = gst_input_selector_release_pad;
   gstelement_class->change_state = gst_input_selector_change_state;
-
-  klass->block = GST_DEBUG_FUNCPTR (gst_input_selector_block);
 }
 
 static void
@@ -1294,8 +1286,6 @@
   sel->srcpad = gst_pad_new ("src", GST_PAD_SRC);
   gst_pad_set_iterate_internal_links_function (sel->srcpad,
       GST_DEBUG_FUNCPTR (gst_selector_pad_iterate_linked_pads));
-  gst_pad_set_query_function (sel->srcpad,
-      GST_DEBUG_FUNCPTR (gst_input_selector_query));
   gst_pad_set_event_function (sel->srcpad,
       GST_DEBUG_FUNCPTR (gst_input_selector_event));
   GST_OBJECT_FLAG_SET (sel->srcpad, GST_PAD_FLAG_PROXY_CAPS);
@@ -1304,11 +1294,12 @@
   sel->active_sinkpad = NULL;
   sel->padcount = 0;
   sel->sync_streams = DEFAULT_SYNC_STREAMS;
+  sel->sync_mode = DEFAULT_SYNC_MODE;
   sel->have_group_id = TRUE;
 
   g_mutex_init (&sel->lock);
   g_cond_init (&sel->cond);
-  sel->blocked = FALSE;
+  sel->eos = FALSE;
 
   /* lets give a change for downstream to do something on
    * active-pad change before we start pushing new buffers */
@@ -1377,6 +1368,11 @@
   GST_DEBUG_OBJECT (self, "New active pad is %" GST_PTR_FORMAT,
       self->active_sinkpad);
 
+  if (old != new && new && new->eos) {
+    new->eos_sent = FALSE;
+    GST_INPUT_SELECTOR_BROADCAST (self);
+  }
+
   return TRUE;
 }
 
@@ -1553,79 +1549,6 @@
   return result;
 }
 
-/* query on the srcpad. We override this function because by default it will
- * only forward the query to one random sinkpad */
-static gboolean
-gst_input_selector_query (GstPad * pad, GstObject * parent, GstQuery * query)
-{
-  gboolean res = FALSE;
-  GstInputSelector *sel;
-
-  sel = GST_INPUT_SELECTOR (parent);
-
-  switch (GST_QUERY_TYPE (query)) {
-    case GST_QUERY_LATENCY:
-    {
-      GList *walk;
-      GstClockTime resmin, resmax;
-      gboolean reslive;
-
-      resmin = 0;
-      resmax = -1;
-      reslive = FALSE;
-
-      /* perform the query on all sinkpads and combine the results. We take the
-       * max of min and the min of max for the result latency. */
-      GST_INPUT_SELECTOR_LOCK (sel);
-      for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk;
-          walk = g_list_next (walk)) {
-        GstPad *sinkpad = GST_PAD_CAST (walk->data);
-
-        if (gst_pad_peer_query (sinkpad, query)) {
-          GstClockTime min, max;
-          gboolean live;
-
-          /* one query succeeded, we succeed too */
-          res = TRUE;
-
-          gst_query_parse_latency (query, &live, &min, &max);
-
-          GST_DEBUG_OBJECT (sinkpad,
-              "peer latency min %" GST_TIME_FORMAT ", max %" GST_TIME_FORMAT
-              ", live %d", GST_TIME_ARGS (min), GST_TIME_ARGS (max), live);
-
-          if (live) {
-            if (min > resmin)
-              resmin = min;
-            if (resmax == -1)
-              resmax = max;
-            else if (max < resmax)
-              resmax = max;
-            if (reslive == FALSE)
-              reslive = live;
-          }
-        }
-      }
-      GST_INPUT_SELECTOR_UNLOCK (sel);
-      if (res) {
-        gst_query_set_latency (query, reslive, resmin, resmax);
-
-        GST_DEBUG_OBJECT (sel,
-            "total latency min %" GST_TIME_FORMAT ", max %" GST_TIME_FORMAT
-            ", live %d", GST_TIME_ARGS (resmin), GST_TIME_ARGS (resmax),
-            reslive);
-      }
-
-      break;
-    }
-    default:
-      res = gst_pad_query_default (pad, parent, query);
-      break;
-  }
-
-  return res;
-}
-
 /* check if the pad is the active sinkpad */
 static inline gboolean
 gst_input_selector_is_active_sinkpad (GstInputSelector * sel, GstPad * pad)
@@ -1641,16 +1564,12 @@
 
 /* Get or create the active sinkpad, must be called with SELECTOR_LOCK */
 static GstPad *
-gst_input_selector_activate_sinkpad (GstInputSelector * sel, GstPad * pad)
+gst_input_selector_get_active_sinkpad (GstInputSelector * sel)
 {
   GstPad *active_sinkpad;
-  GstSelectorPad *selpad;
 
-  selpad = GST_SELECTOR_PAD_CAST (pad);
-
-  selpad->active = TRUE;
   active_sinkpad = sel->active_sinkpad;
-  if (sel->active_sinkpad == NULL) {
+  if (active_sinkpad == NULL) {
     GValue item = G_VALUE_INIT;
     GstIterator *iter = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (sel));
     GstIteratorResult ires;
@@ -1687,7 +1606,7 @@
 
   GST_INPUT_SELECTOR_LOCK (sel);
 
-  GST_LOG_OBJECT (sel, "Creating new pad %d", sel->padcount);
+  GST_LOG_OBJECT (sel, "Creating new pad sink_%u", sel->padcount);
   name = g_strdup_printf ("sink_%u", sel->padcount++);
   sinkpad = g_object_new (GST_TYPE_SELECTOR_PAD,
       "name", name, "direction", templ->direction, "template", templ, NULL);
@@ -1746,6 +1665,8 @@
     gst_object_unref (sel->active_sinkpad);
     sel->active_sinkpad = NULL;
   }
+  sel->eos_sent = FALSE;
+
   /* reset each of our sinkpads state */
   for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = g_list_next (walk)) {
     GstSelectorPad *selpad = GST_SELECTOR_PAD_CAST (walk->data);
@@ -1771,7 +1692,7 @@
   switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       GST_INPUT_SELECTOR_LOCK (self);
-      self->blocked = FALSE;
+      self->eos = FALSE;
       self->flushing = FALSE;
       GST_INPUT_SELECTOR_UNLOCK (self);
       break;
@@ -1779,7 +1700,7 @@
       /* first unlock before we call the parent state change function, which
        * tries to acquire the stream lock when going to ready. */
       GST_INPUT_SELECTOR_LOCK (self);
-      self->blocked = FALSE;
+      self->eos = TRUE;
       self->flushing = TRUE;
       GST_INPUT_SELECTOR_BROADCAST (self);
       GST_INPUT_SELECTOR_UNLOCK (self);
@@ -1800,27 +1721,3 @@
 
   return result;
 }
-
-static gint64
-gst_input_selector_block (GstInputSelector * self)
-{
-  gint64 ret = 0;
-  GstSelectorPad *spad;
-
-  GST_INPUT_SELECTOR_LOCK (self);
-
-  if (self->blocked)
-    GST_WARNING_OBJECT (self, "switch already blocked");
-
-  self->blocked = TRUE;
-  spad = GST_SELECTOR_PAD_CAST (self->active_sinkpad);
-
-  if (spad)
-    ret = gst_selector_pad_get_running_time (spad);
-  else
-    GST_DEBUG_OBJECT (self, "no active pad while blocking");
-
-  GST_INPUT_SELECTOR_UNLOCK (self);
-
-  return ret;
-}
diff --git a/plugins/elements/gstinputselector.h b/plugins/elements/gstinputselector.h
index 96c680f..3dff175 100644
--- a/plugins/elements/gstinputselector.h
+++ b/plugins/elements/gstinputselector.h
@@ -66,8 +66,8 @@
   GstPad *srcpad;
 
   GstPad *active_sinkpad;
-  guint n_pads;
-  guint padcount;
+  guint n_pads;           /* number of pads */
+  guint padcount;         /* sequence number for pads */
   gboolean sync_streams;
   GstInputSelectorSyncMode sync_mode;
   gboolean cache_buffers;
@@ -76,14 +76,13 @@
 
   GMutex lock;
   GCond cond;
-  gboolean blocked;
+  gboolean eos;
+  gboolean eos_sent;
   gboolean flushing;
 };
 
 struct _GstInputSelectorClass {
   GstElementClass parent_class;
-
-  gint64 (*block)	(GstInputSelector *self);
 };
 
 G_GNUC_INTERNAL GType gst_input_selector_get_type (void);
diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c
index ad9b30d..e328fc5 100644
--- a/plugins/elements/gstmultiqueue.c
+++ b/plugins/elements/gstmultiqueue.c
@@ -350,16 +350,19 @@
       g_param_spec_uint ("max-size-bytes", "Max. size (kB)",
           "Max. amount of data in the queue (bytes, 0=disable)",
           0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_BUFFERS,
       g_param_spec_uint ("max-size-buffers", "Max. size (buffers)",
           "Max. number of buffers in the queue (0=disable)", 0, G_MAXUINT,
           DEFAULT_MAX_SIZE_BUFFERS,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME,
       g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
           "Max. amount of data in the queue (in ns, 0=disable)", 0, G_MAXUINT64,
-          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_EXTRA_SIZE_BYTES,
       g_param_spec_uint ("extra-size-bytes", "Extra Size (kB)",
@@ -389,7 +392,8 @@
   g_object_class_install_property (gobject_class, PROP_USE_BUFFERING,
       g_param_spec_boolean ("use-buffering", "Use buffering",
           "Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds",
-          DEFAULT_USE_BUFFERING, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_USE_BUFFERING, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   /**
    * GstMultiQueue:low-percent
    * 
@@ -581,7 +585,6 @@
 
         GST_MULTI_QUEUE_MUTEX_LOCK (mq);
 
-        mq->buffering = TRUE;
         tmp = mq->queues;
         while (tmp) {
           GstSingleQueue *q = (GstSingleQueue *) tmp->data;
@@ -1205,7 +1208,7 @@
 
 static GstFlowReturn
 gst_single_queue_push_one (GstMultiQueue * mq, GstSingleQueue * sq,
-    GstMiniObject * object)
+    GstMiniObject * object, gboolean * allow_drop)
 {
   GstFlowReturn result = sq->srcresult;
 
@@ -1222,11 +1225,17 @@
     /* Applying the buffer may have made the queue non-full again, unblock it if needed */
     gst_data_queue_limits_changed (sq->queue);
 
-    GST_DEBUG_OBJECT (mq,
-        "SingleQueue %d : Pushing buffer %p with ts %" GST_TIME_FORMAT,
-        sq->id, buffer, GST_TIME_ARGS (timestamp));
-
-    result = gst_pad_push (sq->srcpad, buffer);
+    if (G_UNLIKELY (*allow_drop)) {
+      GST_DEBUG_OBJECT (mq,
+          "SingleQueue %d : Dropping EOS buffer %p with ts %" GST_TIME_FORMAT,
+          sq->id, buffer, GST_TIME_ARGS (timestamp));
+      gst_buffer_unref (buffer);
+    } else {
+      GST_DEBUG_OBJECT (mq,
+          "SingleQueue %d : Pushing buffer %p with ts %" GST_TIME_FORMAT,
+          sq->id, buffer, GST_TIME_ARGS (timestamp));
+      result = gst_pad_push (sq->srcpad, buffer);
+    }
   } else if (GST_IS_EVENT (object)) {
     GstEvent *event;
 
@@ -1235,11 +1244,17 @@
     switch (GST_EVENT_TYPE (event)) {
       case GST_EVENT_EOS:
         result = GST_FLOW_EOS;
+        if (G_UNLIKELY (*allow_drop))
+          *allow_drop = FALSE;
         break;
       case GST_EVENT_SEGMENT:
         apply_segment (mq, sq, event, &sq->src_segment);
         /* Applying the segment may have made the queue non-full again, unblock it if needed */
         gst_data_queue_limits_changed (sq->queue);
+        if (G_UNLIKELY (*allow_drop)) {
+          result = GST_FLOW_OK;
+          *allow_drop = FALSE;
+        }
         break;
       case GST_EVENT_GAP:
         apply_gap (mq, sq, event, &sq->src_segment);
@@ -1250,18 +1265,32 @@
         break;
     }
 
-    GST_DEBUG_OBJECT (mq,
-        "SingleQueue %d : Pushing event %p of type %s",
-        sq->id, event, GST_EVENT_TYPE_NAME (event));
+    if (G_UNLIKELY (*allow_drop)) {
+      GST_DEBUG_OBJECT (mq,
+          "SingleQueue %d : Dropping EOS event %p of type %s",
+          sq->id, event, GST_EVENT_TYPE_NAME (event));
+      gst_event_unref (event);
+    } else {
+      GST_DEBUG_OBJECT (mq,
+          "SingleQueue %d : Pushing event %p of type %s",
+          sq->id, event, GST_EVENT_TYPE_NAME (event));
 
-    gst_pad_push_event (sq->srcpad, event);
+      gst_pad_push_event (sq->srcpad, event);
+    }
   } else if (GST_IS_QUERY (object)) {
     GstQuery *query;
     gboolean res;
 
     query = GST_QUERY_CAST (object);
 
-    res = gst_pad_peer_query (sq->srcpad, query);
+    if (G_UNLIKELY (*allow_drop)) {
+      GST_DEBUG_OBJECT (mq,
+          "SingleQueue %d : Dropping EOS query %p", sq->id, query);
+      gst_query_unref (query);
+      res = FALSE;
+    } else {
+      res = gst_pad_peer_query (sq->srcpad, query);
+    }
 
     GST_MULTI_QUEUE_MUTEX_LOCK (mq);
     sq->last_query = res;
@@ -1350,10 +1379,12 @@
   GstClockTime next_time;
   gboolean is_buffer;
   gboolean do_update_buffering = FALSE;
+  gboolean dropping = FALSE;
 
   sq = (GstSingleQueue *) gst_pad_get_element_private (pad);
   mq = sq->mqueue;
 
+next:
   GST_DEBUG_OBJECT (mq, "SingleQueue %d : trying to pop an object", sq->id);
 
   if (sq->flushing)
@@ -1381,8 +1412,8 @@
 
   /* If we're not-linked, we do some extra work because we might need to
    * wait before pushing. If we're linked but there's a gap in the IDs,
-   * or it's the first loop, or we just passed the previous highid, 
-   * we might need to wake some sleeping pad up, so there's extra work 
+   * or it's the first loop, or we just passed the previous highid,
+   * we might need to wake some sleeping pad up, so there's extra work
    * there too */
   GST_MULTI_QUEUE_MUTEX_LOCK (mq);
   if (sq->srcresult == GST_FLOW_NOT_LINKED
@@ -1481,7 +1512,7 @@
   GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
 
   /* Try to push out the new object */
-  result = gst_single_queue_push_one (mq, sq, object);
+  result = gst_single_queue_push_one (mq, sq, object, &dropping);
   object = NULL;
 
   /* Check if we pushed something already and if this is
@@ -1521,6 +1552,25 @@
 
   if (is_buffer)
     sq->pushed = TRUE;
+
+  /* now hold on a bit;
+   * can not simply throw this result to upstream, because
+   * that might already be onto another segment, so we have to make
+   * sure we are relaying the correct info wrt proper segment */
+  if (result == GST_FLOW_EOS && !dropping &&
+      sq->srcresult != GST_FLOW_NOT_LINKED) {
+    GST_DEBUG_OBJECT (mq, "starting EOS drop on sq %d", sq->id);
+    dropping = TRUE;
+    /* pretend we have not seen EOS yet for upstream's sake */
+    result = sq->srcresult;
+  } else if (dropping && gst_data_queue_is_empty (sq->queue)) {
+    /* queue empty, so stop dropping
+     * we can commit the result we have now,
+     * which is either OK after a segment, or EOS */
+    GST_DEBUG_OBJECT (mq, "committed EOS drop on sq %d", sq->id);
+    dropping = FALSE;
+    result = GST_FLOW_EOS;
+  }
   sq->srcresult = result;
   sq->last_oldid = newid;
 
@@ -1530,6 +1580,9 @@
   GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
   gst_multi_queue_post_buffering (mq);
 
+  if (dropping)
+    goto next;
+
   if (result != GST_FLOW_OK && result != GST_FLOW_NOT_LINKED
       && result != GST_FLOW_EOS)
     goto out_flushing;
@@ -1803,6 +1856,11 @@
     case GST_EVENT_SEGMENT:
       apply_segment (mq, sq, sref, &sq->sink_segment);
       gst_event_unref (sref);
+      /* a new segment allows us to accept more buffers if we got EOS
+       * from downstream */
+      GST_MULTI_QUEUE_MUTEX_LOCK (mq);
+      sq->srcresult = GST_FLOW_OK;
+      GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
       break;
     case GST_EVENT_GAP:
       apply_gap (mq, sq, sref, &sq->sink_segment);
@@ -2102,7 +2160,6 @@
   GList *tmp;
   GstDataQueueSize size;
   gboolean filled = TRUE;
-  gboolean all_not_linked = TRUE;
   gboolean empty_found = FALSE;
 
   gst_data_queue_get_level (sq->queue, &size);
@@ -2121,7 +2178,7 @@
     goto done;
   }
 
-  /* Search for empty or unlinked queues */
+  /* Search for empty queues */
   for (tmp = mq->queues; tmp; tmp = g_list_next (tmp)) {
     GstSingleQueue *oq = (GstSingleQueue *) tmp->data;
 
@@ -2133,7 +2190,6 @@
       continue;
     }
 
-    all_not_linked = FALSE;
     GST_LOG_OBJECT (mq, "Checking Queue %d", oq->id);
     if (gst_data_queue_is_empty (oq->queue)) {
       GST_LOG_OBJECT (mq, "Queue %d is empty", oq->id);
@@ -2142,16 +2198,9 @@
     }
   }
 
-  if (!mq->queues || !mq->queues->next)
-    all_not_linked = FALSE;
-
   /* if hard limits are not reached then we allow one more buffer in the full
-   * queue, but only if any of the other singelqueues are empty or all are
-   * not linked */
-  if (all_not_linked || empty_found) {
-    if (all_not_linked) {
-      GST_LOG_OBJECT (mq, "All other queues are not linked");
-    }
+   * queue, but only if any of the other singelqueues are empty */
+  if (empty_found) {
     if (IS_FILLED (sq, visible, size.visible)) {
       sq->max_size.visible = size.visible + 1;
       GST_DEBUG_OBJECT (mq,
diff --git a/plugins/elements/gstoutputselector.c b/plugins/elements/gstoutputselector.c
index 61e49a6..beb4c70 100644
--- a/plugins/elements/gstoutputselector.c
+++ b/plugins/elements/gstoutputselector.c
@@ -52,7 +52,7 @@
 gst_output_selector_pad_negotiation_mode_get_type (void)
 {
   static GType pad_negotiation_mode_type = 0;
-  static GEnumValue pad_negotiation_modes[] = {
+  static const GEnumValue pad_negotiation_modes[] = {
     {GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_NONE, "None", "none"},
     {GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ALL, "All", "all"},
     {GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ACTIVE, "Active", "active"},
@@ -119,7 +119,8 @@
   g_object_class_install_property (gobject_class, PROP_ACTIVE_PAD,
       g_param_spec_object ("active-pad", "Active pad",
           "Currently active src pad", GST_TYPE_PAD,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_RESEND_LATEST,
       g_param_spec_boolean ("resend-latest", "Resend latest buffer",
           "Resend latest buffer after a switch to a new pad", FALSE,
@@ -594,9 +595,16 @@
       }
       break;
     }
+    case GST_QUERY_DRAIN:
+      if (sel->latest_buffer) {
+        gst_buffer_unref (sel->latest_buffer);
+        sel->latest_buffer = NULL;
+      }
+      /* fall through */
     default:
       res = gst_pad_query_default (pad, parent, query);
       break;
   }
+
   return res;
 }
diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c
index f3e9297..1d55522 100644
--- a/plugins/elements/gstqueue.c
+++ b/plugins/elements/gstqueue.c
@@ -195,6 +195,8 @@
 
 static GstFlowReturn gst_queue_chain (GstPad * pad, GstObject * parent,
     GstBuffer * buffer);
+static GstFlowReturn gst_queue_chain_list (GstPad * pad, GstObject * parent,
+    GstBufferList * buffer_list);
 static GstFlowReturn gst_queue_push_one (GstQueue * queue);
 static void gst_queue_loop (GstPad * pad);
 
@@ -221,9 +223,9 @@
 
 typedef struct
 {
-  gboolean is_query;
   GstMiniObject *item;
   gsize size;
+  gboolean is_query;
 } GstQueueItem;
 
 #define GST_TYPE_QUEUE_LEAKY (queue_leaky_get_type ())
@@ -326,35 +328,46 @@
       g_param_spec_uint ("max-size-bytes", "Max. size (kB)",
           "Max. amount of data in the queue (bytes, 0=disable)",
           0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_BUFFERS,
       g_param_spec_uint ("max-size-buffers", "Max. size (buffers)",
           "Max. number of buffers in the queue (0=disable)", 0, G_MAXUINT,
           DEFAULT_MAX_SIZE_BUFFERS,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME,
       g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
           "Max. amount of data in the queue (in ns, 0=disable)", 0, G_MAXUINT64,
-          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_MAX_SIZE_TIME,
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_MIN_THRESHOLD_BYTES,
       g_param_spec_uint ("min-threshold-bytes", "Min. threshold (kB)",
           "Min. amount of data in the queue to allow reading (bytes, 0=disable)",
-          0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          0, G_MAXUINT, 0,
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MIN_THRESHOLD_BUFFERS,
       g_param_spec_uint ("min-threshold-buffers", "Min. threshold (buffers)",
-          "Min. number of buffers in the queue to allow reading (0=disable)",
-          0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          "Min. number of buffers in the queue to allow reading (0=disable)", 0,
+          G_MAXUINT, 0,
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MIN_THRESHOLD_TIME,
       g_param_spec_uint64 ("min-threshold-time", "Min. threshold (ns)",
           "Min. amount of data in the queue to allow reading (in ns, 0=disable)",
-          0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          0, G_MAXUINT64, 0,
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_LEAKY,
       g_param_spec_enum ("leaky", "Leaky",
           "Where the queue leaks, if at all",
           GST_TYPE_QUEUE_LEAKY, GST_QUEUE_NO_LEAK,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   /**
    * GstQueue:silent
@@ -365,7 +378,8 @@
   g_object_class_install_property (gobject_class, PROP_SILENT,
       g_param_spec_boolean ("silent", "Silent",
           "Don't emit queue signals", FALSE,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   /**
    * GstQueue:flush-on-eos
@@ -385,7 +399,8 @@
   g_object_class_install_property (gobject_class, PROP_FLUSH_ON_EOS,
       g_param_spec_boolean ("flush-on-eos", "Flush on EOS",
           "Discard all data in the queue when an EOS event is received", FALSE,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   gobject_class->finalize = gst_queue_finalize;
 
@@ -404,6 +419,7 @@
   GST_DEBUG_REGISTER_FUNCPTR (gst_queue_handle_src_event);
   GST_DEBUG_REGISTER_FUNCPTR (gst_queue_handle_src_query);
   GST_DEBUG_REGISTER_FUNCPTR (gst_queue_chain);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_chain_list);
 }
 
 static void
@@ -412,6 +428,7 @@
   queue->sinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink");
 
   gst_pad_set_chain_function (queue->sinkpad, gst_queue_chain);
+  gst_pad_set_chain_list_function (queue->sinkpad, gst_queue_chain_list);
   gst_pad_set_activatemode_function (queue->sinkpad,
       gst_queue_sink_activate_mode);
   gst_pad_set_event_function (queue->sinkpad, gst_queue_handle_sink_event);
@@ -446,7 +463,9 @@
   g_cond_init (&queue->item_del);
   g_cond_init (&queue->query_handled);
 
-  queue->queue = gst_queue_array_new (DEFAULT_MAX_SIZE_BUFFERS * 3 / 2);
+  queue->queue =
+      gst_queue_array_new_for_struct (sizeof (GstQueueItem),
+      DEFAULT_MAX_SIZE_BUFFERS * 3 / 2);
 
   queue->sinktime = GST_CLOCK_TIME_NONE;
   queue->srctime = GST_CLOCK_TIME_NONE;
@@ -465,15 +484,14 @@
 gst_queue_finalize (GObject * object)
 {
   GstQueue *queue = GST_QUEUE (object);
+  GstQueueItem *qitem;
 
   GST_DEBUG_OBJECT (queue, "finalizing queue");
 
-  while (!gst_queue_array_is_empty (queue->queue)) {
-    GstQueueItem *qitem = gst_queue_array_pop_head (queue->queue);
+  while ((qitem = gst_queue_array_pop_head_struct (queue->queue))) {
     /* FIXME: if it's a query, shouldn't we unref that too? */
     if (!qitem->is_query)
       gst_mini_object_unref (qitem->item);
-    g_slice_free (GstQueueItem, qitem);
   }
   gst_queue_array_free (queue->queue);
 
@@ -579,7 +597,7 @@
 /* take a buffer and update segment, updating the time level of the queue. */
 static void
 apply_buffer (GstQueue * queue, GstBuffer * buffer, GstSegment * segment,
-    gboolean with_duration, gboolean sink)
+    gboolean sink)
 {
   GstClockTime duration, timestamp;
 
@@ -592,7 +610,7 @@
     timestamp = segment->position;
 
   /* add duration */
-  if (with_duration && duration != GST_CLOCK_TIME_NONE)
+  if (duration != GST_CLOCK_TIME_NONE)
     timestamp += duration;
 
   GST_LOG_OBJECT (queue, "position updated to %" GST_TIME_FORMAT,
@@ -609,12 +627,59 @@
   update_time_level (queue);
 }
 
+static gboolean
+buffer_list_apply_time (GstBuffer ** buf, guint idx, gpointer user_data)
+{
+  GstClockTime *timestamp = user_data;
+
+  GST_TRACE ("buffer %u has ts %" GST_TIME_FORMAT
+      " duration %" GST_TIME_FORMAT, idx,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (*buf)),
+      GST_TIME_ARGS (GST_BUFFER_DURATION (*buf)));
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (*buf))
+    *timestamp = GST_BUFFER_TIMESTAMP (*buf);
+
+  if (GST_BUFFER_DURATION_IS_VALID (*buf))
+    *timestamp += GST_BUFFER_DURATION (*buf);
+
+  GST_TRACE ("ts now %" GST_TIME_FORMAT, GST_TIME_ARGS (*timestamp));
+
+  return TRUE;
+}
+
+/* take a buffer list and update segment, updating the time level of the queue */
+static void
+apply_buffer_list (GstQueue * queue, GstBufferList * buffer_list,
+    GstSegment * segment, gboolean sink)
+{
+  GstClockTime timestamp;
+
+  /* if no timestamp is set, assume it's continuous with the previous time */
+  timestamp = segment->position;
+
+  gst_buffer_list_foreach (buffer_list, buffer_list_apply_time, &timestamp);
+
+  GST_DEBUG_OBJECT (queue, "position updated to %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (timestamp));
+
+  segment->position = timestamp;
+
+  if (sink)
+    queue->sink_tainted = TRUE;
+  else
+    queue->src_tainted = TRUE;
+
+  /* calc diff with other end */
+  update_time_level (queue);
+}
+
 static void
 gst_queue_locked_flush (GstQueue * queue, gboolean full)
 {
-  while (!gst_queue_array_is_empty (queue->queue)) {
-    GstQueueItem *qitem = gst_queue_array_pop_head (queue->queue);
+  GstQueueItem *qitem;
 
+  while ((qitem = gst_queue_array_pop_head_struct (queue->queue))) {
     /* Then lose another reference because we are supposed to destroy that
        data when flushing */
     if (!full && !qitem->is_query && GST_IS_EVENT (qitem->item)
@@ -625,7 +690,7 @@
     }
     if (!qitem->is_query)
       gst_mini_object_unref (qitem->item);
-    g_slice_free (GstQueueItem, qitem);
+    memset (qitem, 0, sizeof (GstQueueItem));
   }
   queue->last_query = FALSE;
   g_cond_signal (&queue->query_handled);
@@ -648,27 +713,59 @@
 static inline void
 gst_queue_locked_enqueue_buffer (GstQueue * queue, gpointer item)
 {
-  GstQueueItem *qitem;
+  GstQueueItem qitem;
   GstBuffer *buffer = GST_BUFFER_CAST (item);
   gsize bsize = gst_buffer_get_size (buffer);
 
   /* add buffer to the statistics */
   queue->cur_level.buffers++;
   queue->cur_level.bytes += bsize;
-  apply_buffer (queue, buffer, &queue->sink_segment, TRUE, TRUE);
+  apply_buffer (queue, buffer, &queue->sink_segment, TRUE);
 
-  qitem = g_slice_new (GstQueueItem);
-  qitem->item = item;
-  qitem->is_query = FALSE;
-  qitem->size = bsize;
-  gst_queue_array_push_tail (queue->queue, qitem);
+  qitem.item = item;
+  qitem.is_query = FALSE;
+  qitem.size = bsize;
+  gst_queue_array_push_tail_struct (queue->queue, &qitem);
+  GST_QUEUE_SIGNAL_ADD (queue);
+}
+
+static gboolean
+buffer_list_calc_size (GstBuffer ** buf, guint idx, gpointer data)
+{
+  guint *p_size = data;
+  gsize buf_size;
+
+  buf_size = gst_buffer_get_size (*buf);
+  GST_TRACE ("buffer %u in has size %" G_GSIZE_FORMAT, idx, buf_size);
+  *p_size += buf_size;
+  return TRUE;
+}
+
+static inline void
+gst_queue_locked_enqueue_buffer_list (GstQueue * queue, gpointer item)
+{
+  GstQueueItem qitem;
+  GstBufferList *buffer_list = GST_BUFFER_LIST_CAST (item);
+  gsize bsize = 0;
+
+  gst_buffer_list_foreach (buffer_list, buffer_list_calc_size, &bsize);
+
+  /* add buffer to the statistics */
+  queue->cur_level.buffers += gst_buffer_list_length (buffer_list);
+  queue->cur_level.bytes += bsize;
+  apply_buffer_list (queue, buffer_list, &queue->sink_segment, TRUE);
+
+  qitem.item = item;
+  qitem.is_query = FALSE;
+  qitem.size = bsize;
+  gst_queue_array_push_tail_struct (queue->queue, &qitem);
   GST_QUEUE_SIGNAL_ADD (queue);
 }
 
 static inline void
 gst_queue_locked_enqueue_event (GstQueue * queue, gpointer item)
 {
-  GstQueueItem *qitem;
+  GstQueueItem qitem;
   GstEvent *event = GST_EVENT_CAST (item);
 
   switch (GST_EVENT_TYPE (event)) {
@@ -702,10 +799,10 @@
       break;
   }
 
-  qitem = g_slice_new (GstQueueItem);
-  qitem->item = item;
-  qitem->is_query = FALSE;
-  gst_queue_array_push_tail (queue->queue, qitem);
+  qitem.item = item;
+  qitem.is_query = FALSE;
+  qitem.size = 0;
+  gst_queue_array_push_tail_struct (queue->queue, &qitem);
   GST_QUEUE_SIGNAL_ADD (queue);
 }
 
@@ -717,13 +814,12 @@
   GstMiniObject *item;
   gsize bufsize;
 
-  qitem = gst_queue_array_pop_head (queue->queue);
+  qitem = gst_queue_array_pop_head_struct (queue->queue);
   if (qitem == NULL)
     goto no_item;
 
   item = qitem->item;
   bufsize = qitem->size;
-  g_slice_free (GstQueueItem, qitem);
 
   if (GST_IS_BUFFER (item)) {
     GstBuffer *buffer = GST_BUFFER_CAST (item);
@@ -733,12 +829,24 @@
 
     queue->cur_level.buffers--;
     queue->cur_level.bytes -= bufsize;
-    apply_buffer (queue, buffer, &queue->src_segment, TRUE, FALSE);
+    apply_buffer (queue, buffer, &queue->src_segment, FALSE);
 
     /* if the queue is empty now, update the other side */
     if (queue->cur_level.buffers == 0)
       queue->cur_level.time = 0;
+  } else if (GST_IS_BUFFER_LIST (item)) {
+    GstBufferList *buffer_list = GST_BUFFER_LIST_CAST (item);
 
+    GST_CAT_LOG_OBJECT (queue_dataflow, queue,
+        "retrieved buffer list %p from queue", buffer_list);
+
+    queue->cur_level.buffers -= gst_buffer_list_length (buffer_list);
+    queue->cur_level.bytes -= bufsize;
+    apply_buffer_list (queue, buffer_list, &queue->src_segment, FALSE);
+
+    /* if the queue is empty now, update the other side */
+    if (queue->cur_level.buffers == 0)
+      queue->cur_level.time = 0;
   } else if (GST_IS_EVENT (item)) {
     GstEvent *event = GST_EVENT_CAST (item);
 
@@ -904,15 +1012,15 @@
   switch (GST_QUERY_TYPE (query)) {
     default:
       if (G_UNLIKELY (GST_QUERY_IS_SERIALIZED (query))) {
-        GstQueueItem *qitem;
+        GstQueueItem qitem;
 
         GST_QUEUE_MUTEX_LOCK_CHECK (queue, out_flushing);
         GST_LOG_OBJECT (queue, "queuing query %p (%s)", query,
             GST_QUERY_TYPE_NAME (query));
-        qitem = g_slice_new (GstQueueItem);
-        qitem->item = GST_MINI_OBJECT_CAST (query);
-        qitem->is_query = TRUE;
-        gst_queue_array_push_tail (queue->queue, qitem);
+        qitem.item = GST_MINI_OBJECT_CAST (query);
+        qitem.is_query = TRUE;
+        qitem.size = 0;
+        gst_queue_array_push_tail_struct (queue->queue, &qitem);
         GST_QUEUE_SIGNAL_ADD (queue);
         g_cond_wait (&queue->query_handled, &queue->qlock);
         if (queue->srcresult != GST_FLOW_OK)
@@ -940,14 +1048,15 @@
 {
   GstQueueItem *head;
 
-  if (gst_queue_array_is_empty (queue->queue))
+  head = gst_queue_array_peek_head_struct (queue->queue);
+
+  if (head == NULL)
     return TRUE;
 
   /* Only consider the queue empty if the minimum thresholds
    * are not reached and data is at the queue head. Otherwise
    * we would block forever on serialized queries.
    */
-  head = gst_queue_array_peek_head (queue->queue);
   if (!GST_IS_BUFFER (head->item) && !GST_IS_BUFFER_LIST (head->item))
     return FALSE;
 
@@ -1001,11 +1110,27 @@
   }
 }
 
+static gboolean
+discont_first_buffer (GstBuffer ** buffer, guint i, gpointer user_data)
+{
+  GstQueue *queue = user_data;
+  GstBuffer *subbuffer = gst_buffer_make_writable (*buffer);
+
+  if (subbuffer) {
+    *buffer = subbuffer;
+    GST_BUFFER_FLAG_SET (*buffer, GST_BUFFER_FLAG_DISCONT);
+  } else {
+    GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+  }
+
+  return FALSE;
+}
+
 static GstFlowReturn
-gst_queue_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+gst_queue_chain_buffer_or_list (GstPad * pad, GstObject * parent,
+    GstMiniObject * obj, gboolean is_list)
 {
   GstQueue *queue;
-  GstClockTime duration, timestamp;
 
   queue = GST_QUEUE_CAST (parent);
 
@@ -1017,13 +1142,22 @@
   if (queue->unexpected)
     goto out_unexpected;
 
-  timestamp = GST_BUFFER_TIMESTAMP (buffer);
-  duration = GST_BUFFER_DURATION (buffer);
+  if (!is_list) {
+    GstClockTime duration, timestamp;
+    GstBuffer *buffer = GST_BUFFER_CAST (obj);
 
-  GST_CAT_LOG_OBJECT (queue_dataflow, queue, "received buffer %p of size %"
-      G_GSIZE_FORMAT ", time %" GST_TIME_FORMAT ", duration %"
-      GST_TIME_FORMAT, buffer, gst_buffer_get_size (buffer),
-      GST_TIME_ARGS (timestamp), GST_TIME_ARGS (duration));
+    timestamp = GST_BUFFER_TIMESTAMP (buffer);
+    duration = GST_BUFFER_DURATION (buffer);
+
+    GST_CAT_LOG_OBJECT (queue_dataflow, queue, "received buffer %p of size %"
+        G_GSIZE_FORMAT ", time %" GST_TIME_FORMAT ", duration %"
+        GST_TIME_FORMAT, buffer, gst_buffer_get_size (buffer),
+        GST_TIME_ARGS (timestamp), GST_TIME_ARGS (duration));
+  } else {
+    GST_CAT_LOG_OBJECT (queue_dataflow, queue,
+        "received buffer list %p with %u buffers", obj,
+        gst_buffer_list_length (GST_BUFFER_LIST_CAST (obj)));
+  }
 
   /* We make space available if we're "full" according to whatever
    * the user defined as "full". Note that this only applies to buffers.
@@ -1078,19 +1212,33 @@
   }
 
   if (queue->tail_needs_discont) {
-    GstBuffer *subbuffer = gst_buffer_make_writable (buffer);
+    if (!is_list) {
+      GstBuffer *buffer = GST_BUFFER_CAST (obj);
+      GstBuffer *subbuffer = gst_buffer_make_writable (buffer);
 
-    if (subbuffer) {
-      buffer = subbuffer;
-      GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+      if (subbuffer) {
+        buffer = subbuffer;
+        GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+      } else {
+        GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+      }
+
+      obj = GST_MINI_OBJECT_CAST (buffer);
     } else {
-      GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+      GstBufferList *buffer_list = GST_BUFFER_LIST_CAST (obj);
+
+      buffer_list = gst_buffer_list_make_writable (buffer_list);
+      gst_buffer_list_foreach (buffer_list, discont_first_buffer, queue);
+      obj = GST_MINI_OBJECT_CAST (buffer_list);
     }
     queue->tail_needs_discont = FALSE;
   }
 
   /* put buffer in queue now */
-  gst_queue_locked_enqueue_buffer (queue, buffer);
+  if (is_list)
+    gst_queue_locked_enqueue_buffer_list (queue, obj);
+  else
+    gst_queue_locked_enqueue_buffer (queue, obj);
   GST_QUEUE_MUTEX_UNLOCK (queue);
 
   return GST_FLOW_OK;
@@ -1100,7 +1248,7 @@
   {
     GST_QUEUE_MUTEX_UNLOCK (queue);
 
-    gst_buffer_unref (buffer);
+    gst_mini_object_unref (obj);
 
     return GST_FLOW_OK;
   }
@@ -1111,7 +1259,7 @@
     GST_CAT_LOG_OBJECT (queue_dataflow, queue,
         "exit because task paused, reason: %s", gst_flow_get_name (ret));
     GST_QUEUE_MUTEX_UNLOCK (queue);
-    gst_buffer_unref (buffer);
+    gst_mini_object_unref (obj);
 
     return ret;
   }
@@ -1120,7 +1268,7 @@
     GST_CAT_LOG_OBJECT (queue_dataflow, queue, "exit because we received EOS");
     GST_QUEUE_MUTEX_UNLOCK (queue);
 
-    gst_buffer_unref (buffer);
+    gst_mini_object_unref (obj);
 
     return GST_FLOW_EOS;
   }
@@ -1129,12 +1277,27 @@
     GST_CAT_LOG_OBJECT (queue_dataflow, queue, "exit because we received EOS");
     GST_QUEUE_MUTEX_UNLOCK (queue);
 
-    gst_buffer_unref (buffer);
+    gst_mini_object_unref (obj);
 
     return GST_FLOW_EOS;
   }
 }
 
+static GstFlowReturn
+gst_queue_chain_list (GstPad * pad, GstObject * parent,
+    GstBufferList * buffer_list)
+{
+  return gst_queue_chain_buffer_or_list (pad, parent,
+      GST_MINI_OBJECT_CAST (buffer_list), TRUE);
+}
+
+static GstFlowReturn
+gst_queue_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  return gst_queue_chain_buffer_or_list (pad, parent,
+      GST_MINI_OBJECT_CAST (buffer), FALSE);
+}
+
 /* dequeue an item from the queue an push it downstream. This functions returns
  * the result of the push. */
 static GstFlowReturn
@@ -1142,31 +1305,49 @@
 {
   GstFlowReturn result = queue->srcresult;
   GstMiniObject *data;
+  gboolean is_list;
 
   data = gst_queue_locked_dequeue (queue);
   if (data == NULL)
     goto no_item;
 
 next:
-  if (GST_IS_BUFFER (data)) {
-    GstBuffer *buffer;
+  is_list = GST_IS_BUFFER_LIST (data);
 
-    buffer = GST_BUFFER_CAST (data);
+  if (GST_IS_BUFFER (data) || is_list) {
+    if (!is_list) {
+      GstBuffer *buffer;
 
-    if (queue->head_needs_discont) {
-      GstBuffer *subbuffer = gst_buffer_make_writable (buffer);
+      buffer = GST_BUFFER_CAST (data);
 
-      if (subbuffer) {
-        buffer = subbuffer;
-        GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
-      } else {
-        GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+      if (queue->head_needs_discont) {
+        GstBuffer *subbuffer = gst_buffer_make_writable (buffer);
+
+        if (subbuffer) {
+          buffer = subbuffer;
+          GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+        } else {
+          GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+        }
+        queue->head_needs_discont = FALSE;
       }
-      queue->head_needs_discont = FALSE;
-    }
 
-    GST_QUEUE_MUTEX_UNLOCK (queue);
-    result = gst_pad_push (queue->srcpad, buffer);
+      GST_QUEUE_MUTEX_UNLOCK (queue);
+      result = gst_pad_push (queue->srcpad, buffer);
+    } else {
+      GstBufferList *buffer_list;
+
+      buffer_list = GST_BUFFER_LIST_CAST (data);
+
+      if (queue->head_needs_discont) {
+        buffer_list = gst_buffer_list_make_writable (buffer_list);
+        gst_buffer_list_foreach (buffer_list, discont_first_buffer, queue);
+        queue->head_needs_discont = FALSE;
+      }
+
+      GST_QUEUE_MUTEX_UNLOCK (queue);
+      result = gst_pad_push_list (queue->srcpad, buffer_list);
+    }
 
     /* need to check for srcresult here as well */
     GST_QUEUE_MUTEX_LOCK_CHECK (queue, out_flushing);
@@ -1182,6 +1363,10 @@
           GST_CAT_LOG_OBJECT (queue_dataflow, queue,
               "dropping EOS buffer %p", data);
           gst_buffer_unref (GST_BUFFER_CAST (data));
+        } else if (GST_IS_BUFFER_LIST (data)) {
+          GST_CAT_LOG_OBJECT (queue_dataflow, queue,
+              "dropping EOS buffer list %p", data);
+          gst_buffer_list_unref (GST_BUFFER_LIST_CAST (data));
         } else if (GST_IS_EVENT (data)) {
           GstEvent *event = GST_EVENT_CAST (data);
           GstEventType type = GST_EVENT_TYPE (event);
@@ -1313,10 +1498,13 @@
     gst_pad_pause_task (queue->srcpad);
     GST_CAT_LOG_OBJECT (queue_dataflow, queue,
         "pause task, reason:  %s", gst_flow_get_name (ret));
-    if (ret == GST_FLOW_FLUSHING)
+    if (ret == GST_FLOW_FLUSHING) {
       gst_queue_locked_flush (queue, FALSE);
-    else
+    } else {
       GST_QUEUE_SIGNAL_DEL (queue);
+      queue->last_query = FALSE;
+      g_cond_signal (&queue->query_handled);
+    }
     GST_QUEUE_MUTEX_UNLOCK (queue);
     /* let app know about us giving up if upstream is not expected to do so */
     /* EOS is already taken care of elsewhere */
@@ -1422,13 +1610,17 @@
        * limit, the best thing we can do is to return an infinite delay. In
        * reality a better estimate would be the byte/buffer rate but that is not
        * possible right now. */
-      if (queue->max_size.time > 0 && max != -1)
+      /* TODO: Use CONVERT query? */
+      if (queue->max_size.time > 0 && max != -1
+          && queue->leaky == GST_QUEUE_NO_LEAK)
         max += queue->max_size.time;
+      else if (queue->max_size.time > 0 && queue->leaky != GST_QUEUE_NO_LEAK)
+        max = MIN (queue->max_size.time, max);
       else
         max = -1;
 
       /* adjust for min-threshold */
-      if (queue->min_threshold.time > 0 && min != -1)
+      if (queue->min_threshold.time > 0)
         min += queue->min_threshold.time;
 
       gst_query_set_latency (query, live, min, max);
diff --git a/plugins/elements/gstqueue2.c b/plugins/elements/gstqueue2.c
index e372388..656066e 100644
--- a/plugins/elements/gstqueue2.c
+++ b/plugins/elements/gstqueue2.c
@@ -310,21 +310,25 @@
       g_param_spec_uint ("max-size-bytes", "Max. size (kB)",
           "Max. amount of data in the queue (bytes, 0=disable)",
           0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_BUFFERS,
       g_param_spec_uint ("max-size-buffers", "Max. size (buffers)",
           "Max. number of buffers in the queue (0=disable)", 0, G_MAXUINT,
           DEFAULT_MAX_SIZE_BUFFERS,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME,
       g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
           "Max. amount of data in the queue (in ns, 0=disable)", 0, G_MAXUINT64,
-          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_USE_BUFFERING,
       g_param_spec_boolean ("use-buffering", "Use buffering",
           "Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds",
-          DEFAULT_USE_BUFFERING, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_USE_BUFFERING, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_USE_RATE_ESTIMATE,
       g_param_spec_boolean ("use-rate-estimate", "Use Rate Estimate",
           "Estimate the bitrate of the stream to calculate time level",
@@ -2025,7 +2029,7 @@
 
     /* add buffer to the statistics */
     if (QUEUE_IS_USING_QUEUE (queue)) {
-      queue->cur_level.buffers++;
+      queue->cur_level.buffers += gst_buffer_list_length (buffer_list);
       queue->cur_level.bytes += size;
     }
     queue->bytes_in += size;
@@ -2218,7 +2222,7 @@
         "retrieved buffer list %p from queue", buffer_list);
 
     if (QUEUE_IS_USING_QUEUE (queue)) {
-      queue->cur_level.buffers--;
+      queue->cur_level.buffers -= gst_buffer_list_length (buffer_list);
       queue->cur_level.bytes -= size;
     }
     queue->bytes_out += size;
@@ -2808,6 +2812,13 @@
     GstFlowReturn ret = queue->srcresult;
 
     gst_pad_pause_task (queue->srcpad);
+    if (ret == GST_FLOW_FLUSHING) {
+      gst_queue2_locked_flush (queue, FALSE, FALSE);
+    } else {
+      GST_QUEUE2_SIGNAL_DEL (queue);
+      queue->last_query = FALSE;
+      g_cond_signal (&queue->query_handled);
+    }
     GST_QUEUE2_MUTEX_UNLOCK (queue);
     GST_CAT_LOG_OBJECT (queue_dataflow, queue,
         "pause task, reason:  %s", gst_flow_get_name (queue->srcresult));
@@ -3116,7 +3127,13 @@
   if (gst_pad_peer_query_duration (queue->sinkpad, GST_FORMAT_BYTES,
           &upstream_size)) {
     GST_INFO_OBJECT (queue, "upstream size: %" G_GINT64_FORMAT, upstream_size);
-    queue->upstream_size = upstream_size;
+
+    /* upstream_size can be negative but queue->upstream_size is unsigned.
+     * Prevent setting negative values to it (the query can return -1) */
+    if (upstream_size >= 0)
+      queue->upstream_size = upstream_size;
+    else
+      queue->upstream_size = 0;
   }
 }
 
diff --git a/plugins/elements/gstsparsefile.c b/plugins/elements/gstsparsefile.c
index fb9b26c..b8a0577 100644
--- a/plugins/elements/gstsparsefile.c
+++ b/plugins/elements/gstsparsefile.c
@@ -343,13 +343,12 @@
         goto error;
     }
     res = fread (data, 1, count, file->file);
+    if (G_UNLIKELY (res < count))
+      goto error;
   }
 
   file->current_pos = offset + res;
 
-  if (G_UNLIKELY (res < count))
-    goto error;
-
   if (remaining)
     *remaining = range->stop - file->current_pos;
 
diff --git a/plugins/elements/gststreamiddemux.c b/plugins/elements/gststreamiddemux.c
new file mode 100644
index 0000000..4ea2f80
--- /dev/null
+++ b/plugins/elements/gststreamiddemux.c
@@ -0,0 +1,412 @@
+/* GStreamer streamiddemux element
+ *
+ * Copyright 2013 LGE Corporation.
+ *  @author: Hoonhee Lee <hoonhee.lee@lge.com>
+ *  @author: Jeongseok Kim <jeongseok.kim@lge.com>
+ *  @author: Wonchul Lee <wonchul86.lee@lge.com>
+ *
+ * gststreamiddemux.c: Simple stream-id-demultiplexer element
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+/**
+ * SECTION:element-streamiddemux
+ *
+ * The basic concept was started from de-funneling element which restores one
+ * serialized stream via #GstFunnel to its original state. #GstStreamidDemux
+ * classifies each stream base on stream ids.
+ *
+ * The stream id demux always takes one input and checks how many streams
+ * are contained in a stream by STREAM_START event. Likewise #GstFunnel,
+ * #GstStreamidDemux does not synchronize the different output streams.
+ *
+ * #GstStreamidDemux:active-pad provides information about which output pad
+ * is activated at the moment.
+ *
+ * @see_also: #GstFunnel, #gst_event_new_stream_start
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include "gststreamiddemux.h"
+
+GST_DEBUG_CATEGORY_STATIC (streamid_demux_debug);
+#define GST_CAT_DEFAULT streamid_demux_debug
+
+enum
+{
+  PROP_0,
+  PROP_ACTIVE_PAD,
+  PROP_LAST
+};
+
+static GstStaticPadTemplate gst_streamid_demux_sink_factory =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate gst_streamid_demux_src_factory =
+GST_STATIC_PAD_TEMPLATE ("src_%u",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+#define _do_init \
+GST_DEBUG_CATEGORY_INIT (streamid_demux_debug, \
+        "streamiddemux", 0, "Streamid demuxer");
+#define gst_streamid_demux_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstStreamidDemux, gst_streamid_demux,
+    GST_TYPE_ELEMENT, _do_init);
+
+static void gst_streamid_demux_dispose (GObject * object);
+static void gst_streamid_demux_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static GstFlowReturn gst_streamid_demux_chain (GstPad * pad,
+    GstObject * parent, GstBuffer * buf);
+static gboolean gst_streamid_demux_event (GstPad * pad, GstObject * parent,
+    GstEvent * event);
+static GstStateChangeReturn gst_streamid_demux_change_state (GstElement *
+    element, GstStateChange transition);
+static GstPad *gst_streamid_demux_get_srcpad_by_stream_id (GstStreamidDemux *
+    demux, const gchar * stream_id);
+static gboolean gst_streamid_demux_srcpad_create (GstStreamidDemux * demux,
+    GstPad * pad, const gchar * stream_id);
+static void gst_streamid_demux_reset (GstStreamidDemux * demux);
+static void gst_streamid_demux_release_srcpad (const GValue * item,
+    GstStreamidDemux * demux);
+
+static void
+gst_streamid_demux_class_init (GstStreamidDemuxClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+  gobject_class->get_property = gst_streamid_demux_get_property;
+  gobject_class->dispose = gst_streamid_demux_dispose;
+
+  g_object_class_install_property (gobject_class, PROP_ACTIVE_PAD,
+      g_param_spec_object ("active-pad", "Active pad",
+          "The currently active src pad", GST_TYPE_PAD,
+          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_set_static_metadata (gstelement_class, "Streamid Demux",
+      "Generic", "1-to-N output stream by stream-id",
+      "HoonHee Lee <hoonhee.lee@lge.com>");
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_streamid_demux_sink_factory));
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_streamid_demux_src_factory));
+
+  gstelement_class->change_state = gst_streamid_demux_change_state;
+}
+
+static void
+gst_streamid_demux_init (GstStreamidDemux * demux)
+{
+  demux->sinkpad =
+      gst_pad_new_from_static_template (&gst_streamid_demux_sink_factory,
+      "sink");
+  gst_pad_set_chain_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_streamid_demux_chain));
+  gst_pad_set_event_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_streamid_demux_event));
+
+  gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
+
+  /* srcpad management */
+  demux->active_srcpad = NULL;
+  demux->nb_srcpads = 0;
+
+  /* initialize hash table for srcpad */
+  demux->stream_id_pairs =
+      g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free,
+      (GDestroyNotify) gst_object_unref);
+}
+
+static void
+gst_streamid_demux_dispose (GObject * object)
+{
+  GstStreamidDemux *demux = GST_STREAMID_DEMUX (object);
+
+  gst_streamid_demux_reset (demux);
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_streamid_demux_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstStreamidDemux *demux = GST_STREAMID_DEMUX (object);
+
+  switch (prop_id) {
+    case PROP_ACTIVE_PAD:
+      GST_OBJECT_LOCK (demux);
+      g_value_set_object (value, demux->active_srcpad);
+      GST_OBJECT_UNLOCK (demux);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static gboolean
+forward_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data)
+{
+  GstPad *srcpad = GST_PAD_CAST (user_data);
+
+  gst_pad_push_event (srcpad, gst_event_ref (*event));
+
+  return TRUE;
+}
+
+static gboolean
+gst_streamid_demux_srcpad_create (GstStreamidDemux * demux, GstPad * pad,
+    const gchar * stream_id)
+{
+  gchar *padname = NULL;
+  GstPad *srcpad = NULL;
+  GstPadTemplate *pad_tmpl = NULL;
+
+  padname = g_strdup_printf ("src_%u", demux->nb_srcpads++);
+  pad_tmpl = gst_static_pad_template_get (&gst_streamid_demux_src_factory);
+
+  GST_LOG_OBJECT (demux, "generating a srcpad:%s", padname);
+  srcpad = gst_pad_new_from_template (pad_tmpl, padname);
+  gst_object_unref (pad_tmpl);
+  g_free (padname);
+  g_return_val_if_fail (srcpad != NULL, FALSE);
+
+  demux->active_srcpad = srcpad;
+  g_hash_table_insert (demux->stream_id_pairs, g_strdup (stream_id),
+      gst_object_ref (srcpad));
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_streamid_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+{
+  GstFlowReturn res = GST_FLOW_OK;
+  GstStreamidDemux *demux = NULL;
+  GstPad *srcpad = NULL;
+
+  demux = GST_STREAMID_DEMUX (parent);
+
+  GST_LOG_OBJECT (demux, "pushing buffer to %" GST_PTR_FORMAT,
+      demux->active_srcpad);
+
+  GST_OBJECT_LOCK (demux);
+  if (demux->active_srcpad) {
+    srcpad = gst_object_ref (demux->active_srcpad);
+    GST_OBJECT_UNLOCK (demux);
+    res = gst_pad_push (srcpad, buf);
+    gst_object_unref (srcpad);
+  } else {
+    GST_OBJECT_UNLOCK (demux);
+    goto no_active_srcpad;
+  }
+
+  GST_LOG_OBJECT (demux, "handled buffer %s", gst_flow_get_name (res));
+  return res;
+
+/* ERROR */
+no_active_srcpad:
+  {
+    GST_WARNING_OBJECT (demux, "srcpad is not initialized");
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
+}
+
+static GstPad *
+gst_streamid_demux_get_srcpad_by_stream_id (GstStreamidDemux * demux,
+    const gchar * stream_id)
+{
+  GstPad *srcpad = NULL;
+
+  GST_DEBUG_OBJECT (demux, "stream_id = %s", stream_id);
+  if (demux->stream_id_pairs == NULL || stream_id == NULL) {
+    goto done;
+  }
+
+  srcpad = g_hash_table_lookup (demux->stream_id_pairs, stream_id);
+
+  if (srcpad) {
+    GST_DEBUG_OBJECT (demux, "srcpad = %s:%s matched",
+        GST_DEBUG_PAD_NAME (srcpad));
+  }
+
+done:
+  return srcpad;
+}
+
+static gboolean
+gst_streamid_demux_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  gboolean res = TRUE;
+  GstStreamidDemux *demux;
+  const gchar *stream_id = NULL;
+  GstPad *active_srcpad = NULL;
+
+  demux = GST_STREAMID_DEMUX (parent);
+
+  GST_DEBUG_OBJECT (demux, "event = %s, sticky = %d",
+      GST_EVENT_TYPE_NAME (event), GST_EVENT_IS_STICKY (event));
+
+  if (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START) {
+    gst_event_parse_stream_start (event, &stream_id);
+    if (!stream_id)
+      goto no_stream_id;
+
+    GST_OBJECT_LOCK (demux);
+    active_srcpad =
+        gst_streamid_demux_get_srcpad_by_stream_id (demux, stream_id);
+    if (!active_srcpad) {
+      /* try to generate a srcpad */
+      if (gst_streamid_demux_srcpad_create (demux, pad, stream_id)) {
+        GST_OBJECT_UNLOCK (demux);
+
+        gst_pad_set_active (demux->active_srcpad, TRUE);
+        /* Forward sticky events to the new srcpad */
+        gst_pad_sticky_events_foreach (demux->sinkpad, forward_sticky_events,
+            demux->active_srcpad);
+        gst_element_add_pad (GST_ELEMENT_CAST (demux), demux->active_srcpad);
+      } else {
+        GST_OBJECT_UNLOCK (demux);
+        goto fail_create_srcpad;
+      }
+    } else if (demux->active_srcpad != active_srcpad) {
+      demux->active_srcpad = active_srcpad;
+      GST_OBJECT_UNLOCK (demux);
+
+      g_object_notify (G_OBJECT (demux), "active-pad");
+    } else
+      GST_OBJECT_UNLOCK (demux);
+  }
+
+  if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_START
+      || GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP
+      || GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
+    res = gst_pad_event_default (pad, parent, event);
+  } else if (demux->active_srcpad) {
+    GstPad *srcpad = NULL;
+    GST_OBJECT_LOCK (demux);
+    srcpad = gst_object_ref (demux->active_srcpad);
+    GST_OBJECT_UNLOCK (demux);
+    res = gst_pad_push_event (srcpad, event);
+    gst_object_unref (srcpad);
+  } else {
+    gst_event_unref (event);
+  }
+  return res;
+
+  /* ERRORS */
+no_stream_id:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX,
+        ("Error occurred trying to get stream-id to create a srcpad"),
+        ("no stream-id found at %s", GST_EVENT_TYPE_NAME (event)));
+
+    gst_event_unref (event);
+    return FALSE;
+  }
+
+fail_create_srcpad:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, FAILED,
+        ("Error occurred trying to create a srcpad"),
+        ("Failed to create a srcpad via stream-id:%s", stream_id));
+    gst_event_unref (event);
+    return FALSE;
+  }
+}
+
+static void
+gst_streamid_demux_release_srcpad (const GValue * item,
+    GstStreamidDemux * demux)
+{
+  GstPad *pad = g_value_get_object (item);
+
+  if (pad != NULL) {
+    gst_pad_set_active (pad, FALSE);
+    gst_element_remove_pad (GST_ELEMENT_CAST (demux), pad);
+  }
+}
+
+static void
+gst_streamid_demux_reset (GstStreamidDemux * demux)
+{
+  GstIterator *it = NULL;
+  GstIteratorResult itret = GST_ITERATOR_OK;
+
+  GST_OBJECT_LOCK (demux);
+  if (demux->active_srcpad != NULL)
+    demux->active_srcpad = NULL;
+
+  demux->nb_srcpads = 0;
+  GST_OBJECT_UNLOCK (demux);
+
+  if (demux->stream_id_pairs != NULL) {
+    g_hash_table_unref (demux->stream_id_pairs);
+    demux->stream_id_pairs = NULL;
+  }
+
+  it = gst_element_iterate_src_pads (GST_ELEMENT_CAST (demux));
+  while (itret == GST_ITERATOR_OK || itret == GST_ITERATOR_RESYNC) {
+    itret =
+        gst_iterator_foreach (it,
+        (GstIteratorForeachFunction) gst_streamid_demux_release_srcpad, demux);
+    if (itret == GST_ITERATOR_RESYNC)
+      gst_iterator_resync (it);
+  }
+  gst_iterator_free (it);
+}
+
+static GstStateChangeReturn
+gst_streamid_demux_change_state (GstElement * element,
+    GstStateChange transition)
+{
+  GstStreamidDemux *demux;
+  GstStateChangeReturn result;
+
+  demux = GST_STREAMID_DEMUX (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      break;
+    default:
+      break;
+  }
+
+  result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_streamid_demux_reset (demux);
+      break;
+    default:
+      break;
+  }
+
+  return result;
+}
diff --git a/plugins/elements/gststreamiddemux.h b/plugins/elements/gststreamiddemux.h
new file mode 100644
index 0000000..e8b74a9
--- /dev/null
+++ b/plugins/elements/gststreamiddemux.h
@@ -0,0 +1,71 @@
+/*
+ * GStreamer streamiddemux eleement
+ *
+ * Copyright 2013 LGE Corporation.
+ *  @author: Hoonhee Lee <hoonhee.lee@lge.com>
+ *  @author: Jeongseok Kim <jeongseok.kim@lge.com>
+ *  @author: Wonchul Lee <wonchul86.lee@lge.com>
+ *
+ * gststreamiddemux.h: Simple stream-id-demultiplexer element
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#ifndef __GST_STREAMID_DEMUX_H__
+#define __GST_STREAMID_DEMUX_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_STREAMID_DEMUX \
+  (gst_streamid_demux_get_type())
+#define GST_STREAMID_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_STREAMID_DEMUX, GstStreamidDemux))
+#define GST_STREAMID_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_STREAMID_DEMUX, GstStreamidDemuxClass))
+#define GST_IS_STREAMID_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_STREAMID_DEMUX))
+#define GST_IS_STREAMID_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_STREAMID_DEMUX))
+typedef struct _GstStreamidDemux GstStreamidDemux;
+typedef struct _GstStreamidDemuxClass GstStreamidDemuxClass;
+
+/**
+ * GstStreamidDemux:
+ *
+ * The opaque #GstStreamidDemux data structure.
+ */
+struct _GstStreamidDemux
+{
+  GstElement element;
+
+  GstPad *sinkpad;
+
+  guint nb_srcpads;
+  GstPad *active_srcpad;
+
+  /* This table contains srcpad and stream-id */
+  GHashTable *stream_id_pairs;
+};
+
+struct _GstStreamidDemuxClass
+{
+  GstElementClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_streamid_demux_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_STREAMID_DEMUX_H__ */
diff --git a/plugins/elements/gsttee.c b/plugins/elements/gsttee.c
index 81fcea7..006ad26 100644
--- a/plugins/elements/gsttee.c
+++ b/plugins/elements/gsttee.c
@@ -37,9 +37,10 @@
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch filesrc location=song.ogg ! decodebin ! tee name=t ! queue ! autoaudiosink t. ! queue ! audioconvert ! goom ! videoconvert ! autovideosink
- * ]| Play a song.ogg from local dir and render visualisations using the goom
- * element.
+ * gst-launch-1.0 filesrc location=song.ogg ! decodebin ! tee name=t ! queue ! audioconvert ! audioresample ! autoaudiosink t. ! queue ! audioconvert ! goom ! videoconvert ! autovideosink
+ * ]| Play song.ogg audio file which must be in the current working directory
+ * and render visualisations using the goom element (this can be easier done
+ * using the playbin element, this is just an example pipeline).
  * </refsect2>
  */
 
@@ -84,6 +85,7 @@
 #define DEFAULT_PROP_SILENT		TRUE
 #define DEFAULT_PROP_LAST_MESSAGE	NULL
 #define DEFAULT_PULL_MODE		GST_TEE_PULL_MODE_NEVER
+#define DEFAULT_PROP_ALLOW_NOT_LINKED	FALSE
 
 enum
 {
@@ -94,6 +96,7 @@
   PROP_LAST_MESSAGE,
   PROP_PULL_MODE,
   PROP_ALLOC_PAD,
+  PROP_ALLOW_NOT_LINKED,
 };
 
 static GstStaticPadTemplate tee_src_template =
@@ -265,6 +268,23 @@
   g_object_class_install_property (gobject_class, PROP_ALLOC_PAD,
       pspec_alloc_pad);
 
+  /**
+   * GstTee:allow-not-linked
+   *
+   * This property makes sink pad return GST_FLOW_OK even if there are no
+   * source pads or any of them is linked.
+   *
+   * This is useful to avoid errors when you have a dynamic pipeline and during
+   * a reconnection you can have all the pads unlinked or removed.
+   *
+   * Since: 1.6
+   */
+  g_object_class_install_property (gobject_class, PROP_ALLOW_NOT_LINKED,
+      g_param_spec_boolean ("allow-not-linked", "Allow not linked",
+          "Return GST_FLOW_OK even if there are no source pads or they are "
+          "all unlinked", DEFAULT_PROP_ALLOW_NOT_LINKED,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   gst_element_class_set_static_metadata (gstelement_class,
       "Tee pipe fitting",
       "Generic",
@@ -487,6 +507,9 @@
       GST_OBJECT_UNLOCK (pad);
       break;
     }
+    case PROP_ALLOW_NOT_LINKED:
+      tee->allow_not_linked = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -520,6 +543,9 @@
     case PROP_ALLOC_PAD:
       g_value_set_object (value, tee->allocpad);
       break;
+    case PROP_ALLOW_NOT_LINKED:
+      g_value_set_boolean (value, tee->allow_not_linked);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -636,6 +662,10 @@
 
     gst_object_unref (pad);
 
+    if (ret == GST_FLOW_NOT_LINKED && tee->allow_not_linked) {
+      ret = GST_FLOW_OK;
+    }
+
     return ret;
   }
 
@@ -643,7 +673,11 @@
   g_list_foreach (pads, (GFunc) clear_pads, tee);
 
 restart:
-  cret = GST_FLOW_NOT_LINKED;
+  if (tee->allow_not_linked) {
+    cret = GST_FLOW_OK;
+  } else {
+    cret = GST_FLOW_NOT_LINKED;
+  }
   pads = GST_ELEMENT_CAST (tee)->srcpads;
   cookie = GST_ELEMENT_CAST (tee)->pads_cookie;
 
@@ -670,6 +704,7 @@
       GST_TEE_PAD_CAST (pad)->pushed = TRUE;
       GST_TEE_PAD_CAST (pad)->result = ret;
       gst_object_unref (pad);
+      pad = NULL;
     } else {
       /* already pushed, use previous return value */
       ret = GST_TEE_PAD_CAST (pad)->result;
@@ -681,7 +716,7 @@
      * the same. It could be possible that the pad we just pushed was removed
      * and the return value it not valid anymore */
     if (G_UNLIKELY (GST_ELEMENT_CAST (tee)->pads_cookie != cookie)) {
-      GST_LOG_OBJECT (pad, "pad list changed");
+      GST_LOG_OBJECT (tee, "pad list changed");
       /* the list of pads changed, restart iteration. Pads that we already
        * pushed on and are still in the new list, will not be pushed on
        * again. */
@@ -694,7 +729,7 @@
 
     /* keep all other return values, overwriting the previous one. */
     if (G_LIKELY (ret != GST_FLOW_NOT_LINKED)) {
-      GST_LOG_OBJECT (pad, "Replacing ret val %d with %d", cret, ret);
+      GST_LOG_OBJECT (tee, "Replacing ret val %d with %d", cret, ret);
       cret = ret;
     }
     pads = g_list_next (pads);
@@ -709,13 +744,23 @@
   /* ERRORS */
 no_pads:
   {
-    GST_DEBUG_OBJECT (tee, "there are no pads, return not-linked");
-    ret = GST_FLOW_NOT_LINKED;
-    goto error;
+    if (tee->allow_not_linked) {
+      GST_DEBUG_OBJECT (tee, "there are no pads, dropping %s",
+          is_list ? "buffer-list" : "buffer");
+      ret = GST_FLOW_OK;
+    } else {
+      GST_DEBUG_OBJECT (tee, "there are no pads, return not-linked");
+      ret = GST_FLOW_NOT_LINKED;
+    }
+    goto end;
   }
 error:
   {
     GST_DEBUG_OBJECT (tee, "received error %s", gst_flow_get_name (ret));
+    goto end;
+  }
+end:
+  {
     GST_OBJECT_UNLOCK (tee);
     gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
     return ret;
diff --git a/plugins/elements/gsttee.h b/plugins/elements/gsttee.h
index ed488ae..e4ce310 100644
--- a/plugins/elements/gsttee.h
+++ b/plugins/elements/gsttee.h
@@ -79,6 +79,8 @@
   GstPadMode      sink_mode;
   GstTeePullMode  pull_mode;
   GstPad         *pull_pad;
+
+  gboolean        allow_not_linked;
 };
 
 struct _GstTeeClass {
diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c
index 4c77b74..f9d3e37 100644
--- a/plugins/elements/gsttypefindelement.c
+++ b/plugins/elements/gsttypefindelement.c
@@ -135,10 +135,6 @@
 static void gst_type_find_element_get_property (GObject * object,
     guint prop_id, GValue * value, GParamSpec * pspec);
 
-#if 0
-static const GstEventMask *gst_type_find_element_src_event_mask (GstPad * pad);
-#endif
-
 static gboolean gst_type_find_element_src_event (GstPad * pad,
     GstObject * parent, GstEvent * event);
 static gboolean gst_type_find_handle_src_query (GstPad * pad,
@@ -164,7 +160,7 @@
     GstObject * parent, GstPadMode mode, gboolean active);
 static GstFlowReturn
 gst_type_find_element_chain_do_typefinding (GstTypeFindElement * typefind,
-    gboolean check_avail);
+    gboolean check_avail, gboolean at_eos);
 static void gst_type_find_element_send_cached_events (GstTypeFindElement *
     typefind);
 
@@ -223,7 +219,7 @@
    * been found.
    */
   gst_type_find_element_signals[HAVE_TYPE] = g_signal_new ("have-type",
-      G_TYPE_FROM_CLASS (typefind_class), G_SIGNAL_RUN_FIRST,
+      G_TYPE_FROM_CLASS (typefind_class), G_SIGNAL_RUN_LAST,
       G_STRUCT_OFFSET (GstTypeFindElementClass, have_type), NULL, NULL,
       g_cclosure_marshal_generic, G_TYPE_NONE, 2,
       G_TYPE_UINT, GST_TYPE_CAPS | G_SIGNAL_TYPE_STATIC_SCOPE);
@@ -504,17 +500,20 @@
     GstEvent * event)
 {
   GstTypeFindElement *typefind = GST_TYPE_FIND_ELEMENT (parent);
+  gboolean result;
 
   if (typefind->mode != MODE_NORMAL) {
     /* need to do more? */
-    gst_mini_object_unref (GST_MINI_OBJECT_CAST (event));
+    gst_event_unref (event);
     return FALSE;
   }
 
   /* Only handle seeks here if driving the pipeline */
   if (typefind->segment.format != GST_FORMAT_UNDEFINED &&
       GST_EVENT_TYPE (event) == GST_EVENT_SEEK) {
-    return gst_type_find_element_seek (typefind, event);
+    result = gst_type_find_element_seek (typefind, event);
+    gst_event_unref (event);
+    return result;
   } else {
     return gst_pad_push_event (typefind->sink, event);
   }
@@ -528,6 +527,7 @@
   GST_OBJECT_LOCK (typefind);
   if (typefind->caps)
     gst_caps_replace (&typefind->caps, NULL);
+  typefind->initial_offset = GST_BUFFER_OFFSET_NONE;
   GST_OBJECT_UNLOCK (typefind);
 
   typefind->mode = MODE_TYPEFIND;
@@ -563,6 +563,7 @@
   buffer = gst_adapter_take_buffer (typefind->adapter, avail);
   GST_BUFFER_PTS (buffer) = pts;
   GST_BUFFER_DTS (buffer) = dts;
+  GST_BUFFER_OFFSET (buffer) = typefind->initial_offset;
   GST_OBJECT_UNLOCK (typefind);
 
   if (!push_cached_buffers) {
@@ -642,7 +643,7 @@
         case GST_EVENT_EOS:
         {
           GST_INFO_OBJECT (typefind, "Got EOS and no type found yet");
-          gst_type_find_element_chain_do_typefinding (typefind, FALSE);
+          gst_type_find_element_chain_do_typefinding (typefind, FALSE, TRUE);
 
           res = gst_pad_push_event (typefind->src, event);
           break;
@@ -843,10 +844,12 @@
     case MODE_TYPEFIND:
     {
       GST_OBJECT_LOCK (typefind);
+      if (typefind->initial_offset == GST_BUFFER_OFFSET_NONE)
+        typefind->initial_offset = GST_BUFFER_OFFSET (buffer);
       gst_adapter_push (typefind->adapter, buffer);
       GST_OBJECT_UNLOCK (typefind);
 
-      res = gst_type_find_element_chain_do_typefinding (typefind, TRUE);
+      res = gst_type_find_element_chain_do_typefinding (typefind, TRUE, FALSE);
 
       if (typefind->mode == MODE_ERROR)
         res = GST_FLOW_ERROR;
@@ -863,7 +866,7 @@
 
 static GstFlowReturn
 gst_type_find_element_chain_do_typefinding (GstTypeFindElement * typefind,
-    gboolean check_avail)
+    gboolean check_avail, gboolean at_eos)
 {
   GstTypeFindProbability probability;
   GstCaps *caps = NULL;
@@ -922,10 +925,17 @@
 
 not_enough_data:
   {
-    GST_DEBUG_OBJECT (typefind, "not enough data for typefinding yet "
-        "(%" G_GSIZE_FORMAT " bytes)", avail);
     GST_OBJECT_UNLOCK (typefind);
-    return GST_FLOW_OK;
+
+    if (at_eos) {
+      GST_ELEMENT_ERROR (typefind, STREAM, TYPE_NOT_FOUND,
+          (_("Stream contains not enough data.")), ("Can't typefind stream"));
+      return GST_FLOW_ERROR;
+    } else {
+      GST_DEBUG_OBJECT (typefind, "not enough data for typefinding yet "
+          "(%" G_GSIZE_FORMAT " bytes)", avail);
+      return GST_FLOW_OK;
+    }
   }
 no_type_found:
   {
@@ -936,11 +946,18 @@
   }
 wait_for_data:
   {
-    GST_DEBUG_OBJECT (typefind,
-        "no caps found with %" G_GSIZE_FORMAT " bytes of data, "
-        "waiting for more data", avail);
     GST_OBJECT_UNLOCK (typefind);
-    return GST_FLOW_OK;
+
+    if (at_eos) {
+      GST_ELEMENT_ERROR (typefind, STREAM, TYPE_NOT_FOUND,
+          (_("Stream contains not enough data.")), ("Can't typefind stream"));
+      return GST_FLOW_ERROR;
+    } else {
+      GST_DEBUG_OBJECT (typefind,
+          "no caps found with %" G_GSIZE_FORMAT " bytes of data, "
+          "waiting for more data", avail);
+      return GST_FLOW_OK;
+    }
   }
 low_probability:
   {
@@ -1180,14 +1197,17 @@
         res = TRUE;
       } else {
         res = gst_pad_stop_task (pad);
+        gst_segment_init (&typefind->segment, GST_FORMAT_UNDEFINED);
       }
       break;
     case GST_PAD_MODE_PUSH:
-      if (active)
+      if (active) {
+        gst_segment_init (&typefind->segment, GST_FORMAT_UNDEFINED);
         start_typefinding (typefind);
-      else
+      } else {
         stop_typefinding (typefind);
-
+        gst_segment_init (&typefind->segment, GST_FORMAT_UNDEFINED);
+      }
       res = TRUE;
       break;
     default:
diff --git a/plugins/elements/gsttypefindelement.h b/plugins/elements/gsttypefindelement.h
index 3551ac5..0152622 100644
--- a/plugins/elements/gsttypefindelement.h
+++ b/plugins/elements/gsttypefindelement.h
@@ -34,7 +34,6 @@
 #define GST_IS_TYPE_FIND_ELEMENT(obj) 		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TYPE_FIND_ELEMENT))
 #define GST_TYPE_FIND_ELEMENT_CLASS(klass) 	(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_TYPE_FIND_ELEMENT, GstTypeFindElementClass))
 #define GST_IS_TYPE_FIND_ELEMENT_CLASS(klass) 	(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_TYPE_FIND_ELEMENT))
-#define GST_TYPE_FIND_ELEMENT_GET_CLASS(obj) 	(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_TYPE_FIND_ELEMENT, GstTypeFindElementClass))
 
 typedef struct _GstTypeFindElement 		GstTypeFindElement;
 typedef struct _GstTypeFindElementClass 	GstTypeFindElementClass;
@@ -59,6 +58,8 @@
   GList *               cached_events;
   GstCaps *             force_caps;
 
+  guint64		initial_offset;
+  
   /* Only used when driving the pipeline */
   gboolean need_segment;
   gboolean need_stream_start;
diff --git a/plugins/elements/gstvalve.c b/plugins/elements/gstvalve.c
index 23ffa1c..e4ef0a2 100644
--- a/plugins/elements/gstvalve.c
+++ b/plugins/elements/gstvalve.c
@@ -92,7 +92,8 @@
   g_object_class_install_property (gobject_class, PROP_DROP,
       g_param_spec_boolean ("drop", "Drop buffers and events",
           "Whether to drop buffers and events or let them through",
-          DEFAULT_DROP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          DEFAULT_DROP, G_PARAM_READWRITE | GST_PARAM_MUTABLE_PLAYING |
+          G_PARAM_STATIC_STRINGS));
 
   gst_element_class_add_pad_template (gstelement_class,
       gst_static_pad_template_get (&srctemplate));
@@ -252,7 +253,7 @@
 {
   GstValve *valve = GST_VALVE (parent);
 
-  if (g_atomic_int_get (&valve->drop))
+  if (GST_QUERY_IS_SERIALIZED (query) && g_atomic_int_get (&valve->drop))
     return FALSE;
 
   return gst_pad_query_default (pad, parent, query);
diff --git a/po/af.gmo b/po/af.gmo
index 3858f3e..926bb24 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index d8cf448..7c063f1 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -939,6 +939,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -1007,6 +1013,10 @@
 msgstr ""
 
 #, fuzzy
+msgid "Stream contains not enough data."
+msgstr "album wat hierdie data bevat"
+
+#, fuzzy
 msgid "Stream contains no data."
 msgstr "album wat hierdie data bevat"
 
@@ -1020,6 +1030,9 @@
 msgid "writable"
 msgstr "titel"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr ""
 
@@ -1213,11 +1226,13 @@
 msgid "Output messages"
 msgstr "Afvoerboodskappe"
 
-msgid "Do not output status information of TYPE"
-msgstr "Moenie statusinligting van TIPE wys nie"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPE1, TIPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Moenie 'n fouthanteerder installeer nie"
@@ -1299,6 +1314,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Pyplyn word gestel na NULL ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Moenie statusinligting van TIPE wys nie"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPE1, TIPE2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "verbinding sonder bron-element"
 
diff --git a/po/az.gmo b/po/az.gmo
index be1da2d..c47ae51 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 17eae4d..296809c 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -888,6 +888,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -954,6 +960,9 @@
 msgid "force caps without doing a typefind"
 msgstr ""
 
+msgid "Stream contains not enough data."
+msgstr ""
+
 msgid "Stream contains no data."
 msgstr ""
 
@@ -966,6 +975,9 @@
 msgid "writable"
 msgstr ""
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr ""
 
@@ -1154,10 +1166,12 @@
 msgid "Output messages"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
 msgstr ""
 
-msgid "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
 msgstr ""
 
 msgid "Do not install a fault handler"
diff --git a/po/be.gmo b/po/be.gmo
index fccaf26..cad41bc 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
index ec088a6..28ff99f 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -896,6 +896,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -963,6 +969,10 @@
 msgstr ""
 
 #, fuzzy
+msgid "Stream contains not enough data."
+msgstr "альбом, якія зьмяшчае гэтыя даньі"
+
+#, fuzzy
 msgid "Stream contains no data."
 msgstr "альбом, якія зьмяшчае гэтыя даньі"
 
@@ -976,6 +986,9 @@
 msgid "writable"
 msgstr "загаловак"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr ""
 
@@ -1165,10 +1178,12 @@
 msgid "Output messages"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
 msgstr ""
 
-msgid "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
 msgstr ""
 
 msgid "Do not install a fault handler"
diff --git a/po/bg.gmo b/po/bg.gmo
index 73d079c..e4b9b1f 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index cfa4269..ff30749 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2011-04-26 22:40+0300\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -931,6 +931,12 @@
 "Ограничаване на позволените възможности („NULL“ означава всякакви). "
 "Задаването на това свойство поема указател към подадения обект GstCaps."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Не е указана временна папка"
 
@@ -997,6 +1003,10 @@
 msgid "force caps without doing a typefind"
 msgstr "принудително прилагане на възможности без търсене на видовете"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Потокът не съдържа никакви данни"
+
 msgid "Stream contains no data."
 msgstr "Потокът не съдържа никакви данни"
 
@@ -1009,6 +1019,9 @@
 msgid "writable"
 msgstr "с права за запис"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "може да се контролира"
 
@@ -1212,11 +1225,13 @@
 msgid "Output messages"
 msgstr "Изходни съобщения"
 
-msgid "Do not output status information of TYPE"
-msgstr "Да не се дават изходни съобщения от следните ВИДове за състоянието "
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "ВИД1,ВИД2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Да не се инсталира модул за обработка на грешки"
@@ -1298,6 +1313,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Конвейерът се освобождава…\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Да не се дават изходни съобщения от следните ВИДове за състоянието "
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "ВИД1,ВИД2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "връзка без елемент-източник"
 
diff --git a/po/ca.gmo b/po/ca.gmo
index b089a3e..fc1ed27 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 9fbc4a8..079645c 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -941,6 +941,12 @@
 "Restringeix les capacitats que es poden permetre (NUL vol dir QUALSEVOL). "
 "Establir aquesta propietat pren una referència a l'objecte GstCaps proveït."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "No s'ha especificat un directori temporal."
 
@@ -1007,6 +1013,10 @@
 msgid "force caps without doing a typefind"
 msgstr "força les capacitats sense fer un «typefind»"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "El flux no conté dades."
+
 msgid "Stream contains no data."
 msgstr "El flux no conté dades."
 
@@ -1019,6 +1029,9 @@
 msgid "writable"
 msgstr "escrivible"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "controlable"
 
@@ -1221,11 +1234,13 @@
 msgid "Output messages"
 msgstr "Missatges de sortida"
 
-msgid "Do not output status information of TYPE"
-msgstr "No mostres informació d'estat de TIPUS"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPUS1,TIPUS2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "No instal·les un gestor de fallades"
@@ -1310,6 +1325,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "S'està alliberant el conducte…\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "No mostres informació d'estat de TIPUS"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPUS1,TIPUS2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "l'enllaç no té un element font"
 
diff --git a/po/cs.gmo b/po/cs.gmo
index 3c91c7e..39dd5ee 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index c74f7c8..0710056 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -3,14 +3,14 @@
 # This file is put in the public domain.
 #
 # Miloslav Trmac <mitr@volny.cz>, 2004, 2005, 2007, 2008.
-# Marek Černocký <marek@manet.cz>, 2011, 2013.
+# Marek Černocký <marek@manet.cz>, 2011, 2013, 2015.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.2.1\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-03-09 11:07+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-17 16:31+0200\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "Language: cs\n"
@@ -18,7 +18,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Print the GStreamer version"
 msgstr "Vypsat verzi systému GStreamer"
@@ -114,7 +114,7 @@
 "GStreamer error: state change failed and some element failed to post a "
 "proper error message with the reason for the failure."
 msgstr ""
-"Chyba systému GStreamer: selhala změna stavu a některý prvek selhal při "
+"Chyba systému GStreamer: selhala změna stavu a některý element selhal při "
 "posílání příslušné chybové zprávy s důvodem selhání."
 
 msgid "Internal GStreamer error: pad problem."
@@ -205,22 +205,21 @@
 msgid "No space left on the resource."
 msgstr "V prostředku nezbývá místo."
 
-#, fuzzy
 msgid "Not authorized to access resource."
-msgstr "V prostředku nezbývá místo."
+msgstr "Není autorizováno pro přístup k prostředku."
 
 msgid "GStreamer encountered a general stream error."
 msgstr "V systému GStreamer došlo k obecné chybě proudu."
 
 msgid "Element doesn't implement handling of this stream. Please file a bug."
 msgstr ""
-"Prvek neimplementuje obsluhu tohoto proudu. Nahlaste to prosím jako chybu."
+"Element neimplementuje obsluhu tohoto proudu. Nahlaste to prosím jako chybu."
 
 msgid "Could not determine type of stream."
 msgstr "Nelze zjistit typ proudu."
 
 msgid "The stream is of a different type than handled by this element."
-msgstr "Proud je jiného typu, než jaký tento prvek obsluhuje."
+msgstr "Proud je jiného typu, než jaký tento element obsluhuje."
 
 msgid "There is no codec present that can handle the stream's type."
 msgstr "Není přítomen žádný kodek, který umí obsloužit typ tohoto proudu."
@@ -813,10 +812,10 @@
 "Informace o lidech stojících za mixováním a dalším podobným zpracováním"
 
 msgid "midi-base-note"
-msgstr ""
+msgstr "základní nota MIDI"
 
 msgid "Midi note number of the audio track."
-msgstr ""
+msgstr "Číslo noty MIDI pro zvukovou stopu."
 
 msgid ", "
 msgstr "; "
@@ -831,7 +830,7 @@
 
 #, c-format
 msgid "ERROR: from element %s: %s\n"
-msgstr "CHYBA: od prvku %s: %s\n"
+msgstr "CHYBA: od elementu %s: %s\n"
 
 #, c-format
 msgid ""
@@ -843,35 +842,35 @@
 
 #, c-format
 msgid "link has no source [sink=%s@%p]"
-msgstr ""
+msgstr "připojení nemá žádný zdroj [sink=%s@%p]"
 
 #, c-format
 msgid "link has no sink [source=%s@%p]"
-msgstr ""
+msgstr "připojení nemá žádný cíl [source=%s@%p]"
 
 #, c-format
 msgid "no property \"%s\" in element \"%s\""
-msgstr "v prvku „%2$s“ není žádná vlastnost „%1$s“"
+msgstr "v elementu „%2$s“ není žádná vlastnost „%1$s“"
 
 #, c-format
 msgid "could not set property \"%s\" in element \"%s\" to \"%s\""
-msgstr "nelze nastavit vlastnost „%s“ v prvku „%s“ na „%s“"
+msgstr "nelze nastavit vlastnost „%s“ v elementu „%s“ na „%s“"
 
 #, c-format
 msgid "could not link %s to %s"
-msgstr "nelze připojit prvek „%s“ k prvku „%s“"
+msgstr "nelze připojit element „%s“ k elementu „%s“"
 
 #, c-format
 msgid "no element \"%s\""
-msgstr "prvek „%s“ neexistuje"
+msgstr "element „%s“ neexistuje"
 
 #, c-format
 msgid "unexpected reference \"%s\" - ignoring"
-msgstr ""
+msgstr "neočekávaný odkaz „%s“ – ignoruje se"
 
 #, c-format
 msgid "unexpected pad-reference \"%s\" - ignoring"
-msgstr ""
+msgstr "neočekávaný odkaz přípojného bodu „%s“ – ignoruje se"
 
 #, c-format
 msgid "could not parse caps \"%s\""
@@ -879,25 +878,25 @@
 
 #, c-format
 msgid "no sink element for URI \"%s\""
-msgstr "neexistuje žádný cílový prvek pro adresu URI „%s“"
+msgstr "neexistuje žádný cílový element pro adresu URI „%s“"
 
 #, c-format
 msgid "no source element for URI \"%s\""
-msgstr "neexistuje žádný zdrojový prvek pro adresu URI „%s“"
+msgstr "neexistuje žádný zdrojový element pro adresu URI „%s“"
 
 msgid "syntax error"
-msgstr ""
+msgstr "syntaktická chyba"
 
 msgid "bin"
-msgstr ""
+msgstr "zásobník"
 
 #, c-format
 msgid "specified empty bin \"%s\", not allowed"
 msgstr "zadán prázdný zásobník „%s“, to není dovoleno"
 
-#, fuzzy, c-format
+#, c-format
 msgid "no bin \"%s\", unpacking elements"
-msgstr "zásobník „%s“ neexistuje, přeskakuje se"
+msgstr "zásobník „%s“ rozbaluje se element"
 
 msgid "empty pipeline not allowed"
 msgstr "prázdná roura není povolena"
@@ -930,6 +929,12 @@
 "Omezit povolené schopnosti (NULL znamená VŠECHNY). Nastavení této vlastnosti "
 "přebírá odkaz na zadaný objekt GstCaps."
 
+msgid "Caps Change Mode"
+msgstr "Režim změny schopností"
+
+msgid "Filter caps change behaviour"
+msgstr "Filtrovat chování změny schopností"
+
 msgid "No Temp directory specified."
 msgstr "Není určena složka pro dočasné soubory."
 
@@ -996,6 +1001,9 @@
 msgid "force caps without doing a typefind"
 msgstr "vynutit schopnosti bez hledání typu"
 
+msgid "Stream contains not enough data."
+msgstr "Proud neobsahuje dostatek dat."
+
 msgid "Stream contains no data."
 msgstr "Proud neobsahuje žádná data."
 
@@ -1008,6 +1016,9 @@
 msgid "writable"
 msgstr "lze zapisovat"
 
+msgid "deprecated"
+msgstr "zavržené"
+
 msgid "controllable"
 msgstr "lze ovládat"
 
@@ -1055,7 +1066,7 @@
 msgstr[2] "%d funkcí"
 
 msgid "Print all elements"
-msgstr "Vypsat všechny prvky"
+msgstr "Vypsat všechny elementy"
 
 msgid "Print list of blacklisted files"
 msgstr "Vypsat seznam souborů na černé listině"
@@ -1075,17 +1086,17 @@
 msgstr "Vypsat obsah zásuvných modulů"
 
 msgid "Check if the specified element or plugin exists"
-msgstr "Zkontrolovat, zda zadaný prvek nebo zásuvný modul existuje"
+msgstr "Zkontrolovat, zda zadaný element nebo zásuvný modul existuje"
 
 msgid ""
 "When checking if an element or plugin exists, also check that its version is "
 "at least the version specified"
 msgstr ""
-"Při kontrole existence prvku nebo zásuvného modulu rovněž zkontrolovat, zda "
-"je jeho verze stejná nebo novější než zadaná"
+"Při kontrole existence elementu nebo zásuvného modulu rovněž zkontrolovat, "
+"zda je jeho verze stejná nebo novější než zadaná"
 
 msgid "Print supported URI schemes, with the elements that implement them"
-msgstr "Vypsat podporovaná schémata URI, včetně prvků, které implementují"
+msgstr "Vypsat podporovaná schémata URI, včetně elementů, které implementují"
 
 #, c-format
 msgid "Could not load plugin file: %s\n"
@@ -1093,14 +1104,14 @@
 
 #, c-format
 msgid "No such element or plugin '%s'\n"
-msgstr "Prvek nebo zásuvný modul „%s“ neexistuje\n"
+msgstr "Element nebo zásuvný modul „%s“ neexistuje\n"
 
 msgid "Index statistics"
 msgstr "Přehledové statistiky"
 
 #, c-format
 msgid "Got message #%u from element \"%s\" (%s): "
-msgstr "Obdržena zpráva čís. %u od prvku „%s“ (%s): "
+msgstr "Obdržena zpráva čís. %u od elementu „%s“ (%s): "
 
 #, c-format
 msgid "Got message #%u from pad \"%s:%s\" (%s): "
@@ -1116,12 +1127,12 @@
 
 #, c-format
 msgid "Got EOS from element \"%s\".\n"
-msgstr "Obdržen konec proudu od prvku „%s“.\n"
+msgstr "Obdržen konec proudu od elementu „%s“.\n"
 
 #, c-format
 msgid "FOUND TAG      : found by element \"%s\".\n"
 msgstr ""
-"NALEZEN ŠTÍTEK: nalezen prvkem „%s“.\n"
+"NALEZEN ŠTÍTEK: nalezen elementem „%s“.\n"
 "\n"
 
 #, c-format
@@ -1138,7 +1149,7 @@
 #, c-format
 msgid "FOUND TOC      : found by element \"%s\".\n"
 msgstr ""
-"NALEZENA TABULKA S OBSAHEM: nalezena prvkem „%s“.\n"
+"NALEZENA TABULKA S OBSAHEM: nalezena elementem „%s“.\n"
 "\n"
 
 #, c-format
@@ -1158,7 +1169,7 @@
 
 #, c-format
 msgid "WARNING: from element %s: %s\n"
-msgstr "VAROVÁNÍ: od prvku %s: %s\n"
+msgstr "VAROVÁNÍ: od elementu %s: %s\n"
 
 msgid "Prerolled, waiting for buffering to finish...\n"
 msgstr ""
@@ -1194,11 +1205,11 @@
 
 #, c-format
 msgid "Missing element: %s\n"
-msgstr "Schází prvek: %s\n"
+msgstr "Schází element: %s\n"
 
 #, c-format
 msgid "Got context from element '%s': %s=%s\n"
-msgstr "Obdržen kontext od prvku „%s“: %s=%s\n"
+msgstr "Obdržen kontext od elementu „%s“: %s=%s\n"
 
 msgid "Output tags (also known as metadata)"
 msgstr "Vypsat štítky (známé také jako metadata)"
@@ -1215,11 +1226,13 @@
 msgid "Output messages"
 msgstr "Zprávy výstupu"
 
-msgid "Do not output status information of TYPE"
-msgstr "Pro TYP nevypisovat stavové informace"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYP1,TYP2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Neinstalovat obsluhu výjimek"
@@ -1242,7 +1255,7 @@
 msgstr "VAROVÁNÍ: chybná roura: %s\n"
 
 msgid "ERROR: the 'pipeline' element wasn't found.\n"
-msgstr "CHYBA: prvek „pipeline“ nebyl nalezen.\n"
+msgstr "CHYBA: element „pipeline“ nebyl nalezen.\n"
 
 msgid "Setting pipeline to PAUSED ...\n"
 msgstr "Nastavuje se rouru na POZASTAVENA…\n"
@@ -1305,14 +1318,8 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Uvolňuje se roura…\n"
 
-#~ msgid "link without source element"
-#~ msgstr "propojení bez zdrojového prvku"
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Pro TYP nevypisovat stavové informace"
 
-#~ msgid "link without sink element"
-#~ msgstr "propojení bez cílového prvku"
-
-#~ msgid "no element to link URI \"%s\" to"
-#~ msgstr "neexistuje žádný prvek pro připojení adresy URI „%s“"
-
-#~ msgid "could not link sink element for URI \"%s\""
-#~ msgstr "nelze připojit cílový prvek pro adresu URI „%s“"
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYP1,TYP2,…"
diff --git a/po/da.gmo b/po/da.gmo
index 5088e5d..8eb5fc8 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index cf3f987..c7fdf4e 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.3.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2014-07-16 13:26+0200\n"
 "Last-Translator: Mogens Jaeger <mogensjaeger@gmail.com>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -928,6 +928,12 @@
 "Begræns den mulige tilladte kapabilitet (NUL betyder ALT). Sættes denne "
 "egenskab gives en reference til det leverede GstCaps objekt."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Der er ikke angivet en mappe til midlertidige filer."
 
@@ -995,6 +1001,10 @@
 msgid "force caps without doing a typefind"
 msgstr "gennemtving kapabiliteter uden at gennemføre en typefind"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Mediestrøm indeholder ingen data"
+
 msgid "Stream contains no data."
 msgstr "Mediestrøm indeholder ingen data"
 
@@ -1007,6 +1017,9 @@
 msgid "writable"
 msgstr "som kan skrives"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "kontrollerbar"
 
@@ -1208,11 +1221,13 @@
 msgid "Output messages"
 msgstr "Uddatameddelelser"
 
-msgid "Do not output status information of TYPE"
-msgstr "Send ikke statusinformation af TYPE ud"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Installér ikke en fejlhåndterer"
@@ -1292,6 +1307,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Rørledning frigøres ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Send ikke statusinformation af TYPE ud"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "lænke uden kilde-element"
 
diff --git a/po/de.gmo b/po/de.gmo
index 211ad8f..fcaebf0 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 55637de..32b5f8c 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,16 +1,16 @@
-# German translation for gstreamer 1.3.2
+# German translation for gstreamer 1.4.1
 # Copyright (C) 2004 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gstreamer package.
 #
 # Roland Illig <roland.illig@gmx.de>, 2004.
-# Christian Kirbach <christian.kirbach@googlemail.com>, 2009, 2010, 2011, 2012, 2013.
+# Christian Kirbach <christian.kirbach@googlemail.com>, 2009, 2010, 2011, 2012, 2013, 2015.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-05-22 20:48+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-11 18:57+0100\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -18,7 +18,8 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 1.7.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Print the GStreamer version"
 msgstr "Die Version von GStreamer ausgeben"
@@ -292,13 +293,13 @@
 msgstr "Üblicher Titel zu Sortierzwecken"
 
 msgid "artist"
-msgstr "Interpret"
+msgstr "Künstler"
 
 msgid "person(s) responsible for the recording"
 msgstr "Für die Aufnahme verantwortliche Person(en)"
 
 msgid "artist sortname"
-msgstr "Sortiername des Interpreten"
+msgstr "Sortiername des Künstlers"
 
 msgid "person(s) responsible for the recording for sorting purposes"
 msgstr "Für die Aufnahme verantwortliche Person(en) zu Sortierzwecken"
@@ -316,16 +317,16 @@
 msgstr "Album, das diese Daten enthält, zu Sortierzwecken"
 
 msgid "album artist"
-msgstr "Interpret des Albums"
+msgstr "Künstler des Albums"
 
 msgid "The artist of the entire album, as it should be displayed"
-msgstr "Der Interpret des gesamten Albums, so wie er angezeigt werden soll"
+msgstr "Der Künstler des gesamten Albums, so wie er angezeigt werden soll"
 
 msgid "album artist sortname"
-msgstr "Sortiername des Albeninterpreten"
+msgstr "Sortiername des Albenkünstlers"
 
 msgid "The artist of the entire album, as it should be sorted"
-msgstr "Der Interpret des gesamten Albums, so wie er einsortiert werden soll"
+msgstr "Der Künstler des gesamten Albums, so wie er einsortiert werden soll"
 
 msgid "date"
 msgstr "Datum"
@@ -396,10 +397,10 @@
 "Datenstroms bereit steht)"
 
 msgid "homepage"
-msgstr "Homepage"
+msgstr "Internetseite"
 
 msgid "Homepage for this media (i.e. artist or movie homepage)"
-msgstr "Homepage dieses Mediums (z.B. Interpret oder Film)"
+msgstr "Internetseite dieses Mediums (z.B. Künstler oder Filmseite)"
 
 msgid "description"
 msgstr "Beschreibung"
@@ -956,6 +957,12 @@
 "Beschränkt die möglichen Filterfähigkeiten (NULL bedeutet ALLE). Setzen "
 "dieser Eigenschaft referenziert ein hinzugefügtes GstCaps-Objekt."
 
+msgid "Caps Change Mode"
+msgstr "Änderungsmodus der Fähigkeiten"
+
+msgid "Filter caps change behaviour"
+msgstr "Änderungsmodus der Filterfähigkeiten"
+
 msgid "No Temp directory specified."
 msgstr "Kein temporärer Ordner angegeben."
 
@@ -1022,6 +1029,9 @@
 msgid "force caps without doing a typefind"
 msgstr "Fähigkeiten ohne Typensuche erzwingen"
 
+msgid "Stream contains not enough data."
+msgstr "Der Datenstrom enthält nicht genug Daten."
+
 msgid "Stream contains no data."
 msgstr "Der Datenstrom enthält keine Daten."
 
@@ -1034,6 +1044,9 @@
 msgid "writable"
 msgstr "schreibbar"
 
+msgid "deprecated"
+msgstr "veraltet"
+
 msgid "controllable"
 msgstr "regelbar"
 
@@ -1234,11 +1247,13 @@
 msgid "Output messages"
 msgstr "Ausgabenachrichten"
 
-msgid "Do not output status information of TYPE"
-msgstr "Zustandsinformation der Art ART nicht ausgeben"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "ART1,ART2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Keine Routine zum Abfangen von Fehlern installieren"
@@ -1318,6 +1333,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Leitung wird geleert ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Zustandsinformation der Art ART nicht ausgeben"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "ART1,ART2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "Verknüpfung ohne Quellelement"
 
diff --git a/po/el.gmo b/po/el.gmo
index 408f533..2b297fe 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index ed3ab8b..299370b 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -953,6 +953,12 @@
 "ρύθμιση αυτής της ιδιότητας απαιτεί μια αναφορά στο παρεχόμενο αντικείμενο "
 "GstCaps."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Δεν ορίσθηκε προσωρινός κατάλογος (Temp)."
 
@@ -1019,6 +1025,10 @@
 msgid "force caps without doing a typefind"
 msgstr "επιβολή δυνατοτήτων χωρίς εκτέλεση typefind"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Η ροή δεν περιέχει δεδομένα."
+
 msgid "Stream contains no data."
 msgstr "Η ροή δεν περιέχει δεδομένα."
 
@@ -1031,6 +1041,9 @@
 msgid "writable"
 msgstr "εγγράψιμο"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "ελεγχόμενο"
 
@@ -1227,11 +1240,13 @@
 msgid "Output messages"
 msgstr "Μηνύματα εξόδου"
 
-msgid "Do not output status information of TYPE"
-msgstr "Να μην εξάγεται πληροφορία κατάστασης εξόδου του TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Να μην εγκατασταθεί χειριστής σφαλμάτων"
@@ -1314,6 +1329,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Αποδέσμευση της διασωλήνωσης …\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Να μην εξάγεται πληροφορία κατάστασης εξόδου του TYPE"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "σύνδεση χωρίς στοιχείο προέλευσης"
 
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index b69e191..6e6653b 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 90421e9..a44377c 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -941,6 +941,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -1009,6 +1015,10 @@
 msgstr ""
 
 #, fuzzy
+msgid "Stream contains not enough data."
+msgstr "album containing this data"
+
+#, fuzzy
 msgid "Stream contains no data."
 msgstr "album containing this data"
 
@@ -1022,6 +1032,9 @@
 msgid "writable"
 msgstr "title"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr ""
 
@@ -1213,11 +1226,13 @@
 msgid "Output messages"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
-msgstr "Do not output status information of TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Do not install a fault handler"
@@ -1299,6 +1314,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "RUNNING pipeline ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Do not output status information of TYPE"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "link without source element"
 
diff --git a/po/eo.gmo b/po/eo.gmo
index a13f795..be12f99 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index da2a739..6a6a388 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -878,6 +878,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -944,6 +950,9 @@
 msgid "force caps without doing a typefind"
 msgstr ""
 
+msgid "Stream contains not enough data."
+msgstr ""
+
 msgid "Stream contains no data."
 msgstr ""
 
@@ -956,6 +965,9 @@
 msgid "writable"
 msgstr "skribeble"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "regeble"
 
@@ -1146,11 +1158,13 @@
 msgid "Output messages"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
 msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPO1,TIPO2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr ""
@@ -1229,5 +1243,8 @@
 msgid "Freeing pipeline ...\n"
 msgstr ""
 
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPO1,TIPO2,..."
+
 #~ msgid "FILE"
 #~ msgstr "DOSIERO"
diff --git a/po/es.gmo b/po/es.gmo
index 98cee26..386cfba 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 17125af..f11dd96 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -944,6 +944,12 @@
 "Al establecer esta propiedad se obtiene una referencia del objeto GstCaps "
 "proporcionado."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "No se especificó un directorio temporal."
 
@@ -1010,6 +1016,10 @@
 msgid "force caps without doing a typefind"
 msgstr "forzar las capacidades sin hacer un «typefind»"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "El flujo no contiene datos."
+
 msgid "Stream contains no data."
 msgstr "El flujo no contiene datos."
 
@@ -1022,6 +1032,9 @@
 msgid "writable"
 msgstr "escribible"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "controlable"
 
@@ -1221,11 +1234,13 @@
 msgid "Output messages"
 msgstr "Mensajes de salida"
 
-msgid "Do not output status information of TYPE"
-msgstr "No sacar la salida de la información de estado del TIPO"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPO1,TIPO2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "No instalar un manejador predeterminado"
@@ -1306,6 +1321,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Liberando la tubería…\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "No sacar la salida de la información de estado del TIPO"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPO1,TIPO2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "enlace sin elemento origen"
 
diff --git a/po/eu.gmo b/po/eu.gmo
index 8cb8408..b8700a8 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 644fa56..bd67633 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -942,6 +942,12 @@
 "Mugatu onar daitezkeen ahalmenak (NULLek EDOZER adierazten du). Propietate "
 "hori ezartzen bada, emandako GstCaps objektuaren erreferentzia hartzen du."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Ez da aldi baterako direktoriorik zehaztu."
 
@@ -1009,6 +1015,10 @@
 msgid "force caps without doing a typefind"
 msgstr "derrigortu gaitasunak motaren bilaketa landu gabe"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Korronteak ez du daturik."
+
 msgid "Stream contains no data."
 msgstr "Korronteak ez du daturik."
 
@@ -1021,6 +1031,9 @@
 msgid "writable"
 msgstr "idatz daitekeena"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "kontrola daitekeena"
 
@@ -1219,11 +1232,13 @@
 msgid "Output messages"
 msgstr "Erakutsi mezuak"
 
-msgid "Do not output status information of TYPE"
-msgstr "Ez erakutsi MOTA hauetako egoera-informazioa:"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "1.MOTA, 2.MOTA..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Ez instalatu akats-maneiatzailerik"
@@ -1304,6 +1319,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Kanalizazioa askatzen...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Ez erakutsi MOTA hauetako egoera-informazioa:"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "1.MOTA, 2.MOTA..."
+
 #~ msgid "link without source element"
 #~ msgstr "iturburu-elementurik gabeko esteka"
 
diff --git a/po/fi.gmo b/po/fi.gmo
index af7b6ed..5532dcb 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index e7d0595..72edcf1 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -939,6 +939,12 @@
 "Rajoita mahdollisia sallittuja kykyjä (NULL tarkoittaa mitä tahansa). Tämän "
 "ominaisuuden asettaminen ottaa kahvan annettuun GstCaps-olioon."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Tilapäishakemistoa ei ole määritetty."
 
@@ -1005,6 +1011,10 @@
 msgid "force caps without doing a typefind"
 msgstr "pakota kyvyt ilman tyyppihakua"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Virta on tyhjä."
+
 msgid "Stream contains no data."
 msgstr "Virta on tyhjä."
 
@@ -1017,6 +1027,9 @@
 msgid "writable"
 msgstr "kirjoitettavissa"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "ohjattavissa"
 
@@ -1213,11 +1226,13 @@
 msgid "Output messages"
 msgstr "Tulosteviestit"
 
-msgid "Do not output status information of TYPE"
-msgstr "Älä tulosta tilatietoa TYYPPI"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYYPPI1,TYYPPI2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Älä asenna virheenkäsittelintä"
@@ -1302,6 +1317,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Vapautetaan liukuhihna...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Älä tulosta tilatietoa TYYPPI"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYYPPI1,TYYPPI2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "linkki ilman lähde-elementtiä"
 
diff --git a/po/fr.gmo b/po/fr.gmo
index 603cb61..04bfcf4 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index e22c708..0225ea2 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,14 +4,15 @@
 #
 # Thomas Vander Stichele <thomas@apestaart.org>, 2004.
 # Claude Paroz <claude@2xlibre.net>, 2008-2012.
+# Stéphane Aulery <lkppo@free.fr>, 2015.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.0.3\n"
+"Project-Id-Version: gstreamer 1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2012-12-05 19:31+0100\n"
-"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-04-26 19:49+0200\n"
+"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
@@ -28,11 +29,10 @@
 msgid "Print available debug categories and exit"
 msgstr "Affiche les catégories de débogage disponibles et quitte"
 
-#, fuzzy
 msgid ""
 "Default debug level from 1 (only error) to 9 (anything) or 0 for no output"
 msgstr ""
-"Niveau de débogage par défaut, de 1 (erreurs uniquement) à 5 (tout) ou 0 "
+"Niveau de débogage par défaut, de 1 (erreurs uniquement) à 9 (tout) ou 0 "
 "pour aucune sortie"
 
 msgid "LEVEL"
@@ -890,18 +890,18 @@
 msgstr "pas d'élément source pour l'URI « %s »"
 
 msgid "syntax error"
-msgstr ""
+msgstr "erreur de syntaxe"
 
 msgid "bin"
-msgstr ""
+msgstr "bin"
 
 #, c-format
 msgid "specified empty bin \"%s\", not allowed"
 msgstr "conteneur « %s » vide, non autorisé"
 
-#, fuzzy, c-format
+#, c-format
 msgid "no bin \"%s\", unpacking elements"
-msgstr "pas de conteneur « %s », ignoré"
+msgstr "pas de conteneur « %s », dépaquetage des éléments"
 
 msgid "empty pipeline not allowed"
 msgstr "pipeline vide non autorisé"
@@ -935,6 +935,12 @@
 "définition de cette propriété nécessite une référence à l'objet GSTCaps "
 "fourni."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Aucun répertoire temporaire indiqué."
 
@@ -1001,6 +1007,10 @@
 msgid "force caps without doing a typefind"
 msgstr "force les capacités sans faire de recherche de type"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Le flux ne contient aucune donnée."
+
 msgid "Stream contains no data."
 msgstr "Le flux ne contient aucune donnée."
 
@@ -1013,6 +1023,9 @@
 msgid "writable"
 msgstr "accès en écriture"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "contrôlable"
 
@@ -1160,30 +1173,29 @@
 msgstr "AVERTISSEMENT : de l'élément %s : %s\n"
 
 msgid "Prerolled, waiting for buffering to finish...\n"
-msgstr "Préparation terminée, attente de la fin de remplissage du tampon...\n"
+msgstr "Préparation terminée, attente de la fin de remplissage du tampon…\n"
 
-#, fuzzy
 msgid "Prerolled, waiting for progress to finish...\n"
-msgstr "Préparation terminée, attente de la fin de remplissage du tampon...\n"
+msgstr "Préparation terminée, attente de la fin du traitement…\n"
 
 msgid "buffering..."
-msgstr "mise en mémoire tampon..."
+msgstr "mise en mémoire tampon…"
 
 msgid "Done buffering, setting pipeline to PLAYING ...\n"
-msgstr "Mémoire tampon pleine, définition du pipeline à PLAYING...\n"
+msgstr "Mémoire tampon pleine, définition du pipeline à PLAYING…\n"
 
 msgid "Buffering, setting pipeline to PAUSED ...\n"
-msgstr "Remplissage du tampon, définition du pipeline à PAUSED...\n"
+msgstr "Remplissage du tampon, définition du pipeline à PAUSED…\n"
 
 msgid "Redistribute latency...\n"
-msgstr "Redistribution de latence...\n"
+msgstr "Redistribution de latence…\n"
 
 #, c-format
 msgid "Setting state to %s as requested by %s...\n"
-msgstr "Définition de l'état à %s comme demandé par %s...\n"
+msgstr "Définition de l'état à %s comme demandé par %s…\n"
 
 msgid "Interrupt: Stopping pipeline ...\n"
-msgstr "Interruption : arrêt du pipeline...\n"
+msgstr "Interruption : arrêt du pipeline…\n"
 
 #, c-format
 msgid "Progress: (%s) %s\n"
@@ -1212,11 +1224,13 @@
 msgid "Output messages"
 msgstr "Affiche des messages"
 
-msgid "Do not output status information of TYPE"
-msgstr "N'affiche pas d'informations d'état de TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "N'installe pas de gestionnaire de dysfonctionnement"
@@ -1248,19 +1262,19 @@
 msgstr "ERREUR : le pipeline refuse de se mettre en pause.\n"
 
 msgid "Pipeline is live and does not need PREROLL ...\n"
-msgstr "Le pipeline est actif et n'a pas besoin de phase PREROLL...\n"
+msgstr "Le pipeline est actif et n'a pas besoin de phase PREROLL…\n"
 
 msgid "Pipeline is PREROLLING ...\n"
-msgstr "Le pipeline est en phase de PREROLL...\n"
+msgstr "Le pipeline est en phase de PREROLL…\n"
 
 msgid "ERROR: pipeline doesn't want to preroll.\n"
 msgstr "ERREUR : le pipeline refuse de passer en phase de préparation.\n"
 
 msgid "Pipeline is PREROLLED ...\n"
-msgstr "Le pipeline a terminé la phase PREROLL...\n"
+msgstr "Le pipeline a terminé la phase PREROLL…\n"
 
 msgid "Setting pipeline to PLAYING ...\n"
-msgstr "Passage du pipeline à la phase PLAYING...\n"
+msgstr "Passage du pipeline à la phase PLAYING…\n"
 
 msgid "ERROR: pipeline doesn't want to play.\n"
 msgstr "ERREUR : le pipeline refuse de passer en mode actif.\n"
@@ -1272,13 +1286,13 @@
 msgstr "EOS à la fermeture est activé -- attente d'EOS après erreur\n"
 
 msgid "Waiting for EOS...\n"
-msgstr "Attente d'EOS...\n"
+msgstr "Attente d'EOS.\n"
 
 msgid "EOS received - stopping pipeline...\n"
-msgstr "EOS reçu - arrêt du pipeline...\n"
+msgstr "EOS reçu - arrêt du pipeline…\n"
 
 msgid "Interrupt while waiting for EOS - stopping pipeline...\n"
-msgstr "Interruption lors de l'attende d'EOS - arrêt du pipeline...\n"
+msgstr "Interruption lors de l'attende d'EOS - arrêt du pipeline…\n"
 
 msgid "An error happened while waiting for EOS\n"
 msgstr "Une erreur s'est produite lors de l'attente de l'EOS\n"
@@ -1287,50 +1301,16 @@
 msgstr "L'exécution s'est terminée après %"
 
 msgid "Setting pipeline to READY ...\n"
-msgstr "Définition du pipeline à READY (prêt)...\n"
+msgstr "Définition du pipeline à READY (prêt)…\n"
 
 msgid "Setting pipeline to NULL ...\n"
-msgstr "Définition du pipeline à NULL...\n"
+msgstr "Définition du pipeline à NULL…\n"
 
 msgid "Freeing pipeline ...\n"
-msgstr "Libération du pipeline...\n"
+msgstr "Libération du pipeline…\n"
 
-#~ msgid "link without source element"
-#~ msgstr "lien sans élément source"
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "N'affiche pas d'informations d'état de TYPE"
 
-#~ msgid "link without sink element"
-#~ msgstr "lien sans élément d'entrée (sink)"
-
-#~ msgid "no element to link URI \"%s\" to"
-#~ msgstr "pas d'élément auquel relier l'URI « %s »"
-
-#~ msgid "could not link sink element for URI \"%s\""
-#~ msgstr "impossible de lier un élément d'entrée pour l'URI « %s »"
-
-#~ msgid "ERROR: parse of xml file '%s' failed.\n"
-#~ msgstr "ERREUR : l'analyse du fichier xml « %s » a échoué.\n"
-
-#~ msgid "ERROR: no toplevel pipeline element in file '%s'.\n"
-#~ msgstr ""
-#~ "ERREUR : pas d'élément pipeline de premier niveau dans le fichier "
-#~ "« %s ».\n"
-
-#~ msgid "WARNING: only one toplevel element is supported at this time.\n"
-#~ msgstr ""
-#~ "AVERTISSEMENT : actuellement, un seul élément de premier niveau est "
-#~ "géré.\n"
-
-#~ msgid "ERROR: could not parse command line argument %d: %s.\n"
-#~ msgstr ""
-#~ "ERREUR : impossible d'analyser le paramètre numéro %d de la ligne de "
-#~ "commande : %s.\n"
-
-#~ msgid "WARNING: element named '%s' not found.\n"
-#~ msgstr "AVERTISSEMENT : l'élément nommé « %s » est introuvable.\n"
-
-#~ msgid "Save xml representation of pipeline to FILE and exit"
-#~ msgstr ""
-#~ "Enregistre une représentation xml du pipeline dans FICHIER et quitte"
-
-#~ msgid "FILE"
-#~ msgstr "FICHIER"
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,…"
diff --git a/po/gl.gmo b/po/gl.gmo
index c962a15..a721767 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index e61a582..15e9b6c 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -932,6 +932,12 @@
 "estabelecer esta propiedade obtense unha referencia do obxecto GstCaps "
 "fornecido."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Non se especificou un directorio temporal."
 
@@ -998,6 +1004,10 @@
 msgid "force caps without doing a typefind"
 msgstr "forzar as capacidades sen facer un «typefind»"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "O fluxo non contén datos."
+
 msgid "Stream contains no data."
 msgstr "O fluxo non contén datos."
 
@@ -1010,6 +1020,9 @@
 msgid "writable"
 msgstr "escribíbel"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "controlábel"
 
@@ -1209,11 +1222,13 @@
 msgid "Output messages"
 msgstr "Mensaxes de saída"
 
-msgid "Do not output status information of TYPE"
-msgstr "Non sacar a saída da información de estado do TIPO"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPO1,TIPO2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Non instalar un manexador predeterminado"
@@ -1292,6 +1307,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Liberando a tubería...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Non sacar a saída da información de estado do TIPO"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPO1,TIPO2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "ligazón sen elemento orixe"
 
diff --git a/po/gstreamer-1.0.pot b/po/gstreamer-1.0.pot
index 657975d..4ca24b6 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.4.5\n"
+"Project-Id-Version: gstreamer 1.5.91\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,94 +18,94 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: gst/gst.c:231
+#: gst/gst.c:242
 msgid "Print the GStreamer version"
 msgstr ""
 
-#: gst/gst.c:233
+#: gst/gst.c:244
 msgid "Make all warnings fatal"
 msgstr ""
 
-#: gst/gst.c:237
+#: gst/gst.c:248
 msgid "Print available debug categories and exit"
 msgstr ""
 
-#: gst/gst.c:241
+#: gst/gst.c:252
 msgid ""
 "Default debug level from 1 (only error) to 9 (anything) or 0 for no output"
 msgstr ""
 
-#: gst/gst.c:243
+#: gst/gst.c:254
 msgid "LEVEL"
 msgstr ""
 
-#: gst/gst.c:245
+#: gst/gst.c:256
 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:248
+#: gst/gst.c:259
 msgid "LIST"
 msgstr ""
 
-#: gst/gst.c:250
+#: gst/gst.c:261
 msgid "Disable colored debugging output"
 msgstr ""
 
-#: gst/gst.c:254
+#: gst/gst.c:265
 msgid ""
 "Changes coloring mode of the debug log. Possible modes: off, on, disable, "
 "auto, unix"
 msgstr ""
 
-#: gst/gst.c:258
+#: gst/gst.c:269
 msgid "Disable debugging"
 msgstr ""
 
-#: gst/gst.c:262
+#: gst/gst.c:273
 msgid "Enable verbose plugin loading diagnostics"
 msgstr ""
 
-#: gst/gst.c:266
+#: gst/gst.c:277
 msgid "Colon-separated paths containing plugins"
 msgstr ""
 
-#: gst/gst.c:266
+#: gst/gst.c:277
 msgid "PATHS"
 msgstr ""
 
-#: gst/gst.c:269
+#: gst/gst.c:280
 msgid ""
 "Comma-separated list of plugins to preload in addition to the list stored in "
 "environment variable GST_PLUGIN_PATH"
 msgstr ""
 
-#: gst/gst.c:271
+#: gst/gst.c:282
 msgid "PLUGINS"
 msgstr ""
 
-#: gst/gst.c:274
+#: gst/gst.c:285
 msgid "Disable trapping of segmentation faults during plugin loading"
 msgstr ""
 
-#: gst/gst.c:279
+#: gst/gst.c:290
 msgid "Disable updating the registry"
 msgstr ""
 
-#: gst/gst.c:284
+#: gst/gst.c:295
 msgid "Disable spawning a helper process while scanning the registry"
 msgstr ""
 
-#: gst/gst.c:289
+#: gst/gst.c:300
 msgid "GStreamer Options"
 msgstr ""
 
-#: gst/gst.c:290
+#: gst/gst.c:301
 msgid "Show GStreamer Options"
 msgstr ""
 
-#: gst/gst.c:872
+#: gst/gst.c:884
 msgid "Unknown option"
 msgstr ""
 
@@ -306,11 +306,11 @@
 msgid "No standard error message for domain %s and code %d."
 msgstr ""
 
-#: gst/gstpipeline.c:523
+#: gst/gstpipeline.c:549
 msgid "Selected clock cannot be used in pipeline."
 msgstr ""
 
-#: gst/gstregistry.c:1693
+#: gst/gstregistry.c:1694
 #, c-format
 msgid "Error writing registry cache to %s: %s"
 msgstr ""
@@ -1008,22 +1008,22 @@
 msgid ", "
 msgstr ""
 
-#: gst/gsturi.c:589
+#: gst/gsturi.c:674
 #, c-format
 msgid "No URI handler for the %s protocol found"
 msgstr ""
 
-#: gst/gsturi.c:764
+#: gst/gsturi.c:849
 #, c-format
 msgid "URI scheme '%s' not supported"
 msgstr ""
 
-#: gst/gstutils.c:2355 tools/gst-launch.c:321
+#: gst/gstutils.c:2424 tools/gst-launch.c:324
 #, c-format
 msgid "ERROR: from element %s: %s\n"
 msgstr ""
 
-#: gst/gstutils.c:2357 tools/gst-launch.c:323 tools/gst-launch.c:650
+#: gst/gstutils.c:2426 tools/gst-launch.c:326 tools/gst-launch.c:669
 #, c-format
 msgid ""
 "Additional debug info:\n"
@@ -1040,197 +1040,211 @@
 msgid "link has no sink [source=%s@%p]"
 msgstr ""
 
-#: gst/parse/grammar.y:411
+#: gst/parse/grammar.y:412
 #, c-format
 msgid "no property \"%s\" in element \"%s\""
 msgstr ""
 
-#: gst/parse/grammar.y:452
+#: gst/parse/grammar.y:453
 #, c-format
 msgid "could not set property \"%s\" in element \"%s\" to \"%s\""
 msgstr ""
 
-#: gst/parse/grammar.y:615
+#: gst/parse/grammar.y:616
 #, c-format
 msgid "could not link %s to %s"
 msgstr ""
 
-#: gst/parse/grammar.y:690
+#: gst/parse/grammar.y:691
 #, c-format
 msgid "no element \"%s\""
 msgstr ""
 
-#: gst/parse/grammar.y:751
+#: gst/parse/grammar.y:752
 #, c-format
 msgid "unexpected reference \"%s\" - ignoring"
 msgstr ""
 
-#: gst/parse/grammar.y:757
+#: gst/parse/grammar.y:758
 #, c-format
 msgid "unexpected pad-reference \"%s\" - ignoring"
 msgstr ""
 
-#: gst/parse/grammar.y:796
+#: gst/parse/grammar.y:797
 #, c-format
 msgid "could not parse caps \"%s\""
 msgstr ""
 
-#: gst/parse/grammar.y:824
+#: gst/parse/grammar.y:825
 #, c-format
 msgid "no sink element for URI \"%s\""
 msgstr ""
 
-#: gst/parse/grammar.y:843
+#: gst/parse/grammar.y:844
 #, c-format
 msgid "no source element for URI \"%s\""
 msgstr ""
 
-#: gst/parse/grammar.y:933
+#: gst/parse/grammar.y:934
 msgid "syntax error"
 msgstr ""
 
-#: gst/parse/grammar.y:947
+#: gst/parse/grammar.y:948
 msgid "bin"
 msgstr ""
 
-#: gst/parse/grammar.y:956
+#: gst/parse/grammar.y:957
 #, c-format
 msgid "specified empty bin \"%s\", not allowed"
 msgstr ""
 
-#: gst/parse/grammar.y:966
+#: gst/parse/grammar.y:967
 #, c-format
 msgid "no bin \"%s\", unpacking elements"
 msgstr ""
 
-#: gst/parse/grammar.y:997
+#: gst/parse/grammar.y:998
 msgid "empty pipeline not allowed"
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:2793
+#: libs/gst/base/gstbasesink.c:2845
 msgid "A lot of buffers are being dropped."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:3306
+#: libs/gst/base/gstbasesink.c:3373
 msgid "Internal data flow problem."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:3976
+#: libs/gst/base/gstbasesink.c:4086
 msgid "Internal data stream error."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:3986 libs/gst/base/gstbasesrc.c:2932
-#: libs/gst/base/gstbasesrc.c:2941 plugins/elements/gstdownloadbuffer.c:1322
-#: plugins/elements/gstqueue.c:858 plugins/elements/gstqueue.c:1325
-#: plugins/elements/gstqueue2.c:2349 plugins/elements/gstqueue2.c:2818
+#: libs/gst/base/gstbasesink.c:4096 libs/gst/base/gstbasesrc.c:2942
+#: libs/gst/base/gstbasesrc.c:2951 plugins/elements/gstdownloadbuffer.c:1345
+#: plugins/elements/gstqueue.c:966 plugins/elements/gstqueue.c:1513
+#: plugins/elements/gstqueue2.c:2353 plugins/elements/gstqueue2.c:2829
 msgid "Internal data flow error."
 msgstr ""
 
-#: libs/gst/base/gstbasesrc.c:2531
+#: libs/gst/base/gstbasesrc.c:2541
 msgid "Internal clock error."
 msgstr ""
 
-#: libs/gst/base/gstbasesrc.c:2559
+#: libs/gst/base/gstbasesrc.c:2569
 msgid "Failed to map buffer."
 msgstr ""
 
-#: plugins/elements/gstcapsfilter.c:103
+#: plugins/elements/gstcapsfilter.c:128
 msgid "Filter caps"
 msgstr ""
 
-#: plugins/elements/gstcapsfilter.c:104
+#: plugins/elements/gstcapsfilter.c:129
 msgid ""
 "Restrict the possible allowed capabilities (NULL means ANY). Setting this "
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:919 plugins/elements/gstqueue2.c:1532
+#: plugins/elements/gstcapsfilter.c:136
+msgid "Caps Change Mode"
+msgstr ""
+
+#: plugins/elements/gstcapsfilter.c:137
+msgid "Filter caps change behaviour"
+msgstr ""
+
+#: plugins/elements/gstdownloadbuffer.c:916 plugins/elements/gstqueue2.c:1536
 msgid "No Temp directory specified."
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:925 plugins/elements/gstqueue2.c:1538
+#: plugins/elements/gstdownloadbuffer.c:922 plugins/elements/gstqueue2.c:1542
 #, c-format
 msgid "Could not create temp file \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:933 plugins/elements/gstfilesrc.c:519
-#: plugins/elements/gstqueue2.c:1546
+#: plugins/elements/gstdownloadbuffer.c:930 plugins/elements/gstfilesrc.c:518
+#: plugins/elements/gstqueue2.c:1550
 #, c-format
 msgid "Could not open file \"%s\" for reading."
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:1244 plugins/elements/gstqueue2.c:1952
+#: plugins/elements/gstdownloadbuffer.c:1254 plugins/elements/gstqueue2.c:1956
 msgid "Error while writing to download file."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:416
+#: plugins/elements/gstfilesink.c:425
 msgid "No file name specified for writing."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:422
+#: plugins/elements/gstfilesink.c:431
 #, c-format
 msgid "Could not open file \"%s\" for writing."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:447
+#: plugins/elements/gstfilesink.c:456
 #, c-format
 msgid "Error closing file \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:611
+#: plugins/elements/gstfilesink.c:620
 #, c-format
 msgid "Error while seeking in file \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:619 plugins/elements/gstfilesink.c:682
+#: plugins/elements/gstfilesink.c:628 plugins/elements/gstfilesink.c:705
+#: plugins/elements/gstfilesink.c:740
 #, c-format
 msgid "Error while writing to file \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstfilesrc.c:507
+#: plugins/elements/gstfilesrc.c:506
 msgid "No file name specified for reading."
 msgstr ""
 
-#: plugins/elements/gstfilesrc.c:528
+#: plugins/elements/gstfilesrc.c:527
 #, c-format
 msgid "Could not get info on \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstfilesrc.c:534
+#: plugins/elements/gstfilesrc.c:533
 #, c-format
 msgid "\"%s\" is a directory."
 msgstr ""
 
-#: plugins/elements/gstfilesrc.c:540
+#: plugins/elements/gstfilesrc.c:539
 #, c-format
 msgid "File \"%s\" is a socket."
 msgstr ""
 
-#: plugins/elements/gstidentity.c:602
+#: plugins/elements/gstidentity.c:641
 msgid "Failed after iterations as requested."
 msgstr ""
 
-#: plugins/elements/gsttypefindelement.c:204
+#: plugins/elements/gsttypefindelement.c:200
 msgid "caps"
 msgstr ""
 
-#: plugins/elements/gsttypefindelement.c:205
+#: plugins/elements/gsttypefindelement.c:201
 msgid "detected capabilities in stream"
 msgstr ""
 
-#: plugins/elements/gsttypefindelement.c:208
+#: plugins/elements/gsttypefindelement.c:204
 msgid "minimum"
 msgstr ""
 
-#: plugins/elements/gsttypefindelement.c:213
+#: plugins/elements/gsttypefindelement.c:209
 msgid "force caps"
 msgstr ""
 
-#: plugins/elements/gsttypefindelement.c:214
+#: plugins/elements/gsttypefindelement.c:210
 msgid "force caps without doing a typefind"
 msgstr ""
 
-#: plugins/elements/gsttypefindelement.c:1055
+#: plugins/elements/gsttypefindelement.c:932
+#: plugins/elements/gsttypefindelement.c:953
+msgid "Stream contains not enough data."
+msgstr ""
+
+#: plugins/elements/gsttypefindelement.c:1072
 msgid "Stream contains no data."
 msgstr ""
 
@@ -1247,66 +1261,70 @@
 msgstr ""
 
 #: tools/gst-inspect.c:294
-msgid "controllable"
+msgid "deprecated"
 msgstr ""
 
 #: tools/gst-inspect.c:298
-msgid "changeable in NULL, READY, PAUSED or PLAYING state"
-msgstr ""
-
-#: tools/gst-inspect.c:300
-msgid "changeable only in NULL, READY or PAUSED state"
+msgid "controllable"
 msgstr ""
 
 #: tools/gst-inspect.c:302
+msgid "changeable in NULL, READY, PAUSED or PLAYING state"
+msgstr ""
+
+#: tools/gst-inspect.c:304
+msgid "changeable only in NULL, READY or PAUSED state"
+msgstr ""
+
+#: tools/gst-inspect.c:306
 msgid "changeable only in NULL or READY state"
 msgstr ""
 
-#: tools/gst-inspect.c:907
+#: tools/gst-inspect.c:910
 msgid "Blacklisted files:"
 msgstr ""
 
-#: tools/gst-inspect.c:919 tools/gst-inspect.c:1008
+#: tools/gst-inspect.c:922 tools/gst-inspect.c:1011
 msgid "Total count: "
 msgstr ""
 
-#: tools/gst-inspect.c:920
+#: tools/gst-inspect.c:923
 #, c-format
 msgid "%d blacklisted file"
 msgid_plural "%d blacklisted files"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1009
+#: tools/gst-inspect.c:1012
 #, c-format
 msgid "%d plugin"
 msgid_plural "%d plugins"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1012
+#: tools/gst-inspect.c:1015
 #, c-format
 msgid "%d blacklist entry"
 msgid_plural "%d blacklist entries"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1017
+#: tools/gst-inspect.c:1020
 #, c-format
 msgid "%d feature"
 msgid_plural "%d features"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1452
+#: tools/gst-inspect.c:1456
 msgid "Print all elements"
 msgstr ""
 
-#: tools/gst-inspect.c:1454
+#: tools/gst-inspect.c:1458
 msgid "Print list of blacklisted files"
 msgstr ""
 
-#: tools/gst-inspect.c:1456
+#: tools/gst-inspect.c:1460
 msgid ""
 "Print a machine-parsable list of features the specified plugin or all "
 "plugins provide.\n"
@@ -1314,282 +1332,284 @@
 "automatic plugin installation mechanisms"
 msgstr ""
 
-#: tools/gst-inspect.c:1461
+#: tools/gst-inspect.c:1465
 msgid "List the plugin contents"
 msgstr ""
 
-#: tools/gst-inspect.c:1463
+#: tools/gst-inspect.c:1467
 msgid "Check if the specified element or plugin exists"
 msgstr ""
 
-#: tools/gst-inspect.c:1466
+#: tools/gst-inspect.c:1470
 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:1470
+#: tools/gst-inspect.c:1474
 msgid "Print supported URI schemes, with the elements that implement them"
 msgstr ""
 
-#: tools/gst-inspect.c:1613
+#: tools/gst-inspect.c:1617
 #, c-format
 msgid "Could not load plugin file: %s\n"
 msgstr ""
 
-#: tools/gst-inspect.c:1618
+#: tools/gst-inspect.c:1622
 #, c-format
 msgid "No such element or plugin '%s'\n"
 msgstr ""
 
-#: tools/gst-launch.c:248
+#: tools/gst-launch.c:251
 msgid "Index statistics"
 msgstr ""
 
-#: tools/gst-launch.c:531
+#: tools/gst-launch.c:550
 #, c-format
 msgid "Got message #%u from element \"%s\" (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:535
+#: tools/gst-launch.c:554
 #, c-format
 msgid "Got message #%u from pad \"%s:%s\" (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:539
+#: tools/gst-launch.c:558
 #, c-format
 msgid "Got message #%u from object \"%s\" (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:543
+#: tools/gst-launch.c:562
 #, c-format
 msgid "Got message #%u (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:575
+#: tools/gst-launch.c:594
 #, c-format
 msgid "Got EOS from element \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:584
+#: tools/gst-launch.c:603
 #, c-format
 msgid "FOUND TAG      : found by element \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:587
+#: tools/gst-launch.c:606
 #, c-format
 msgid "FOUND TAG      : found by pad \"%s:%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:590
+#: tools/gst-launch.c:609
 #, c-format
 msgid "FOUND TAG      : found by object \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:593
+#: tools/gst-launch.c:612
 msgid "FOUND TAG\n"
 msgstr ""
 
-#: tools/gst-launch.c:608
+#: tools/gst-launch.c:627
 #, c-format
 msgid "FOUND TOC      : found by element \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:611
+#: tools/gst-launch.c:630
 #, c-format
 msgid "FOUND TOC      : found by object \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:614
+#: tools/gst-launch.c:633
 msgid "FOUND TOC\n"
 msgstr ""
 
-#: tools/gst-launch.c:631
+#: tools/gst-launch.c:650
 #, c-format
 msgid ""
 "INFO:\n"
 "%s\n"
 msgstr ""
 
-#: tools/gst-launch.c:648
+#: tools/gst-launch.c:667
 #, c-format
 msgid "WARNING: from element %s: %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:683
+#: tools/gst-launch.c:702
 msgid "Prerolled, waiting for buffering to finish...\n"
 msgstr ""
 
-#: tools/gst-launch.c:687
+#: tools/gst-launch.c:706
 msgid "Prerolled, waiting for progress to finish...\n"
 msgstr ""
 
-#: tools/gst-launch.c:699
+#: tools/gst-launch.c:718
 msgid "buffering..."
 msgstr ""
 
-#: tools/gst-launch.c:710
+#: tools/gst-launch.c:729
 msgid "Done buffering, setting pipeline to PLAYING ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:718
+#: tools/gst-launch.c:737
 msgid "Buffering, setting pipeline to PAUSED ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:727
+#: tools/gst-launch.c:746
 msgid "Redistribute latency...\n"
 msgstr ""
 
-#: tools/gst-launch.c:738
+#: tools/gst-launch.c:757
 #, c-format
 msgid "Setting state to %s as requested by %s...\n"
 msgstr ""
 
-#: tools/gst-launch.c:754
+#: tools/gst-launch.c:773
 msgid "Interrupt: Stopping pipeline ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:783
+#: tools/gst-launch.c:802
 #, c-format
 msgid "Progress: (%s) %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:796
+#: tools/gst-launch.c:815
 #, c-format
 msgid "Missing element: %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:810
+#: tools/gst-launch.c:829
 #, c-format
 msgid "Got context from element '%s': %s=%s\n"
 msgstr ""
 
-#: tools/gst-launch.c:897
+#: tools/gst-launch.c:919
 msgid "Output tags (also known as metadata)"
 msgstr ""
 
-#: tools/gst-launch.c:899
+#: tools/gst-launch.c:921
 msgid "Output TOC (chapters and editions)"
 msgstr ""
 
-#: tools/gst-launch.c:901
+#: tools/gst-launch.c:923
 msgid "Output status information and property notifications"
 msgstr ""
 
-#: tools/gst-launch.c:903
+#: tools/gst-launch.c:925
 msgid "Do not print any progress information"
 msgstr ""
 
-#: tools/gst-launch.c:905
+#: tools/gst-launch.c:927
 msgid "Output messages"
 msgstr ""
 
-#: tools/gst-launch.c:907
-msgid "Do not output status information of TYPE"
+#: tools/gst-launch.c:929
+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:907
-msgid "TYPE1,TYPE2,..."
+#: tools/gst-launch.c:931
+msgid "PROPERTY-NAME"
 msgstr ""
 
-#: tools/gst-launch.c:909
+#: tools/gst-launch.c:933
 msgid "Do not install a fault handler"
 msgstr ""
 
-#: tools/gst-launch.c:911
+#: tools/gst-launch.c:935
 msgid "Force EOS on sources before shutting the pipeline down"
 msgstr ""
 
-#: tools/gst-launch.c:914
+#: tools/gst-launch.c:938
 msgid "Gather and print index statistics"
 msgstr ""
 
-#: tools/gst-launch.c:977
+#: tools/gst-launch.c:1001
 #, c-format
 msgid "ERROR: pipeline could not be constructed: %s.\n"
 msgstr ""
 
-#: tools/gst-launch.c:981
+#: tools/gst-launch.c:1005
 msgid "ERROR: pipeline could not be constructed.\n"
 msgstr ""
 
-#: tools/gst-launch.c:985
+#: tools/gst-launch.c:1009
 #, c-format
 msgid "WARNING: erroneous pipeline: %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:1001
+#: tools/gst-launch.c:1025
 msgid "ERROR: the 'pipeline' element wasn't found.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1034 tools/gst-launch.c:1134
+#: tools/gst-launch.c:1056 tools/gst-launch.c:1156
 msgid "Setting pipeline to PAUSED ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1039
+#: tools/gst-launch.c:1061
 msgid "ERROR: Pipeline doesn't want to pause.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1044
+#: tools/gst-launch.c:1066
 msgid "Pipeline is live and does not need PREROLL ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1048
+#: tools/gst-launch.c:1070
 msgid "Pipeline is PREROLLING ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1051 tools/gst-launch.c:1065
+#: tools/gst-launch.c:1073 tools/gst-launch.c:1087
 msgid "ERROR: pipeline doesn't want to preroll.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1058
+#: tools/gst-launch.c:1080
 msgid "Pipeline is PREROLLED ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1071
+#: tools/gst-launch.c:1093
 msgid "Setting pipeline to PLAYING ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1078
+#: tools/gst-launch.c:1100
 msgid "ERROR: pipeline doesn't want to play.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1096
+#: tools/gst-launch.c:1118
 msgid "EOS on shutdown enabled -- Forcing EOS on the pipeline\n"
 msgstr ""
 
-#: tools/gst-launch.c:1100
+#: tools/gst-launch.c:1122
 msgid "EOS on shutdown enabled -- waiting for EOS after Error\n"
 msgstr ""
 
-#: tools/gst-launch.c:1103
+#: tools/gst-launch.c:1125
 msgid "Waiting for EOS...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1110
+#: tools/gst-launch.c:1132
 msgid "EOS received - stopping pipeline...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1114
+#: tools/gst-launch.c:1136
 msgid "Interrupt while waiting for EOS - stopping pipeline...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1119
+#: tools/gst-launch.c:1141
 msgid "An error happened while waiting for EOS\n"
 msgstr ""
 
-#: tools/gst-launch.c:1130
+#: tools/gst-launch.c:1152
 msgid "Execution ended after %"
 msgstr ""
 
-#: tools/gst-launch.c:1146
+#: tools/gst-launch.c:1168
 msgid "Setting pipeline to READY ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1158
+#: tools/gst-launch.c:1180
 msgid "Setting pipeline to NULL ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1162
+#: tools/gst-launch.c:1184
 msgid "Freeing pipeline ...\n"
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index c6599ff..d0ff9d5 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index f2bd8ef..3c9d731 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2012-05-25 16:47+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -925,6 +925,12 @@
 "Ograniči dozvoljene mogućnosti (NULL znači ANY). Postavljanje ovog svojstva "
 "prosljeđuje referencu navedenom GstCaps objektu."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Nije naveden privremeni direktorij."
 
@@ -991,6 +997,10 @@
 msgid "force caps without doing a typefind"
 msgstr "prisiljava mogućnosti bez traženja vrste"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Tok podataka ne sadrži podatke."
+
 msgid "Stream contains no data."
 msgstr "Tok podataka ne sadrži podatke."
 
@@ -1003,6 +1013,9 @@
 msgid "writable"
 msgstr "zapisivo"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "upravljivo"
 
@@ -1202,11 +1215,13 @@
 msgid "Output messages"
 msgstr "Izlazne poruke"
 
-msgid "Do not output status information of TYPE"
-msgstr "Ne ispisuj informacije navedene VRSTE o izlaznom stanju"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "VRSTA1,VRSTA2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Nemoj instalirati rukovatelj grešaka"
@@ -1287,6 +1302,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Oslobađam cjevovod ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Ne ispisuj informacije navedene VRSTE o izlaznom stanju"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "VRSTA1,VRSTA2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "veza bez izvornog elementa"
 
diff --git a/po/hu.gmo b/po/hu.gmo
index 2de743b..7af1130 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 8d4d690..5135f13 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -3,20 +3,20 @@
 # This file is distributed under the same license as the gstreamer package.
 #
 # Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2007, 2008, 2009, 2010, 2012.
-# Balázs Úr <urbalazs@gmail.com>, 2014.
+# Balázs Úr <urbalazs@gmail.com>, 2014, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-05-23 21:08+0200\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-14 08:31+0200\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
 "Language: hu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 1.2\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
 msgid "Print the GStreamer version"
@@ -927,6 +927,12 @@
 "Az engedélyezhető képességek korlátozása (a NULL, ANY-t jelent). Ezen "
 "tulajdonság beállítása a biztosított GstCaps objektumra hivatkozik."
 
+msgid "Caps Change Mode"
+msgstr "Képességek változtatása mód"
+
+msgid "Filter caps change behaviour"
+msgstr "Képességek változtatása viselkedés szűrése"
+
 msgid "No Temp directory specified."
 msgstr "Nincs megadva ideiglenes könyvtár."
 
@@ -993,6 +999,9 @@
 msgid "force caps without doing a typefind"
 msgstr "nagybetűk kényszerítése betűkeresés nélkül"
 
+msgid "Stream contains not enough data."
+msgstr "Az adatfolyam nem tartalmaz elég adatot."
+
 msgid "Stream contains no data."
 msgstr "Az adatfolyam nem tartalmaz adatokat."
 
@@ -1005,6 +1014,9 @@
 msgid "writable"
 msgstr "írható"
 
+msgid "deprecated"
+msgstr "elavult"
+
 msgid "controllable"
 msgstr "vezérelhető"
 
@@ -1200,11 +1212,13 @@
 msgid "Output messages"
 msgstr "Kimeneti üzenetek"
 
-msgid "Do not output status information of TYPE"
-msgstr "Ne írjon ki a TÍPUS típus állapotinformációit"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TÍPUS1,TÍPUS2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Ne telepítsen hibakezelőt"
@@ -1283,6 +1297,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Adatcsatorna felszabadítása…\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Ne írjon ki a TÍPUS típus állapotinformációit"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TÍPUS1,TÍPUS2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "link forráselem nélkül"
 
diff --git a/po/id.gmo b/po/id.gmo
index 43eb251..75a7fa0 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 73c784c..43c41cf 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -930,6 +930,12 @@
 "Larang kemampuan yang mungkin diizinkan (KOSONG berarti APAPUN). Pengaturan "
 "properti ini bersumber pada objek GstCaps yang disediakan."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Tak ada direktori Temp yang ditentukan."
 
@@ -996,6 +1002,10 @@
 msgid "force caps without doing a typefind"
 msgstr "paksa huruf tanpa melakukan pencarian tipe"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Arus tidak berisi data."
+
 msgid "Stream contains no data."
 msgstr "Arus tidak berisi data."
 
@@ -1008,6 +1018,9 @@
 msgid "writable"
 msgstr "dapat ditulis"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "dapat dikendalikan"
 
@@ -1201,11 +1214,13 @@
 msgid "Output messages"
 msgstr "Pesan keluaran"
 
-msgid "Do not output status information of TYPE"
-msgstr "Jangan keluarkan informasi status dari TIPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPE1, TIPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Jangan instal penanganan galat"
@@ -1284,6 +1299,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Membebaskan baris pipa ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Jangan keluarkan informasi status dari TIPE"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPE1, TIPE2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "taut tanpa elemen sumber"
 
diff --git a/po/it.gmo b/po/it.gmo
index a070490..d502773 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 08bd56a..b849988 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -1091,6 +1091,12 @@
 "Impostando questa proprietà si prende un riferimento all'oggetto GstCaps "
 "fornito."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Nessuna directory temporanea specificata."
 
@@ -1157,6 +1163,10 @@
 msgid "force caps without doing a typefind"
 msgstr "forza i caps senza eseguire un typefind"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Lo stream non contiene dati."
+
 msgid "Stream contains no data."
 msgstr "Lo stream non contiene dati."
 
@@ -1169,6 +1179,9 @@
 msgid "writable"
 msgstr "scrivibile"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "controllabile"
 
@@ -1385,12 +1398,13 @@
 msgid "Output messages"
 msgstr "Stampa i messaggi"
 
-# -X, --exclude=TIPO1,TIPO2,...
-msgid "Do not output status information of TYPE"
-msgstr "Non stampa le informazioni di stato per TIPO"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPO1,TIPO2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 # -f, --no-fault
 msgid "Do not install a fault handler"
@@ -1479,6 +1493,13 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Esecuzione di free sulla pipeline...\n"
 
+# -X, --exclude=TIPO1,TIPO2,...
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Non stampa le informazioni di stato per TIPO"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPO1,TIPO2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "collegamento senza elemento sorgente"
 
diff --git a/po/ja.gmo b/po/ja.gmo
index 9b68cad..70e5e80 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 2131004..c6c84b5 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -894,6 +894,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -960,6 +966,10 @@
 msgid "force caps without doing a typefind"
 msgstr ""
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "ストリームでデータが含まれていません"
+
 msgid "Stream contains no data."
 msgstr "ストリームでデータが含まれていません"
 
@@ -972,6 +982,9 @@
 msgid "writable"
 msgstr "書き込み可能"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "コントロール可能"
 
@@ -1165,11 +1178,13 @@
 msgid "Output messages"
 msgstr "出力メッセージ"
 
-msgid "Do not output status information of TYPE"
-msgstr "TYPE のステータス情報を出力しない"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "フォールトハンドラをインストールしない"
@@ -1251,6 +1266,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "パイプラインを解放 (FREEING) しています...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "TYPE のステータス情報を出力しない"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,..."
+
 #~ msgid "Error re-scanning registry %s: %s"
 #~ msgstr "レジストリ %s の再スキャン中にエラーが発生しました: %s"
 
diff --git a/po/lt.gmo b/po/lt.gmo
index 2b9ccea..3729910 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index aa7d3b3..a9281b3 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -936,6 +936,12 @@
 "Riboti galimas leidžiamas galimybes (NULL – BET KOKIAS). Nustatant šią "
 "savybę nurodoma į pateiktą GstCaps objektą."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Nenurodytas laikinas katalogas."
 
@@ -1002,6 +1008,10 @@
 msgid "force caps without doing a typefind"
 msgstr "priverstinai naudoti galimybes neatliekant tipo paieškos"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Sraute nėra duomenų."
+
 msgid "Stream contains no data."
 msgstr "Sraute nėra duomenų."
 
@@ -1014,6 +1024,9 @@
 msgid "writable"
 msgstr "rašomas"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "valdomas"
 
@@ -1214,11 +1227,13 @@
 msgid "Output messages"
 msgstr "Išvesti pranešimus"
 
-msgid "Do not output status information of TYPE"
-msgstr "Neišvesti šio TIPO būsenos informacijos"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPAS1,TIPAS2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Neįdiegti klaidų apdorojimo posistemės"
@@ -1299,6 +1314,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Atlaisvinamas konvejeris...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Neišvesti šio TIPO būsenos informacijos"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPAS1,TIPAS2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "saitas be šaltinio elemento"
 
diff --git a/po/nb.gmo b/po/nb.gmo
index 27c4f0e..6c35127 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 8f5f167..084bd36 100644
--- a/po/nb.po
+++ b/po/nb.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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2010-10-24 21:36+0200\n"
 "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -899,6 +899,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -966,6 +972,10 @@
 msgid "force caps without doing a typefind"
 msgstr ""
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Strømmen inneholder ikke data."
+
 msgid "Stream contains no data."
 msgstr "Strømmen inneholder ikke data."
 
@@ -978,6 +988,9 @@
 msgid "writable"
 msgstr "skrivbar"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "kontrollerbar"
 
@@ -1168,11 +1181,13 @@
 msgid "Output messages"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
 msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr ""
@@ -1251,5 +1266,8 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Frigjør rør ...\n"
 
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,..."
+
 #~ msgid "FILE"
 #~ msgstr "FIL"
diff --git a/po/nl.gmo b/po/nl.gmo
index 3cec84e..c7f4fa3 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index bd26311..ecbb086 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,17 +1,17 @@
-# translation of gstreamer-1.3.2.po to Dutch
+# translation of gstreamer-1.5.1.po to Dutch
 # Dutch translation of gstreamer
 # Copyright (C) 2003-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gstreamer package.
 #
 # Thomas Vander Stichele <thomas@apestaart.org>, 2004.
 # Taco Witte <tcwitte@cs.uu.nl>, 2006.
-# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
+# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-05-22 00:46+0200\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-13 18:14+0200\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "Language: nl\n"
@@ -940,6 +940,12 @@
 "instellen  van deze eigenschap vereist een referentie naar het gegeven "
 "GstCaps-object."
 
+msgid "Caps Change Mode"
+msgstr "Modus hoofd- kleine letters veranderen"
+
+msgid "Filter caps change behaviour"
+msgstr "Gedrag van hoofd- kleine letters veranderen filteren"
+
 msgid "No Temp directory specified."
 msgstr "Geen tijdelijke map opgegeven."
 
@@ -1006,6 +1012,9 @@
 msgid "force caps without doing a typefind"
 msgstr "forceer mogelijkheden zonder een \"typefind\" te doen"
 
+msgid "Stream contains not enough data."
+msgstr "Stream bevat niet genoeg gegevens."
+
 msgid "Stream contains no data."
 msgstr "Stroom zonder gegevens."
 
@@ -1018,6 +1027,9 @@
 msgid "writable"
 msgstr "schrijfbaar"
 
+msgid "deprecated"
+msgstr "verouderd"
+
 msgid "controllable"
 msgstr "controleerbaar"
 
@@ -1215,11 +1227,13 @@
 msgid "Output messages"
 msgstr "Uitvoer"
 
-msgid "Do not output status information of TYPE"
-msgstr "Statusinformatie van soort SOORT niet weergeven"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "SOORT1,SOORT2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Geen foutafhandelaar installeren"
@@ -1298,6 +1312,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Pijplijn wordt vrijgemaakt ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Statusinformatie van soort SOORT niet weergeven"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "SOORT1,SOORT2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "verbinding zonder bronelement"
 
diff --git a/po/pl.gmo b/po/pl.gmo
index 68f8dfd..59d1c72 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 6f0e3d3..b76f436 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,13 +1,13 @@
 # Polish translation for gstreamer.
 # This file is distributed under the same license as the gstreamer package.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2014.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2015.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-05-22 18:22+0200\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-10 22:04+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "Language: pl\n"
@@ -932,6 +932,12 @@
 "Ograniczenie możliwych dozwolonych możliwości (NULL oznacza WSZYSTKIE). "
 "Ustawienie tej właściwości odwołuje się do przekazanego obiektu GstCaps."
 
+msgid "Caps Change Mode"
+msgstr "Tryb zmiany możliwości"
+
+msgid "Filter caps change behaviour"
+msgstr "Filtrowanie zachowania zmiany możliwości"
+
 msgid "No Temp directory specified."
 msgstr "Nie podano katalogu tymczasowego."
 
@@ -998,6 +1004,9 @@
 msgid "force caps without doing a typefind"
 msgstr "wymuszenie możliwości bez sprawdzania"
 
+msgid "Stream contains not enough data."
+msgstr "Strumień nie zawiera wystarczająco dużo danych."
+
 msgid "Stream contains no data."
 msgstr "Strumień nie zawiera danych."
 
@@ -1010,6 +1019,9 @@
 msgid "writable"
 msgstr "zapis"
 
+msgid "deprecated"
+msgstr "przestarzałe"
+
 msgid "controllable"
 msgstr "sterowanie"
 
@@ -1211,11 +1223,13 @@
 msgid "Output messages"
 msgstr "Wypisywanie komunikatów"
 
-msgid "Do not output status information of TYPE"
-msgstr "Nie wypisywanie informacji o stanie tego RODZAJU"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "RODZAJ1,RODZAJ2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Nie instalowanie obsługi błędów"
@@ -1293,3 +1307,9 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Zwalnianie potoku...\n"
+
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Nie wypisywanie informacji o stanie tego RODZAJU"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "RODZAJ1,RODZAJ2,..."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 2789c0a..f88beca 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 a960d7e..e577bb3 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -17,7 +17,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2013-12-29 18:20-0200\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -949,6 +949,12 @@
 "Restrinja as possíveis capacidades permitidas (NULL = ANY). Definindo essa "
 "propriedade é levada uma referência ao objeto GstCaps fornecido."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Nenhum diretório temporário especificado."
 
@@ -1015,6 +1021,10 @@
 msgid "force caps without doing a typefind"
 msgstr "forçar Caps sem usar o typefind"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "O fluxo não contém dados."
+
 msgid "Stream contains no data."
 msgstr "O fluxo não contém dados."
 
@@ -1027,6 +1037,9 @@
 msgid "writable"
 msgstr "gravável"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "controlável"
 
@@ -1226,11 +1239,13 @@
 msgid "Output messages"
 msgstr "Exibir mensagens"
 
-msgid "Do not output status information of TYPE"
-msgstr "Não é possível obter informações do estado de saída do TIPO"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIPO1,TIPO2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Não instale um manipulador de falhas"
@@ -1317,6 +1332,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Liberando a fila de processamento...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Não é possível obter informações do estado de saída do TIPO"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIPO1,TIPO2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "vínculo sem o elemento fonte"
 
diff --git a/po/ro.gmo b/po/ro.gmo
index 0c413c8..2ae3c78 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index c101532..390b4ba 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -954,6 +954,12 @@
 "Restricționează capacitățile permise (NULL înseamnă ORICE). Definirea "
 "acestei proprietăți preia o referință către obiectul GstCaps furnizat."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Niciun director temporar specificat."
 
@@ -1020,6 +1026,10 @@
 msgid "force caps without doing a typefind"
 msgstr "forțează caps fără a efectua un typefind"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Fluxul nu conține date."
+
 msgid "Stream contains no data."
 msgstr "Fluxul nu conține date."
 
@@ -1032,6 +1042,9 @@
 msgid "writable"
 msgstr "se poate scrie"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "se poate controla"
 
@@ -1233,11 +1246,13 @@
 msgid "Output messages"
 msgstr "Mesaje de ieșire"
 
-msgid "Do not output status information of TYPE"
-msgstr "Nu scoate informații despre stările de TIPUL"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TIP1,TIP2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Nu instala un gestionar de erori"
@@ -1318,6 +1333,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Se eliberează linia de asamblare...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Nu scoate informații despre stările de TIPUL"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TIP1,TIP2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "legătură fără un element sursă"
 
diff --git a/po/ru.gmo b/po/ru.gmo
index 89b1c71..e3c7f00 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 5db8141..fba86b8 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,13 +4,13 @@
 # Peter Astakhov <astakhovp@mail.ru>, 2005.
 # Артём Попов <artfwo@gmail.com>, 2009.
 # Pavel Maryanov <acid_jack@ukr.net>, 2009.
-# Yuri Kozlov <yuray@komyakino.ru>, 2010, 2011, 2012, 2013, 2014.
+# Yuri Kozlov <yuray@komyakino.ru>, 2010, 2011, 2012, 2013, 2014, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-05-22 20:12+0400\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-13 11:32+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
 "Language: ru\n"
@@ -931,6 +931,12 @@
 "Ограничить разрешённые возможности (NULL равносильно ANY). Установка этого "
 "свойства увеличивает количество ссылок для предоставленного объекта GstCaps."
 
+msgid "Caps Change Mode"
+msgstr "Режим изменения возможностей"
+
+msgid "Filter caps change behaviour"
+msgstr "Фильтровать поведение изменения возможностей"
+
 msgid "No Temp directory specified."
 msgstr "Не задана временный (Temp) каталог."
 
@@ -997,6 +1003,9 @@
 msgid "force caps without doing a typefind"
 msgstr "форсировать возможности без выполнения typefind"
 
+msgid "Stream contains not enough data."
+msgstr "Поток содержит недостаточно данных."
+
 msgid "Stream contains no data."
 msgstr "Поток не содержит данных."
 
@@ -1009,6 +1018,9 @@
 msgid "writable"
 msgstr "записываемый"
 
+msgid "deprecated"
+msgstr "устаревший"
+
 msgid "controllable"
 msgstr "контролируемый"
 
@@ -1209,11 +1221,13 @@
 msgid "Output messages"
 msgstr "Выводить сообщения"
 
-msgid "Do not output status information of TYPE"
-msgstr "Не выводить информацию о состоянии ТИПА"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "ТИП1, ТИП2,…"
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Не устанавливать обработчик ошибок"
@@ -1292,6 +1306,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Освобождение конвейера…\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Не выводить информацию о состоянии ТИПА"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "ТИП1, ТИП2,…"
+
 #~ msgid "link without source element"
 #~ msgstr "попытка соединения без элемента-источника"
 
diff --git a/po/rw.gmo b/po/rw.gmo
index a93935e..ad3bd7e 100644
--- a/po/rw.gmo
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
index 8dd6b21..1a77d9e 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -1093,6 +1093,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -1174,6 +1180,10 @@
 msgstr ""
 
 #, fuzzy
+msgid "Stream contains not enough data."
+msgstr "iyi Ibyatanzwe"
+
+#, fuzzy
 msgid "Stream contains no data."
 msgstr "iyi Ibyatanzwe"
 
@@ -1187,6 +1197,9 @@
 msgid "writable"
 msgstr "umutwe"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr ""
 
@@ -1380,11 +1393,12 @@
 msgid "Output messages"
 msgstr ""
 
-#, fuzzy
-msgid "Do not output status information of TYPE"
-msgstr "OYA Ibisohoka Imimerere Ibisobanuro Bya"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
 msgstr ""
 
 #, fuzzy
@@ -1471,6 +1485,10 @@
 msgstr ""
 
 #, fuzzy
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "OYA Ibisohoka Imimerere Ibisobanuro Bya"
+
+#, fuzzy
 #~ msgid "link without source element"
 #~ msgstr "Ihuza Inkomoko Ikigize:"
 
diff --git a/po/sk.gmo b/po/sk.gmo
index 767311f..c12adf3 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index ff0f8fc..0c85fb3 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2014-01-30 10:24+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -932,6 +932,12 @@
 "Obmedziť možné povolené schopnosti (NULOVÉ znamená ĽUBOVOĽNÉ). Nastavenie "
 "tejto vlastnosti berie referenciu na zadaný objekt GstCaps."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Nebol určený dočasný priečinok (Temp)."
 
@@ -998,6 +1004,10 @@
 msgid "force caps without doing a typefind"
 msgstr "vynútiť veľké písmená bez kontroly"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Prúd neobsahuje údaje."
+
 msgid "Stream contains no data."
 msgstr "Prúd neobsahuje údaje."
 
@@ -1010,6 +1020,9 @@
 msgid "writable"
 msgstr "zapisovateľné"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "ovládateľné"
 
@@ -1211,11 +1224,13 @@
 msgid "Output messages"
 msgstr "Vypísať správy"
 
-msgid "Do not output status information of TYPE"
-msgstr "Nevypisovať informácie o stave TYPU"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYP1,TYP2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Neinštalovať obsluhu výnimiek"
@@ -1297,6 +1312,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Uvoľňujem rúru ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Nevypisovať informácie o stave TYPU"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYP1,TYP2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "pripojenie bez zdrojového prvku"
 
diff --git a/po/sl.gmo b/po/sl.gmo
index ff7118b..c24e44a 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index b077de4..083a1f1 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -929,6 +929,12 @@
 "Omeji možne dovoljene zmožnosti (NULL pomeni ANY, vse). S tem naslavljate "
 "priloženi predmet GstCaps."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Začasna mapa ni določena."
 
@@ -995,6 +1001,10 @@
 msgid "force caps without doing a typefind"
 msgstr "vsili velike črke brez potrjevanja pisave"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Pretok ne vsebuje podatkov."
+
 msgid "Stream contains no data."
 msgstr "Pretok ne vsebuje podatkov."
 
@@ -1007,6 +1017,9 @@
 msgid "writable"
 msgstr "zapisljivo"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "nadzorljivo"
 
@@ -1212,11 +1225,13 @@
 msgid "Output messages"
 msgstr "Izhodna sporočila"
 
-msgid "Do not output status information of TYPE"
-msgstr "Ne izpiši podrobnosti stanja VRSTE"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "VRSTA1, VRSTA2 ..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Na namesti ročnika napak"
@@ -1295,6 +1310,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Sproščanje cevovoda ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Ne izpiši podrobnosti stanja VRSTE"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "VRSTA1, VRSTA2 ..."
+
 #~ msgid "link without source element"
 #~ msgstr "povezava brez predmeta vira"
 
diff --git a/po/sq.gmo b/po/sq.gmo
index bd688ad..29e0169 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index a5dbd72..805a91b 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -947,6 +947,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr ""
 
@@ -1015,6 +1021,10 @@
 msgstr ""
 
 #, fuzzy
+msgid "Stream contains not enough data."
+msgstr "albumi që përmban këtë të dhënë"
+
+#, fuzzy
 msgid "Stream contains no data."
 msgstr "albumi që përmban këtë të dhënë"
 
@@ -1028,6 +1038,9 @@
 msgid "writable"
 msgstr "titulli"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr ""
 
@@ -1218,11 +1231,13 @@
 msgid "Output messages"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
-msgstr "Mos jep informacionin e gjendjes së LLOJIT"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "LLOJI1,LLOJI2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Mos instalo një ushqyes të dëmtuar"
@@ -1304,6 +1319,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "DUKE ZBATUAR pipeline ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Mos jep informacionin e gjendjes së LLOJIT"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "LLOJI1,LLOJI2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "lidhje ma element burues"
 
diff --git a/po/sr.gmo b/po/sr.gmo
index 6afec5a..e3e2beb 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index e1bc31b..c983708 100644
--- a/po/sr.po
+++ b/po/sr.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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2014-06-18 20:12+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -930,6 +930,12 @@
 "Умањује могуће допуштене могућности (НИШТА значи БИЛО КОЈА). Постављање овог "
 "својства поставља као орјентир придодати објекат Гст могућности."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Није наведен привремени директоријум."
 
@@ -997,6 +1003,10 @@
 msgid "force caps without doing a typefind"
 msgstr "приморај могућности без обављања претраге уписа"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Овај ток не садржи податке."
+
 msgid "Stream contains no data."
 msgstr "Овај ток не садржи податке."
 
@@ -1009,6 +1019,9 @@
 msgid "writable"
 msgstr "уписив"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "управљив"
 
@@ -1210,11 +1223,13 @@
 msgid "Output messages"
 msgstr "Излазне поруке"
 
-msgid "Do not output status information of TYPE"
-msgstr "Не исписује податке о стању за ВРСТУ"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "ВРСТА1,ВРСТА2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Неће инсталирати руковаоца грешкама"
@@ -1293,6 +1308,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Ослобађам спојку низа...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Не исписује податке о стању за ВРСТУ"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "ВРСТА1,ВРСТА2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "веза без изворног елемента"
 
diff --git a/po/sv.gmo b/po/sv.gmo
index c7e8410..2b3c8aa 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 83e6acb..dceaa14 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.3.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
 "PO-Revision-Date: 2014-07-11 02:52+0200\n"
 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -929,6 +929,12 @@
 "Begränsa de möjliga tillåtna förmågorna (NULL betyder ANY). Inställning av "
 "egenskapen tar en referens till det angivna GstCaps-objektet."
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "Ingen temporärkatalog angiven."
 
@@ -995,6 +1001,10 @@
 msgid "force caps without doing a typefind"
 msgstr "tvinga förmågor utan att göra en typefind"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Strömmen innehåller inget data."
+
 msgid "Stream contains no data."
 msgstr "Strömmen innehåller inget data."
 
@@ -1007,6 +1017,9 @@
 msgid "writable"
 msgstr "skrivbar"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "kontrollerbar"
 
@@ -1207,11 +1220,13 @@
 msgid "Output messages"
 msgstr "Mata ut meddelanden"
 
-msgid "Do not output status information of TYPE"
-msgstr "Mata inte ut statusinformation av TYP"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYP1,TYP2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Installera inte en felhanterare"
@@ -1289,3 +1304,9 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Frigör rörledning ...\n"
+
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Mata inte ut statusinformation av TYP"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYP1,TYP2,..."
diff --git a/po/tr.gmo b/po/tr.gmo
index 7a92a66..95a595d 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 463c379..6bd6766 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,19 +1,22 @@
 # translation of GStreamer to Turkish
 # Copyright (C) 2004 Free Software Foundation, Inc.
-# Baris Cicek <baris@teamforce.name.tr>, 2004.
+# This file is distributed under the same license as the gstreamer package.
 #
+# Baris Cicek <baris@teamforce.name.tr>, 2004, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 0.8.0\n"
+"Project-Id-Version: gstreamer 1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2004-04-03 03:14+0300\n"
-"Last-Translator: Baris Cicek <baris@teamforce.name.tr>\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
 "Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.5\n"
 
 msgid "Print the GStreamer version"
 msgstr "GStreamer sürünümü yazdır"
@@ -24,12 +27,11 @@
 msgid "Print available debug categories and exit"
 msgstr "Geçerli hata ayıklama sınıflarını yazdır ve çık"
 
-#, fuzzy
 msgid ""
 "Default debug level from 1 (only error) to 9 (anything) or 0 for no output"
 msgstr ""
-"Öntanımlı hata ayıklama seviyesi 1'den (sadece hatalar) 5'e (her şey) kadar "
-"ya da çıktı olmaması için 0"
+"Öntanımlı hata ayıklama seviyesi 1'den (sadece hatalar) 9'a (her şey) ya da "
+"çıktı olmaması için 0"
 
 msgid "LEVEL"
 msgstr "SEVİYE"
@@ -51,6 +53,8 @@
 "Changes coloring mode of the debug log. Possible modes: off, on, disable, "
 "auto, unix"
 msgstr ""
+"Hata ayıklama günlüklerini renklendirme kipini değiştirir. Olası kipler: "
+"kapalı, açık, devredışı, otomatik, unix"
 
 msgid "Disable debugging"
 msgstr "Hata ayıklamayı kapat"
@@ -59,18 +63,17 @@
 msgstr "Ayrıntılı eklenti yükleme detaylarını etkinleştir"
 
 msgid "Colon-separated paths containing plugins"
-msgstr ""
+msgstr "Eklentileri içeren iki nokta üst üste ile ayrılmış yollar"
 
 msgid "PATHS"
 msgstr "YOLLAR"
 
-#, fuzzy
 msgid ""
 "Comma-separated list of plugins to preload in addition to the list stored in "
 "environment variable GST_PLUGIN_PATH"
 msgstr ""
 "Çevre değişkeni GST_PLUGIN_PATH içinde saklanan listeye ek olarak önceden "
-"yüklenecek eklentilerin virgün ile ayırılmış listesi"
+"yüklenecek virgün ile ayrılmış eklenti listesi"
 
 msgid "PLUGINS"
 msgstr "EKLENTİLER"
@@ -79,81 +82,71 @@
 msgstr "Eklenti yüklenirken kesimleme hatalarını yakalamayı kapat"
 
 msgid "Disable updating the registry"
-msgstr ""
+msgstr "Kayıt defteri güncellemeyi devre dışı bırak"
 
 msgid "Disable spawning a helper process while scanning the registry"
 msgstr ""
+"Kayıt defteri taranırken yardımcı bir işlem oluşturmayı devre dışı bırak"
 
 msgid "GStreamer Options"
-msgstr ""
+msgstr "GStreamer Seçenekleri"
 
-#, fuzzy
 msgid "Show GStreamer Options"
-msgstr "GStreamer sürünümü yazdır"
+msgstr "GStreamer Seçeneklerini Göster"
 
 msgid "Unknown option"
-msgstr ""
+msgstr "Bilinmeyen seçenek"
 
 msgid "GStreamer encountered a general core library error."
 msgstr "GStreamer genel temel kütüphane hatası ile karşılaştı."
 
-#, fuzzy
 msgid ""
 "GStreamer developers were too lazy to assign an error code to this error."
 msgstr ""
-"GStreamer geliştiricileri bu hataya hata kodu vermeyecek kadar "
-"tembelmişler.  Lütfen hata bildiriminde bulunun."
+"GStreamer geliştiricileri bu hata için bir hata kodu atamaya üşenmişler."
 
-#, fuzzy
 msgid "Internal GStreamer error: code not implemented."
-msgstr ""
-"Dahili GStreamer hatası: kod tamamlanmamış.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: kod tamamlanmamış."
 
 msgid ""
 "GStreamer error: state change failed and some element failed to post a "
 "proper error message with the reason for the failure."
 msgstr ""
+"GStreamer hatası: durum değişikliği başarısız oldu ve bazı öge başarısızlık "
+"nedeni ile ilgili uygun bir hata iletisi göndermede başarısız oldu."
 
-#, fuzzy
 msgid "Internal GStreamer error: pad problem."
-msgstr "Dahili GStreamer hatası: doldurma sorunu.  Hata bildiriminde bulunun."
+msgstr "Dahili GStreamer hatası: dolgu problemi."
 
-#, fuzzy
 msgid "Internal GStreamer error: thread problem."
-msgstr "Dahili GStreamer hatası: dallanma sorunu.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: iş parçacığı sorunu."
 
-#, fuzzy
 msgid "GStreamer error: negotiation problem."
-msgstr "Dahili GStreamer hatası: uzlaşma sorunu.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: uzlaşma sorunu."
 
-#, fuzzy
 msgid "Internal GStreamer error: event problem."
-msgstr "Dahili GStreamer hatası: olay sorunu.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: olay sorunu."
 
-#, fuzzy
 msgid "Internal GStreamer error: seek problem."
-msgstr "Dahili GStreamer hatası: atlama sorunu.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: arama sorunu."
 
-#, fuzzy
 msgid "Internal GStreamer error: caps problem."
-msgstr ""
-"Dahili GStreamer hatası: kabiliyetler sorunu.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: kapasite sorunu."
 
-#, fuzzy
 msgid "Internal GStreamer error: tag problem."
-msgstr "Dahili GStreamer hatası: etiket sorunu.  Hata bildiriminde bulunun."
+msgstr "İç GStreamer hatası: etiket sorunu."
 
 msgid "Your GStreamer installation is missing a plug-in."
-msgstr ""
+msgstr "GStreamer kurulumunuzda bir eklenti eksik."
 
-#, fuzzy
 msgid "GStreamer error: clock problem."
-msgstr "Dahili GStreamer hatası: atlama sorunu.  Hata bildiriminde bulunun."
+msgstr "GStreamer hatası: saat sorunu."
 
 msgid ""
 "This application is trying to use GStreamer functionality that has been "
 "disabled."
 msgstr ""
+"Bu uygulama devre dışı bırakılmış GStreamer işlevini kullanmayı deniyor."
 
 msgid "GStreamer encountered a general supporting library error."
 msgstr "GStreamer genel kütüphane destekleme hatası ile karşılaştı."
@@ -164,16 +157,14 @@
 msgid "Could not close supporting library."
 msgstr "Destekleyici kütüphane kapatılamadı."
 
-#, fuzzy
 msgid "Could not configure supporting library."
-msgstr "Destekleyici kütüphane kapatılamadı."
+msgstr "Desteklenen kütüphane yapılandırılamadı."
 
 msgid "Encoding error."
-msgstr ""
+msgstr "Kodlama hatası."
 
-#, fuzzy
 msgid "GStreamer encountered a general resource error."
-msgstr "GStreamer genel temel kütüphane hatası ile karşılaştı."
+msgstr "GStreamer genel bir kaynak hatası ile karşılaştı."
 
 msgid "Resource not found."
 msgstr "Kaynak bulunamadı."
@@ -209,15 +200,13 @@
 msgstr "Kaynağa değerler atanamadı ya da alınamadı."
 
 msgid "No space left on the resource."
-msgstr ""
+msgstr "Kaynakta boş alan kalmadı."
 
-#, fuzzy
 msgid "Not authorized to access resource."
-msgstr "Kaynağa yazılamadı."
+msgstr "Kaynağa erişmek için yetkili değil."
 
-#, fuzzy
 msgid "GStreamer encountered a general stream error."
-msgstr "GStreamer genel temel kütüphane hatası ile karşılaştı."
+msgstr "GStreamer genel bir akış hatası ile karşılaştı."
 
 msgid "Element doesn't implement handling of this stream. Please file a bug."
 msgstr ""
@@ -245,17 +234,17 @@
 msgid "Could not multiplex stream."
 msgstr "Akım çoklandırılamadı."
 
-#, fuzzy
 msgid "The stream is in the wrong format."
-msgstr "Akım yanlış biçimde."
+msgstr "Akış yanlış biçimdedir."
 
 msgid "The stream is encrypted and decryption is not supported."
-msgstr ""
+msgstr "Akış şifrelidir ve şifre açma desteklenmiyor."
 
 msgid ""
 "The stream is encrypted and can't be decrypted because no suitable key has "
 "been supplied."
 msgstr ""
+"Akış şifrelidir ve şifresi açılamaz çünkü uygun anahtar temin edilmemiştir."
 
 #, c-format
 msgid "No error message for domain %s."
@@ -266,11 +255,11 @@
 msgstr "%s etki alanı ve %d kodu için standart hata iletisi yok."
 
 msgid "Selected clock cannot be used in pipeline."
-msgstr ""
+msgstr "Seçilen saat ardışık düzende kulanılamıyor."
 
 #, c-format
 msgid "Error writing registry cache to %s: %s"
-msgstr ""
+msgstr "%s konumuna kayıt defteri önbelleğini yazmada hata: %s"
 
 msgid "title"
 msgstr "başlık"
@@ -279,11 +268,10 @@
 msgstr "yaygın olarak kullanılan başlık"
 
 msgid "title sortname"
-msgstr ""
+msgstr "sıralamaadı başlığı"
 
-#, fuzzy
 msgid "commonly used title for sorting purposes"
-msgstr "yaygın olarak kullanılan başlık"
+msgstr "amaçları sıralamak için yaygın olarak kullanılan başlık"
 
 msgid "artist"
 msgstr "sanatçı"
@@ -292,11 +280,10 @@
 msgstr "kayıttan sorumlu olan kişi ya da kişiler"
 
 msgid "artist sortname"
-msgstr ""
+msgstr "sanatçı sıralamadı"
 
-#, fuzzy
 msgid "person(s) responsible for the recording for sorting purposes"
-msgstr "kayıttan sorumlu olan kişi ya da kişiler"
+msgstr "sıralama amaçlı kayıttan sorumlu kişi(ler)"
 
 msgid "album"
 msgstr "albüm"
@@ -305,39 +292,34 @@
 msgstr "bu bilgiyi içeren albüm"
 
 msgid "album sortname"
-msgstr ""
+msgstr "albüm sıralama adı"
 
-#, fuzzy
 msgid "album containing this data for sorting purposes"
-msgstr "bu bilgiyi içeren albüm"
+msgstr "sıralama amaçlı bu verileri içeren albüm"
 
-#, fuzzy
 msgid "album artist"
-msgstr "sanatçı"
+msgstr "albüm sanatçısı"
 
 msgid "The artist of the entire album, as it should be displayed"
-msgstr ""
+msgstr "Gerektiği gibi gösterilen tüm albümlerin sanatçıları"
 
 msgid "album artist sortname"
-msgstr ""
+msgstr "albüm sanatçıları sıralamaadı"
 
 msgid "The artist of the entire album, as it should be sorted"
-msgstr ""
+msgstr "Gerektiği gibi sıralanan tüm albümlerin sanatçıları"
 
 msgid "date"
 msgstr "tarih"
 
-#, fuzzy
 msgid "date the data was created (as a GDate structure)"
-msgstr "bu verinin oluşturulduğu tarih (Julian takvimi günleri olarak)"
+msgstr "tarih verisi oluşturuldu (bir GDate yapısı olarak)"
 
-#, fuzzy
 msgid "datetime"
-msgstr "tarih"
+msgstr "tarihsaat"
 
-#, fuzzy
 msgid "date and time the data was created (as a GstDateTime structure)"
-msgstr "bu verinin oluşturulduğu tarih (Julian takvimi günleri olarak)"
+msgstr "tarih ve saat verisi oluşturuldu (bir GstDateTime yapısı olarak)"
 
 msgid "genre"
 msgstr "tür"
@@ -351,13 +333,11 @@
 msgid "free text commenting the data"
 msgstr "veriyi yorumlayan serbest metin"
 
-#, fuzzy
 msgid "extended comment"
-msgstr "yorum"
+msgstr "genişletilmiş yorum"
 
-#, fuzzy
 msgid "free text commenting the data in key=value or key[en]=comment form"
-msgstr "veriyi yorumlayan serbest metin"
+msgstr "anahtar=deger ya da anahtar[en]=yorum biçimindeki metin yorumlama"
 
 msgid "track number"
 msgstr "parça numarası"
@@ -390,12 +370,14 @@
 "Origin of media as a URI (location, where the original of the file or stream "
 "is hosted)"
 msgstr ""
+"URI olarak ortam kaynağı (dosyanın özgün konumu ya da akışın barındırıldığı "
+"konum)"
 
 msgid "homepage"
-msgstr ""
+msgstr "anasayfa"
 
 msgid "Homepage for this media (i.e. artist or movie homepage)"
-msgstr ""
+msgstr "Bu ortamın anasayfası (yani sanatçı ya da film anasayfası)"
 
 msgid "description"
 msgstr "tanım"
@@ -425,20 +407,17 @@
 msgid "copyright notice of the data"
 msgstr "verinin telif hakkı notu"
 
-#, fuzzy
 msgid "copyright uri"
-msgstr "telif hakkı"
+msgstr "telif hakkı uri"
 
-#, fuzzy
 msgid "URI to the copyright notice of the data"
-msgstr "verinin telif hakkı notu"
+msgstr "Verinin telif hakkı bildirimi için URI"
 
-#, fuzzy
 msgid "encoded by"
-msgstr "kodlayıcı"
+msgstr "kodlayan"
 
 msgid "name of the encoding person or organization"
-msgstr ""
+msgstr "kodlayan kişi ya da organizasyonun adı"
 
 msgid "contact"
 msgstr "iletişim"
@@ -452,13 +431,11 @@
 msgid "license of data"
 msgstr "verinin lisansı"
 
-#, fuzzy
 msgid "license uri"
-msgstr "lisans"
+msgstr "lisans uri"
 
-#, fuzzy
 msgid "URI to the license of the data"
-msgstr "verinin lisansı"
+msgstr "Verinin lisansı için URI"
 
 msgid "performer"
 msgstr "icra eden"
@@ -467,11 +444,10 @@
 msgstr "icra eden kişi"
 
 msgid "composer"
-msgstr ""
+msgstr "düzenleyici"
 
-#, fuzzy
 msgid "person(s) who composed the recording"
-msgstr "kayıttan sorumlu olan kişi ya da kişiler"
+msgstr "kayıt oluşturan kişi(ler)"
 
 msgid "duration"
 msgstr "süre"
@@ -497,21 +473,17 @@
 msgid "codec the audio data is stored in"
 msgstr "ses verisinin saklandığı kodek"
 
-#, fuzzy
 msgid "subtitle codec"
-msgstr "video kodeki"
+msgstr "altyazı kodlayıcı-kod çözücüsü"
 
-#, fuzzy
 msgid "codec the subtitle data is stored in"
-msgstr "videonun saklandığı kodek"
+msgstr "altyazı verisinin saklandığı kodlayıcı-kod çözücü"
 
-#, fuzzy
 msgid "container format"
-msgstr "iletişim bilgisi"
+msgstr "kap biçimi"
 
-#, fuzzy
 msgid "container format the data is stored in"
-msgstr "verinin saklandığı kodek"
+msgstr "verilerin saklandığı kap biçemi"
 
 msgid "bitrate"
 msgstr "örnekleme hızı"
@@ -579,274 +551,271 @@
 msgid "peak of the album"
 msgstr "albüm üst sınırı"
 
-#, fuzzy
 msgid "replaygain reference level"
-msgstr "tekrarkazanç parça üst sınırı"
+msgstr "yeniden kazanç kaynak seviyesi"
 
 msgid "reference level of track and album gain values"
-msgstr ""
+msgstr "şarkı ve albüm kazanç değerlerinin kaynak seviyesi"
 
 msgid "language code"
-msgstr ""
+msgstr "dil kodu"
 
 msgid "language code for this stream, conforming to ISO-639-1 or ISO-639-2"
-msgstr ""
+msgstr "bu akış için ISO-639-1 ya da ISO-639-2 standartlarına uygun dil kodu"
 
 msgid "language name"
-msgstr ""
+msgstr "dil adı"
 
 msgid "freeform name of the language this stream is in"
-msgstr ""
+msgstr "bu akıştaki dilin serbest biçem adı"
 
 msgid "image"
-msgstr ""
+msgstr "görüntü"
 
-#, fuzzy
 msgid "image related to this stream"
-msgstr "bu akımı kodlarken kullanılacak kodlayıcı"
+msgstr "bu akış ile ilişkili görüntü"
 
 #. TRANSLATORS: 'preview image' = image that shows a preview of the full image
 msgid "preview image"
-msgstr ""
+msgstr "görüntüyü önizle"
 
 msgid "preview image related to this stream"
-msgstr ""
+msgstr "bu akış ile ilişkili görüntüyü önizle"
 
 msgid "attachment"
-msgstr ""
+msgstr "ek"
 
-#, fuzzy
 msgid "file attached to this stream"
-msgstr "bu akımı kodlarken kullanılacak kodlayıcı"
+msgstr "bu akışa dosya eklendi"
 
 msgid "beats per minute"
-msgstr ""
+msgstr "dakikadaki vuruş"
 
 msgid "number of beats per minute in audio"
-msgstr ""
+msgstr "seste dakikadaki vuruş sayısı"
 
 msgid "keywords"
-msgstr ""
+msgstr "anahtar sözcükler"
 
-#, fuzzy
 msgid "comma separated keywords describing the content"
-msgstr "verinin içeriğini tanımlayan kısa metin"
+msgstr "içeriği tanımlayan virgülle ayrılmış anahtar sözcükler"
 
-#, fuzzy
 msgid "geo location name"
-msgstr "konum"
+msgstr "coğrafi konum adı"
 
 msgid ""
 "human readable descriptive location of where the media has been recorded or "
 "produced"
-msgstr ""
+msgstr "ortamın kaydedildiği ya da üretildiği okunabilir açıklayıcı konum"
 
 msgid "geo location latitude"
-msgstr ""
+msgstr "coğrafi konum enlemi"
 
 msgid ""
 "geo latitude location of where the media has been recorded or produced in "
 "degrees according to WGS84 (zero at the equator, negative values for "
 "southern latitudes)"
 msgstr ""
+"WGS84 yerlem derecesinde (ekvatorda sıfır, güney enlemler için negatif "
+"değerler) üretilen ya da kaydedilen ortamın coğrafik enlem konumu"
 
 msgid "geo location longitude"
-msgstr ""
+msgstr "coğrafi konum boylamı"
 
 msgid ""
 "geo longitude location of where the media has been recorded or produced in "
 "degrees according to WGS84 (zero at the prime meridian in Greenwich/UK,  "
 "negative values for western longitudes)"
 msgstr ""
+"WGS84 yerlem derecesinde (Greenwich/UK baş meridyeninde sıfır,  batı "
+"boylamları için negatif değerler) üretilen ya da kaydedilen ortamın coğrafik "
+"boylam konumu"
 
 msgid "geo location elevation"
-msgstr ""
+msgstr "coğrafi konum yüksekliği"
 
 msgid ""
 "geo elevation of where the media has been recorded or produced in meters "
 "according to WGS84 (zero is average sea level)"
 msgstr ""
+"WGS84 yerlem ölçüsünde (ortalama deniz seviyesi sıfırdır) üretilen ya da "
+"kaydedilen ortamın coğrafik yüksekliği"
 
-#, fuzzy
 msgid "geo location country"
-msgstr "konum"
+msgstr "ülke coğrafi konumu"
 
 msgid "country (english name) where the media has been recorded or produced"
-msgstr ""
+msgstr "ortamın üretildiği ya da kaydedildiği ülke (ingilizce adı)"
 
-#, fuzzy
 msgid "geo location city"
-msgstr "konum"
+msgstr "şehir coğrafi konumu"
 
 msgid "city (english name) where the media has been recorded or produced"
-msgstr ""
+msgstr "ortamın kaydedildiği ya da üretildiği şehir (ingilizce adı)"
 
-#, fuzzy
 msgid "geo location sublocation"
-msgstr "konum"
+msgstr "bölge coğrafi konumu"
 
 msgid ""
 "a location within a city where the media has been produced or created (e.g. "
 "the neighborhood)"
 msgstr ""
+"ortamın üretildiği ya da oluşturulduğu şehirdeki bir konum (örneğin semt)"
 
-#, fuzzy
 msgid "geo location horizontal error"
-msgstr "konum"
+msgstr "coğrafi yatay konum hatası"
 
 msgid "expected error of the horizontal positioning measures (in meters)"
-msgstr ""
+msgstr "yatay konumlandırma ölçümlerinde beklenen hata (metre cinsinden)"
 
-#, fuzzy
 msgid "geo location movement speed"
-msgstr "konum"
+msgstr "coğrafi konum hareket hızı"
 
 msgid ""
 "movement speed of the capturing device while performing the capture in m/s"
-msgstr ""
+msgstr "yakalama aygıtının m/s cinsinden yakalama yaparken ki hareket hızı"
 
-#, fuzzy
 msgid "geo location movement direction"
-msgstr "konum"
+msgstr "coğrafi konum hareket doğrultusu"
 
 msgid ""
 "indicates the movement direction of the device performing the capture of a "
 "media. It is represented as degrees in floating point representation, 0 "
 "means the geographic north, and increases clockwise"
 msgstr ""
+"Bir medyada yakalama yapan aygıtın haraket yönünü belirtir. Kayan noktalı "
+"sayı olarak, derece biçiminde gösterilir, 0 çoğrafik kuzeydir ve saat "
+"yönünde belirtilir"
 
-#, fuzzy
 msgid "geo location capture direction"
-msgstr "konum"
+msgstr "coğrafi konum yakalama açıklaması"
 
 msgid ""
 "indicates the direction the device is pointing to when capturing  a media. "
 "It is represented as degrees in floating point  representation, 0 means the "
 "geographic north, and increases clockwise"
 msgstr ""
+"Bir medya yakalanırken işaret edilen aygıtın yönünü belirtir. Kayan noktalı "
+"sayı olarak, derece biçiminde gösterilir, 0 çoğrafik kuzeydir ve saat "
+"yönünde belirtilir"
 
 #. TRANSLATORS: 'show name' = 'TV/radio/podcast show name' here
 msgid "show name"
-msgstr ""
+msgstr "adı göster"
 
 msgid "Name of the tv/podcast/series show the media is from"
-msgstr ""
+msgstr "Ortamın tv/podcast/serie den birisinin adı"
 
 #. TRANSLATORS: 'show sortname' = 'TV/radio/podcast show name as used for sorting purposes' here
 msgid "show sortname"
-msgstr ""
+msgstr "sıralamaadını göster"
 
 msgid ""
 "Name of the tv/podcast/series show the media is from, for sorting purposes"
-msgstr ""
+msgstr "Ortamın tv/podcast/serie den birisinin adı, sıralama için"
 
-#, fuzzy
 msgid "episode number"
-msgstr "disk numarası"
+msgstr "bölüm numarası"
 
 msgid "The episode number in the season the media is part of"
-msgstr ""
+msgstr "Ortamın parçası olduğu sezonun bölüm numarası"
 
-#, fuzzy
 msgid "season number"
-msgstr "disk numarası"
+msgstr "oturum numarası"
 
 msgid "The season number of the show the media is part of"
-msgstr ""
+msgstr "Ortamın parçası olduğu sezon numarası"
 
-#, fuzzy
 msgid "lyrics"
-msgstr "lisans"
+msgstr "şarkı sözleri"
 
 msgid "The lyrics of the media, commonly used for songs"
-msgstr ""
+msgstr "Ortamın şarkı sözleri, genellikle şarkılar için kullanılır"
 
 msgid "composer sortname"
-msgstr ""
+msgstr "besteci sıralama adı"
 
-#, fuzzy
 msgid "person(s) who composed the recording, for sorting purposes"
-msgstr "kayıttan sorumlu olan kişi ya da kişiler"
+msgstr "sıralama amaçlı kayıt oluşturan kişi(ler)"
 
 msgid "grouping"
-msgstr ""
+msgstr "gruplandırma"
 
 msgid ""
 "Groups related media that spans multiple tracks, like the different pieces "
 "of a concerto. It is a higher level than a track, but lower than an album"
 msgstr ""
+"Grup ilgili ortam çoklu şarkılar içerir, bir konçertonun farklı parçaları "
+"gibi. Bu şarkıdan daha üst seviyedir ancak albümden alt seviyedir"
 
-#, fuzzy
 msgid "user rating"
-msgstr "süre"
+msgstr "kullanıcı değerlendirmesi"
 
 msgid ""
 "Rating attributed by a user. The higher the rank, the more the user likes "
 "this media"
 msgstr ""
+"Kullanıcı tarafından verilmiş puanlama. En yüksek puanlama, bir çok "
+"kullanıcı bu ortamı beğenmiş"
 
 msgid "device manufacturer"
-msgstr ""
+msgstr "aygıt üreticisi"
 
-#, fuzzy
 msgid "Manufacturer of the device used to create this media"
-msgstr "bu akımı kodlarken kullanılan kodlayıcının sürümü"
+msgstr "Bu ortamı oluşturmak için kullanılan aygıt üreticisi"
 
 msgid "device model"
-msgstr ""
+msgstr "aygıt modeli"
 
-#, fuzzy
 msgid "Model of the device used to create this media"
-msgstr "bu akımı kodlarken kullanılan kodlayıcının sürümü"
+msgstr "Bu ortamı oluşturmak için kullanılan aygıtın modeli"
 
-#, fuzzy
 msgid "application name"
-msgstr "konum"
+msgstr "uygulama adı"
 
-#, fuzzy
 msgid "Application used to create the media"
-msgstr "bu akımı kodlarken kullanılan kodlayıcının sürümü"
+msgstr "Bu ortamı oluşturmak için kullanılan uygulama"
 
 msgid "application data"
-msgstr ""
+msgstr "uygulama verileri"
 
 msgid "Arbitrary application data to be serialized into the media"
-msgstr ""
+msgstr "Ortamda serileştirilecek gelişigüzel uygulama verileri"
 
 msgid "image orientation"
-msgstr ""
+msgstr "görüntü yönü"
 
 msgid "How the image should be rotated or flipped before display"
-msgstr ""
+msgstr "Görüntü gösterilmeden önce nasıl döndürülmelidir ya da çevirilmelidir"
 
 msgid "publisher"
-msgstr ""
+msgstr "yayımcı"
 
 msgid "Name of the label or publisher"
-msgstr ""
+msgstr "Marka ya da yayımcının adı"
 
 msgid "interpreted-by"
-msgstr ""
+msgstr "tarafından-yorumlanmış"
 
 msgid "Information about the people behind a remix and similar interpretations"
-msgstr ""
+msgstr "Yeniden düzenleme ve benzer yorumların arkasındaki kişi hakkında bilgi"
 
 msgid "midi-base-note"
-msgstr ""
+msgstr "midi-base-note"
 
 msgid "Midi note number of the audio track."
-msgstr ""
+msgstr "Ses kaydının midi notu numarası."
 
 msgid ", "
 msgstr ", "
 
 #, c-format
 msgid "No URI handler for the %s protocol found"
-msgstr ""
+msgstr "%s protokolü için URI işleyicisi bulunamadı"
 
 #, c-format
 msgid "URI scheme '%s' not supported"
-msgstr ""
+msgstr "URI şema '%s' desteklenmez"
 
 #, c-format
 msgid "ERROR: from element %s: %s\n"
@@ -862,11 +831,11 @@
 
 #, c-format
 msgid "link has no source [sink=%s@%p]"
-msgstr ""
+msgstr "bağlantı kaynağı yok [alıcı=%s@%p]"
 
 #, c-format
 msgid "link has no sink [source=%s@%p]"
-msgstr ""
+msgstr "bağlantı alış noktası yok [kaynak=%s@%p]"
 
 #, c-format
 msgid "no property \"%s\" in element \"%s\""
@@ -886,11 +855,11 @@
 
 #, c-format
 msgid "unexpected reference \"%s\" - ignoring"
-msgstr ""
+msgstr "beklenmeyen kaynak \"%s\" - yoksayılıyor"
 
 #, c-format
 msgid "unexpected pad-reference \"%s\" - ignoring"
-msgstr ""
+msgstr "beklenmedik dolgu-kaynağı \"%s\" - yoksayılıyor"
 
 #, c-format
 msgid "could not parse caps \"%s\""
@@ -905,62 +874,69 @@
 msgstr "\"%s\" URI'si için kaynak öğesi yok"
 
 msgid "syntax error"
-msgstr ""
+msgstr "söz dizim hatası"
 
 msgid "bin"
-msgstr ""
+msgstr "bin"
 
 #, c-format
 msgid "specified empty bin \"%s\", not allowed"
 msgstr "belirtilen boş ikili \"%s\", izin verilmedi"
 
-#, fuzzy, c-format
+#, c-format
 msgid "no bin \"%s\", unpacking elements"
-msgstr "\"%s\" ikilisi yok, geçiliyor"
+msgstr "\"%s\" ikilisi yok, öge açılamıyor"
 
 msgid "empty pipeline not allowed"
 msgstr "boş boruhattına izin verilmiyor"
 
 msgid "A lot of buffers are being dropped."
-msgstr ""
+msgstr "Tampon belleklerin bir çoğu bırakılıyor."
 
 msgid "Internal data flow problem."
-msgstr ""
+msgstr "İç veri akış sorunu."
 
 msgid "Internal data stream error."
-msgstr ""
+msgstr "İç veri akışı hatası."
 
 msgid "Internal data flow error."
-msgstr ""
+msgstr "İç veri akış hatası."
 
 msgid "Internal clock error."
-msgstr ""
+msgstr "İç saat hatası."
 
 msgid "Failed to map buffer."
-msgstr ""
+msgstr "Tampon eşleştirme başarısız."
 
 msgid "Filter caps"
-msgstr ""
+msgstr "Büyük harfleri süz"
 
 msgid ""
 "Restrict the possible allowed capabilities (NULL means ANY). Setting this "
 "property takes a reference to the supplied GstCaps object."
 msgstr ""
+"İzin verilen yetenekleri kısıtla (NULL HİÇ anlamına gelir). Bu özelliklerin "
+"ayarlanması verilen GstCaps nesnesini kaynak olarak alır."
 
-msgid "No Temp directory specified."
+msgid "Caps Change Mode"
 msgstr ""
 
-#, fuzzy, c-format
+msgid "Filter caps change behaviour"
+msgstr ""
+
+msgid "No Temp directory specified."
+msgstr "Geçici dizin belirtilmedi."
+
+#, c-format
 msgid "Could not create temp file \"%s\"."
-msgstr "Kaynağa değerler atanamadı ya da alınamadı."
+msgstr "Geçici dosya \"%s\" oluşturulamadı."
 
 #, c-format
 msgid "Could not open file \"%s\" for reading."
 msgstr "\"%s\" dosyası okuma için açılamadı."
 
-#, fuzzy
 msgid "Error while writing to download file."
-msgstr "\"%s\" dosyası yazılırken hata."
+msgstr "Dosya indirmek için yazarken hata."
 
 msgid "No file name specified for writing."
 msgstr "Yazım için hiç bir dosya adı belirtilmedi."
@@ -973,9 +949,9 @@
 msgid "Error closing file \"%s\"."
 msgstr "\"%s\" kapatılırken hata."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error while seeking in file \"%s\"."
-msgstr "\"%s\" dosyası yazılırken hata."
+msgstr "\"%s\" dosyasında arama yaparken hata."
 
 #, c-format
 msgid "Error while writing to file \"%s\"."
@@ -984,17 +960,17 @@
 msgid "No file name specified for reading."
 msgstr "Okuma için hiç bir dosya adı belirtilmedi."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not get info on \"%s\"."
-msgstr "Kaynağa değerler atanamadı ya da alınamadı."
+msgstr "\"%s\" ögesinden bilgi alınamadı."
 
 #, c-format
 msgid "\"%s\" is a directory."
-msgstr ""
+msgstr "\"%s\" bir dizindir."
 
-#, fuzzy, c-format
+#, c-format
 msgid "File \"%s\" is a socket."
-msgstr "\"%s\" dosyası düzenli bir dosya değil."
+msgstr "Dosya \"%s\" bir sokettir."
 
 msgid "Failed after iterations as requested."
 msgstr "İstenildiği gibi tekrarlama başarısız oldu."
@@ -1009,74 +985,77 @@
 msgstr "asgari"
 
 msgid "force caps"
-msgstr ""
+msgstr "kapasiteyi zorla"
 
 msgid "force caps without doing a typefind"
-msgstr ""
+msgstr "bir tür tanımlaması yapmadan kapasiteyi zorla"
 
 #, fuzzy
+msgid "Stream contains not enough data."
+msgstr "Akış hiçbir veri içermiyor."
+
 msgid "Stream contains no data."
-msgstr "bu bilgiyi içeren albüm"
+msgstr "Akış hiçbir veri içermiyor."
 
 msgid "Implemented Interfaces:\n"
-msgstr ""
+msgstr "Gerçeklenmiş Arayüzler:\n"
 
 msgid "readable"
-msgstr ""
+msgstr "okunabilir"
 
-#, fuzzy
 msgid "writable"
-msgstr "başlık"
+msgstr "yazılabilir"
+
+msgid "deprecated"
+msgstr ""
 
 msgid "controllable"
-msgstr ""
+msgstr "yöneltilebilir"
 
 msgid "changeable in NULL, READY, PAUSED or PLAYING state"
-msgstr ""
+msgstr "BOŞ, HAZIR, DURDURULMUŞ ya da YÜRÜTÜLÜYOR durumlarına değiştirilebilir"
 
 msgid "changeable only in NULL, READY or PAUSED state"
-msgstr ""
+msgstr "sadece NULL, READY ya da PAUSED olarak değiştirilebilir"
 
 msgid "changeable only in NULL or READY state"
-msgstr ""
+msgstr "sadece NULL ya da READY olarak değiştirilebilir"
 
 msgid "Blacklisted files:"
-msgstr ""
+msgstr "Kara listeye alınan dosyalar:"
 
-#, fuzzy
 msgid "Total count: "
-msgstr "parça sayısı"
+msgstr "Toplam sayı: "
 
 #, c-format
 msgid "%d blacklisted file"
 msgid_plural "%d blacklisted files"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d kara listeye alınan dosya"
+msgstr[1] "%d kara listeye alınan dosya"
 
 #, c-format
 msgid "%d plugin"
 msgid_plural "%d plugins"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d eklentisi"
+msgstr[1] "%d eklentisi"
 
 #, c-format
 msgid "%d blacklist entry"
 msgid_plural "%d blacklist entries"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d kara liste girdisi"
+msgstr[1] "%d kara liste girdisi"
 
 #, c-format
 msgid "%d feature"
 msgid_plural "%d features"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d özelliği"
+msgstr[1] "%d özelliği"
 
-#, fuzzy
 msgid "Print all elements"
-msgstr "\"%s\" öğesi yok"
+msgstr "Bütün ögeleri yazdır"
 
 msgid "Print list of blacklisted files"
-msgstr ""
+msgstr "Kara listeye alınmış dosyaların listesini yazdır"
 
 msgid ""
 "Print a machine-parsable list of features the specified plugin or all "
@@ -1084,155 +1063,166 @@
 "                                       Useful in connection with external "
 "automatic plugin installation mechanisms"
 msgstr ""
+"Belirtilen eklenti ya da sağlanan bütün eklentilerin özelliklerinin makine-"
+"çözümlenebilir bir listesini yazdır.\n"
+"                                       Harici otomatik eklenti kurulum "
+"tekniği ile bağlantıda faydalı"
 
 msgid "List the plugin contents"
-msgstr ""
+msgstr "Eklenti içeriklerini listele"
 
 msgid "Check if the specified element or plugin exists"
-msgstr ""
+msgstr "Belirtilen öge ya da eklentinin var olup olmadığını kontrol et"
 
 msgid ""
 "When checking if an element or plugin exists, also check that its version is "
 "at least the version specified"
 msgstr ""
+"Bir öge ya da eklentinin var olup olmadığını kontrol ettiğinizde ayrıca "
+"onların belirtilen en son versiyonda olup olmadıklarını da kontrol edin"
 
 msgid "Print supported URI schemes, with the elements that implement them"
-msgstr ""
+msgstr "Desteklenen URI şemalarını onlara uygulanan ögelerle yazdır"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not load plugin file: %s\n"
-msgstr "\"%s\" dosyası yazım için açılamadı."
+msgstr "Eklenti dosyası yüklenemedi: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "No such element or plugin '%s'\n"
-msgstr "\"%s\" URI'si için kaynak öğesi yok"
+msgstr "Böyle bir öge ya da '%s' eklentisi yok\n"
 
 msgid "Index statistics"
-msgstr ""
+msgstr "Dizin istatistikleri"
 
 #, c-format
 msgid "Got message #%u from element \"%s\" (%s): "
-msgstr ""
+msgstr "#%u iletisi \"%s\" ögesinden alındı (%s): "
 
 #, c-format
 msgid "Got message #%u from pad \"%s:%s\" (%s): "
-msgstr ""
+msgstr "#%u iletisi dolgu \"%s:%s\" (%s) üzerinden alındı: "
 
 #, c-format
 msgid "Got message #%u from object \"%s\" (%s): "
-msgstr ""
+msgstr "#%u iletisi \"%s\" nesnesinden alındı (%s): "
 
 #, c-format
 msgid "Got message #%u (%s): "
-msgstr ""
+msgstr "İleti #%u alındı (%s): "
 
-#, fuzzy, c-format
+#, c-format
 msgid "Got EOS from element \"%s\".\n"
-msgstr "HATA: %s öğesinden: %s\n"
+msgstr "\"%s\" ögesinden gelen EOS.\n"
 
 #, c-format
 msgid "FOUND TAG      : found by element \"%s\".\n"
 msgstr "ETİKET BULUNDU      : \"%s\" öğesi tarafından bulundu.\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TAG      : found by pad \"%s:%s\".\n"
-msgstr "ETİKET BULUNDU      : \"%s\" öğesi tarafından bulundu.\n"
+msgstr "ETİKET BULUNDU      : \"%s:%s\" dolgusu tarafından bulundu.\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TAG      : found by object \"%s\".\n"
-msgstr "ETİKET BULUNDU      : \"%s\" öğesi tarafından bulundu.\n"
+msgstr "ETİKET BULUNDU      : \"%s\" nesnesi tarafından bulundu.\n"
 
 msgid "FOUND TAG\n"
-msgstr ""
+msgstr "ETİKET BULUNDU\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TOC      : found by element \"%s\".\n"
-msgstr "ETİKET BULUNDU      : \"%s\" öğesi tarafından bulundu.\n"
+msgstr "İÇİNDEKİLER BULUNDU      : \"%s\" ögesi tarafından bulundu.\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TOC      : found by object \"%s\".\n"
-msgstr "ETİKET BULUNDU      : \"%s\" öğesi tarafından bulundu.\n"
+msgstr "İÇİNDEKİLER BULUNDU      : \"%s\" nesnesi tarafından bulundu.\n"
 
 msgid "FOUND TOC\n"
-msgstr ""
+msgstr "İÇİNDEKİLER BULUNDU\n"
 
 #, c-format
 msgid ""
 "INFO:\n"
 "%s\n"
 msgstr ""
+"BİLGİ:\n"
+"%s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "WARNING: from element %s: %s\n"
-msgstr "HATA: %s öğesinden: %s\n"
+msgstr "UYARI: %s ögesinden: %s\n"
 
 msgid "Prerolled, waiting for buffering to finish...\n"
-msgstr ""
+msgstr "Kullanım öncesi, önbelleğe alma işleminin bitmesi bekleniyor...\n"
 
 msgid "Prerolled, waiting for progress to finish...\n"
-msgstr ""
+msgstr "Kullanım öncesi, ilerlemenin bitmesi için bekleniyor...\n"
 
 msgid "buffering..."
-msgstr ""
+msgstr "tamponlanıyor..."
 
 msgid "Done buffering, setting pipeline to PLAYING ...\n"
 msgstr ""
+"Önbelleğe alma işlemi, YÜRÜTÜLÜYOR durumu için ardışık düzen ayarlamaları "
+"yapıldı ...\n"
 
 msgid "Buffering, setting pipeline to PAUSED ...\n"
-msgstr ""
+msgstr "Tamponlama, DURAKLAT olarak ayarlanıyor ...\n"
 
 msgid "Redistribute latency...\n"
-msgstr ""
+msgstr "Yeniden dağıtım gecikmesi...\n"
 
 #, c-format
 msgid "Setting state to %s as requested by %s...\n"
-msgstr ""
+msgstr "Durum %s olarak ayarlanıyor, %s tarafından istenmiş...\n"
 
 msgid "Interrupt: Stopping pipeline ...\n"
-msgstr ""
+msgstr "Kesme: Boru hattı durduruluyor ...\n"
 
 #, c-format
 msgid "Progress: (%s) %s\n"
-msgstr ""
+msgstr "İlerleme: (%s) %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Missing element: %s\n"
-msgstr "\"%s\" öğesi yok"
+msgstr "Eksik öge: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Got context from element '%s': %s=%s\n"
-msgstr "HATA: %s öğesinden: %s\n"
+msgstr "Ögeden '%s' içerik alındı: %s=%s\n"
 
 msgid "Output tags (also known as metadata)"
 msgstr "Çıktı etiketleri (metadata olarak da bilinir)"
 
 msgid "Output TOC (chapters and editions)"
-msgstr ""
+msgstr "İçindekiler Çıktısı (bölümler ve sürümleri)"
 
 msgid "Output status information and property notifications"
 msgstr "Çıktı durum bilgisi ve özellik uyarıları"
 
-#, fuzzy
 msgid "Do not print any progress information"
-msgstr "TÜRÜN durum bilgisini gösterme"
+msgstr "Herhangi bir ilerleme bilgisi yazdırmayın"
 
 msgid "Output messages"
+msgstr "Çıktı iletileri"
+
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
 msgstr ""
 
-msgid "Do not output status information of TYPE"
-msgstr "TÜRÜN durum bilgisini gösterme"
-
-msgid "TYPE1,TYPE2,..."
-msgstr "TÜR1,TÜR2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Hatalı işleticiyi kurma"
 
 msgid "Force EOS on sources before shutting the pipeline down"
-msgstr ""
+msgstr "Boru hattı kapatılmadan önce kaynaklarda EOS zorla"
 
 msgid "Gather and print index statistics"
-msgstr ""
+msgstr "Dizin istatistiklerini topla ve yazdır"
 
 #, c-format
 msgid "ERROR: pipeline could not be constructed: %s.\n"
@@ -1249,105 +1239,64 @@
 msgstr "HATA: 'pipeline' öğesi bulunamadı.\n"
 
 msgid "Setting pipeline to PAUSED ...\n"
-msgstr ""
+msgstr "DURDURULDU durumu için ardışık düzen ayarlamaları ...\n"
 
-#, fuzzy
 msgid "ERROR: Pipeline doesn't want to pause.\n"
-msgstr "HATA: boruhattı çalmak istemiyor.\n"
+msgstr "HATA: Ardışık düzen durdurmayı istemez.\n"
 
 msgid "Pipeline is live and does not need PREROLL ...\n"
-msgstr ""
+msgstr "Boru hattı çalışıyor ve PREROLL ihtiyacı yok ...\n"
 
 msgid "Pipeline is PREROLLING ...\n"
-msgstr ""
+msgstr "Boru hattı PREROLLING yapıyor ...\n"
 
-#, fuzzy
 msgid "ERROR: pipeline doesn't want to preroll.\n"
-msgstr "HATA: boruhattı çalmak istemiyor.\n"
+msgstr "HATA: boru hattı kullanım öncesi yapmak istemiyor.\n"
 
 msgid "Pipeline is PREROLLED ...\n"
-msgstr ""
+msgstr "Boru hattı PREROLLED ...\n"
 
 msgid "Setting pipeline to PLAYING ...\n"
-msgstr ""
+msgstr "Boru hattı PLAYING olarak ayarlanıyor ...\n"
 
 msgid "ERROR: pipeline doesn't want to play.\n"
 msgstr "HATA: boruhattı çalmak istemiyor.\n"
 
 msgid "EOS on shutdown enabled -- Forcing EOS on the pipeline\n"
-msgstr ""
+msgstr "Kapanmada EOS etkin - Boru hattında EOS zorlanıyor\n"
 
 msgid "EOS on shutdown enabled -- waiting for EOS after Error\n"
-msgstr ""
+msgstr "Kapanmada EOS etkin -- Hatadan sonra EOS için bekleniyor\n"
 
 msgid "Waiting for EOS...\n"
-msgstr ""
+msgstr "EOS için bekleniyor...\n"
 
 msgid "EOS received - stopping pipeline...\n"
-msgstr ""
+msgstr "EOS alındı - boru hattı durduruluyor...\n"
 
 msgid "Interrupt while waiting for EOS - stopping pipeline...\n"
-msgstr ""
+msgstr "EOS için beklenirken kesme - boru hattı durduruluyor...\n"
 
 msgid "An error happened while waiting for EOS\n"
-msgstr ""
+msgstr "Akış sonu için beklerken bir hata oldu\n"
 
 msgid "Execution ended after %"
 msgstr "Çalıştırma % sonrası bitti"
 
 msgid "Setting pipeline to READY ...\n"
-msgstr ""
+msgstr "Boru hattı READY olarak ayarlanıyor ...\n"
 
 msgid "Setting pipeline to NULL ...\n"
-msgstr ""
+msgstr "Boru hattı NULL olarak ayarlanıyor ...\n"
 
-#, fuzzy
 msgid "Freeing pipeline ...\n"
-msgstr "BORUHATTI çalıştırılıyor ...\n"
+msgstr "Boru hattı boşaltılıyor ...\n"
 
-#~ msgid "link without source element"
-#~ msgstr "kaynak öğesi olmayan bağ"
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "TÜRÜN durum bilgisini gösterme"
 
-#~ msgid "link without sink element"
-#~ msgstr "'sink' öğesi olmayan bağ"
-
-#~ msgid "no element to link URI \"%s\" to"
-#~ msgstr "\"%s\" URI'sini belirtilene bağlayacak öğe yok:"
-
-#~ msgid "could not link sink element for URI \"%s\""
-#~ msgstr "\"%s\" URI'si için 'sink' öğesi bağlanamadı"
-
-#~ msgid "Print alloc trace (if enabled at compile time)"
-#~ msgstr "'alloc' takibini yazdır (derleme sırasında etkinleştirilmişse)"
-
-#~ msgid "Usage: gst-xmllaunch <file.xml> [ element.property=value ... ]\n"
-#~ msgstr "Kullanım: gst-xmllaunch <dosya.xml> [ öğe.özellik=değer ... ]\n"
-
-#~ msgid "ERROR: parse of xml file '%s' failed.\n"
-#~ msgstr "HATA: xml dosyası '%s' ayrıştırması başarısız.\n"
-
-#~ msgid "ERROR: no toplevel pipeline element in file '%s'.\n"
-#~ msgstr "HATA: '%s' dosyasında üst seviye öğesi bulunamadı.\n"
-
-#, fuzzy
-#~ msgid "WARNING: only one toplevel element is supported at this time.\n"
-#~ msgstr "UYARI: Şu anda sadece bir tane üst seviye öğesi destekleniyor."
-
-#~ msgid "ERROR: could not parse command line argument %d: %s.\n"
-#~ msgstr "HATA: komut satırı argümanı %d ayrıştırılamadı: %s.\n"
-
-#~ msgid "WARNING: element named '%s' not found.\n"
-#~ msgstr "UYARI: '%s' isimli öğe bulunamadı.\n"
-
-#~ msgid "Save xml representation of pipeline to FILE and exit"
-#~ msgstr "Boruhattının xml belirtimini DOSYA'ya kaydet ve çık"
-
-#~ msgid "FILE"
-#~ msgstr "DOSYA"
-
-#, fuzzy
-#~ msgid "Do not install signal handlers for SIGUSR1 and SIGUSR2"
-#~ msgstr "Hatalı işleticiyi kurma"
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TÜR1,TÜR2,..."
 
 #~ msgid "Disable accelerated CPU instructions"
 #~ msgstr "Hızlandırılmış CPU işlemlerini kapat"
@@ -1389,12 +1338,27 @@
 #~ msgid "There is no element present to handle the stream's mime type %s."
 #~ msgstr "Akımın %s mime türünü işleyebilecek hiç bir öğe yok."
 
+#~ msgid "maximum"
+#~ msgstr "azami"
+
 #~ msgid ""
 #~ "could not convert \"%s\" so that it fits property \"%s\" in element \"%s\""
 #~ msgstr ""
 #~ "\"%1$s\", \"%3$s\" öğesindeki \"%2$s\" özelliğinine uyacak şekilde "
 #~ "dönüştürülemedi"
 
+#~ msgid "link without source element"
+#~ msgstr "kaynak öğesi olmayan bağ"
+
+#~ msgid "link without sink element"
+#~ msgstr "'sink' öğesi olmayan bağ"
+
+#~ msgid "no element to link URI \"%s\" to"
+#~ msgstr "\"%s\" URI'sini belirtilene bağlayacak öğe yok:"
+
+#~ msgid "could not link sink element for URI \"%s\""
+#~ msgstr "\"%s\" URI'si için 'sink' öğesi bağlanamadı"
+
 #~ msgid "Show plugin details"
 #~ msgstr "Eklenti detaylarını göster"
 
@@ -1416,6 +1380,33 @@
 #~ msgid " ns).\n"
 #~ msgstr " ns) \n"
 
+#~ msgid "Usage: gst-xmllaunch <file.xml> [ element.property=value ... ]\n"
+#~ msgstr "Kullanım: gst-xmllaunch <dosya.xml> [ öğe.özellik=değer ... ]\n"
+
+#~ msgid "ERROR: parse of xml file '%s' failed.\n"
+#~ msgstr "HATA: xml dosyası '%s' ayrıştırması başarısız.\n"
+
+#~ msgid "ERROR: no toplevel pipeline element in file '%s'.\n"
+#~ msgstr "HATA: '%s' dosyasında üst seviye öğesi bulunamadı.\n"
+
+#~ msgid "WARNING: only one toplevel element is supported at this time."
+#~ msgstr "UYARI: Şu anda sadece bir tane üst seviye öğesi destekleniyor."
+
+#~ msgid "ERROR: could not parse command line argument %d: %s.\n"
+#~ msgstr "HATA: komut satırı argümanı %d ayrıştırılamadı: %s.\n"
+
+#~ msgid "WARNING: element named '%s' not found.\n"
+#~ msgstr "UYARI: '%s' isimli öğe bulunamadı.\n"
+
+#~ msgid "Save xml representation of pipeline to FILE and exit"
+#~ msgstr "Boruhattının xml belirtimini DOSYA'ya kaydet ve çık"
+
+#~ msgid "FILE"
+#~ msgstr "DOSYA"
+
+#~ msgid "Print alloc trace (if enabled at compile time)"
+#~ msgstr "'alloc' takibini yazdır (derleme sırasında etkinleştirilmişse)"
+
 #~ msgid "Number of times to iterate pipeline"
 #~ msgstr "Boruhattının kaç defa tekrarlanacağı"
 
diff --git a/po/uk.gmo b/po/uk.gmo
index 47d7d09..1aee39f 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index f160b4f..07f92df 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -3,13 +3,13 @@
 # This file is distributed under the same license as the gstreamer package.
 #
 # Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2007.
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-05-22 07:45+0300\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-10 22:43+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
 "Language: uk\n"
@@ -928,6 +928,12 @@
 "Обмежити допустимі можливості (NULL означає ANY). Встановлення цієї "
 "властивості призводить до посилання на поставлений об'єкт GstCaps."
 
+msgid "Caps Change Mode"
+msgstr "Режим зміни можливостей"
+
+msgid "Filter caps change behaviour"
+msgstr "Зміна поведінки можливостей фільтрування"
+
 msgid "No Temp directory specified."
 msgstr "Не вказано каталог тимчасових даних."
 
@@ -994,6 +1000,9 @@
 msgid "force caps without doing a typefind"
 msgstr "примусово визначити можливості без виконання typefind"
 
+msgid "Stream contains not enough data."
+msgstr "Потік не містить достатньо даних."
+
 msgid "Stream contains no data."
 msgstr "Потік не містить даних."
 
@@ -1006,6 +1015,9 @@
 msgid "writable"
 msgstr "запис"
 
+msgid "deprecated"
+msgstr "застаріле"
+
 msgid "controllable"
 msgstr "контроль"
 
@@ -1209,11 +1221,13 @@
 msgid "Output messages"
 msgstr "Виведено повідомлення"
 
-msgid "Do not output status information of TYPE"
-msgstr "Не виводити інформацію про стан типу ТИП"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "ТИП1,ТИП2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Не встановлювати обробник збоїв"
@@ -1295,6 +1309,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Спорожнення каналу...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Не виводити інформацію про стан типу ТИП"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "ТИП1,ТИП2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "зв'язок без елемента-джерела"
 
diff --git a/po/vi.gmo b/po/vi.gmo
index e13aefa..3aaaeb5 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 1610026..9139248 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,16 +1,16 @@
 # Vietnamese Translation for GStreamer.
 # Bản dịch tiếng Việt dành cho GStreamer.
-# Copyright © 2014 Free Software Foundation, Inc.
+# Copyright © 2015 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gstreamer package.
 # Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
-# Trần Ngọc Quân <vnwildman@gmail.com>, 2012-2014.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2012-2014, 2015.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.3.90\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2014-06-30 09:40+0700\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-06-11 08:35+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
 "Language: vi\n"
@@ -19,10 +19,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n"
-"X-Generator: LocFactoryEditor 1.8\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-Language: Vietnamese\n"
-"X-Poedit-Country: VIET NAM\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Print the GStreamer version"
 msgstr "Hiển thị phiên bản của GStreamer"
@@ -247,7 +244,7 @@
 "The stream is encrypted and can't be decrypted because no suitable key has "
 "been supplied."
 msgstr ""
-"Luồng dữ liệu bị mã hoá và không thể giải mã vì chưa cung cấp khoá thích hợp."
+"Luồng dữ liệu bị mã hóa và không thể giải mã vì chưa cung cấp khóa thích hợp."
 
 #, c-format
 msgid "No error message for domain %s."
@@ -341,8 +338,8 @@
 
 msgid "free text commenting the data in key=value or key[en]=comment form"
 msgstr ""
-"văn bản tự do đặt ghi chú về dữ liệu dưới dạng key=value (khoá=giá trị) hay "
-"key[en]=comment (khoá[en]=ghi chú)"
+"văn bản tự do đặt ghi chú về dữ liệu dưới dạng key=value (khóa=giá trị) hay "
+"key[en]=comment (khóa[en]=ghi chú)"
 
 msgid "track number"
 msgstr "số rãnh"
@@ -420,10 +417,10 @@
 msgstr "địa chỉ URI đến thông báo tác quyền của dữ liệu này"
 
 msgid "encoded by"
-msgstr "má hoá bởi"
+msgstr "má hóa bởi"
 
 msgid "name of the encoding person or organization"
-msgstr "tên của người hay tổ chức đã mã hoá tập tin"
+msgstr "tên của người hay tổ chức đã mã hóa tập tin"
 
 msgid "contact"
 msgstr "liên lạc"
@@ -483,7 +480,7 @@
 msgstr "codec phụ đề"
 
 msgid "codec the subtitle data is stored in"
-msgstr "codec theo đó dữ liệu phụ đề được mã hoá"
+msgstr "codec theo đó dữ liệu phụ đề được mã hóa"
 
 msgid "container format"
 msgstr "định dạng chứa"
@@ -604,10 +601,10 @@
 msgstr "số tiếng nhịp trong mỗi phút âm thanh"
 
 msgid "keywords"
-msgstr "từ khoá"
+msgstr "từ khóa"
 
 msgid "comma separated keywords describing the content"
-msgstr "các từ khoá định giới bằng dấu phẩy, diễn tả nội dung"
+msgstr "các từ khóa định giới bằng dấu phẩy, diễn tả nội dung"
 
 msgid "geo location name"
 msgstr "tên định vị địa lý"
@@ -938,6 +935,12 @@
 "Đặt thuộc tính này thì chấp nhận tham chiếu đến đối tượng GstCaps đã cung "
 "cấp."
 
+msgid "Caps Change Mode"
+msgstr "Thay đổi chế độ Caps"
+
+msgid "Filter caps change behaviour"
+msgstr "Bộ lọc caps thay đổi cách ứng xử"
+
 msgid "No Temp directory specified."
 msgstr "Chưa xác định thư mục tạm thời."
 
@@ -1004,6 +1007,9 @@
 msgid "force caps without doing a typefind"
 msgstr "buộc các khả năng mà không tìm kiểu"
 
+msgid "Stream contains not enough data."
+msgstr "Luồng không chứa đủ dữ liệu."
+
 msgid "Stream contains no data."
 msgstr "Luồng không chứa dữ liệu."
 
@@ -1016,6 +1022,9 @@
 msgid "writable"
 msgstr "được ghi"
 
+msgid "deprecated"
+msgstr "đã lạc hậu"
+
 msgid "controllable"
 msgstr "điều khiển được"
 
@@ -1068,7 +1077,8 @@
 msgstr ""
 "In ra danh sách cho máy phân tích được chứa các tính năng của phần bổ sung "
 "đã ghi rõ hoặc mọi phần bổ sung.\n"
-"\t\t\t\tCó ích khi dùng cơ chế tự động bên ngoài mà cài đặt phần bổ sung."
+"                                       Có ích khi dùng cơ chế tự động bên "
+"ngoài mà cài đặt phần bổ sung."
 
 msgid "List the plugin contents"
 msgstr "Liệt kê nội dung phần bổ sung"
@@ -1156,29 +1166,29 @@
 msgstr "CẢNH BÁO: từ phần tử %s: %s\n"
 
 msgid "Prerolled, waiting for buffering to finish...\n"
-msgstr "Cuộn sẵn, đợi chuyển hoán đệm xong...\n"
+msgstr "Cuộn sẵn, đợi chuyển hoán đệm xong…\n"
 
 msgid "Prerolled, waiting for progress to finish...\n"
-msgstr "Cuộn sẵn, đợi tiến trình hoàn tất...\n"
+msgstr "Cuộn sẵn, đợi tiến trình hoàn tất…\n"
 
 msgid "buffering..."
-msgstr "đang chuyển hoán đệm..."
+msgstr "đang chuyển hoán đệm…"
 
 msgid "Done buffering, setting pipeline to PLAYING ...\n"
-msgstr "Hoàn tất chuyển hoán đệm nên đặt đường ống thành ĐANG PHÁT ...\n"
+msgstr "Hoàn tất chuyển hoán đệm nên đặt đường ống thành ĐANG PHÁT …\n"
 
 msgid "Buffering, setting pipeline to PAUSED ...\n"
-msgstr "Đang chuyển hoán đệm nên đặt đường ống thành BỊ TẠM DỪNG ...\n"
+msgstr "Đang chuyển hoán đệm nên đặt đường ống thành BỊ TẠM DỪNG …\n"
 
 msgid "Redistribute latency...\n"
-msgstr "Phân phối lại sự âm ỷ...\n"
+msgstr "Phân phối lại sự âm ỷ…\n"
 
 #, c-format
 msgid "Setting state to %s as requested by %s...\n"
-msgstr "Đang đặt tình trạng thành %s như yêu cầu bởi %s....\n"
+msgstr "Đang đặt tình trạng thành %s như yêu cầu bởi %s….\n"
 
 msgid "Interrupt: Stopping pipeline ...\n"
-msgstr "Ngắt: đang ngừng chạy đường ống ...\n"
+msgstr "Ngắt: đang ngừng chạy đường ống …\n"
 
 #, c-format
 msgid "Progress: (%s) %s\n"
@@ -1207,11 +1217,13 @@
 msgid "Output messages"
 msgstr "Thông điệp xuất"
 
-msgid "Do not output status information of TYPE"
-msgstr "Không xuất thông tin trạng thái KIỂU"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "KIỂU1,KIỂU2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "Không cài đặt bộ quản lý lỗi"
@@ -1237,25 +1249,25 @@
 msgstr "LỖI: không tìm thấy phần tử “đường ống” (pipeline).\n"
 
 msgid "Setting pipeline to PAUSED ...\n"
-msgstr "Đang đặt đường ống thành BỊ TẠM DỪNG ...\n"
+msgstr "Đang đặt đường ống thành BỊ TẠM DỪNG …\n"
 
 msgid "ERROR: Pipeline doesn't want to pause.\n"
 msgstr "LỖI: đường ống không tạm dừng được.\n"
 
 msgid "Pipeline is live and does not need PREROLL ...\n"
-msgstr "Đường ống đang sống và không cần TIỀN CUỘN ...\n"
+msgstr "Đường ống đang sống và không cần TIỀN CUỘN …\n"
 
 msgid "Pipeline is PREROLLING ...\n"
-msgstr "Đường ống ĐANG TIỀN CUỘN ...\n"
+msgstr "Đường ống ĐANG TIỀN CUỘN …\n"
 
 msgid "ERROR: pipeline doesn't want to preroll.\n"
 msgstr "LỖI: đường ống không tiền cuộn được.\n"
 
 msgid "Pipeline is PREROLLED ...\n"
-msgstr "Đường ống ĐÃ TIỀN CUỘN ...\n"
+msgstr "Đường ống ĐÃ TIỀN CUỘN …\n"
 
 msgid "Setting pipeline to PLAYING ...\n"
-msgstr "Đang đặt đường ống thành ĐANG PHÁT ...\n"
+msgstr "Đang đặt đường ống thành ĐANG PHÁT …\n"
 
 msgid "ERROR: pipeline doesn't want to play.\n"
 msgstr "LỖI: đường ống không phát được.\n"
@@ -1269,13 +1281,13 @@
 msgstr "EOS khi tắt máy được bật -- chờ sau Lỗi EOS\n"
 
 msgid "Waiting for EOS...\n"
-msgstr "Đang đợi kết thúc luồng...\n"
+msgstr "Đang đợi kết thúc luồng…\n"
 
 msgid "EOS received - stopping pipeline...\n"
-msgstr "Nhận được tín hiệu kết thúc luồng: đang ngừng chạy đường ống ...\n"
+msgstr "Nhận được tín hiệu kết thúc luồng: đang ngừng chạy đường ống …\n"
 
 msgid "Interrupt while waiting for EOS - stopping pipeline...\n"
-msgstr "Ngắt trong khi chờ EOS - đang dừng đường ống lại...\n"
+msgstr "Ngắt trong khi chờ EOS - đang dừng đường ống lại…\n"
 
 msgid "An error happened while waiting for EOS\n"
 msgstr "Gặp lỗi trong khi đợi kết thúc luồng\n"
@@ -1284,13 +1296,19 @@
 msgstr "Thực hiện xong sau %"
 
 msgid "Setting pipeline to READY ...\n"
-msgstr "Đang đặt đường ống thành SẴN_SÀNG ...\n"
+msgstr "Đang đặt đường ống thành SẴN_SÀNG …\n"
 
 msgid "Setting pipeline to NULL ...\n"
-msgstr "Đang đặt đường ống thành VÔ_GIÁ_TRỊ ...\n"
+msgstr "Đang đặt đường ống thành VÔ_GIÁ_TRỊ …\n"
 
 msgid "Freeing pipeline ...\n"
-msgstr "Đang giải phóng đường ống ...\n"
+msgstr "Đang giải phóng đường ống …\n"
+
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "Không xuất thông tin trạng thái KIỂU"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "KIỂU1,KIỂU2,…"
 
 #~ msgid "link without source element"
 #~ msgstr "liên kết không có phần tử nguồn"
@@ -1312,7 +1330,7 @@
 
 #~ msgid "Usage: gst-xmllaunch <file.xml> [ element.property=value ... ]\n"
 #~ msgstr ""
-#~ "Cách sử dụng: gst-xmllaunch <tập_tin.xml> [ yếu_tố.tài_sản=giá_trị ...]\n"
+#~ "Cách sử dụng: gst-xmllaunch <tập_tin.xml> [ yếu_tố.tài_sản=giá_trị …]\n"
 
 #~ msgid "ERROR: parse of xml file '%s' failed.\n"
 #~ msgstr "LỖI: lỗi phân tách tập tin xml “%s”.\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 40b9ae1..9d6e6c5 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 fd4f49e..fe35f8c 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,20 +1,22 @@
 # Chinese (simplified) translation about gstreamer.
 # This file is put in the public domain.
 # Funda Wang <fundawang@linux.net.cn>, 2005.
-# Ji ZhengYu <zhengyuji@gmail.com>, 2008, 2009, 2010.
+# Ji ZhengYu <zhengyuji@gmail.com>, 2008, 2009.
+# zwpwjwtz <zwpwjwtz@126.com>, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 0.10.25.2\n"
+"Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-12-18 12:00+0100\n"
-"PO-Revision-Date: 2010-02-02 18:58+0800\n"
-"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\n"
+"PO-Revision-Date: 2015-09-05 23:18+0800\n"
+"Last-Translator: zwpwjwtz <zwpwjwtz@126.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.8.4\n"
 
 msgid "Print the GStreamer version"
 msgstr "打印 GStreamer 版本"
@@ -25,10 +27,9 @@
 msgid "Print available debug categories and exit"
 msgstr "打印可用的调试类别并退出"
 
-#, fuzzy
 msgid ""
 "Default debug level from 1 (only error) to 9 (anything) or 0 for no output"
-msgstr "默认调试级别,从 1(仅有错误)到 5(所有内容),0代表无输出"
+msgstr "默认调试级别,从 1(仅有错误)到 9(所有内容),0代表无输出"
 
 msgid "LEVEL"
 msgstr "级别"
@@ -49,7 +50,7 @@
 msgid ""
 "Changes coloring mode of the debug log. Possible modes: off, on, disable, "
 "auto, unix"
-msgstr ""
+msgstr "改变调试日志的颜色模式。可能的模式有:off、on、disable、auto和unix"
 
 msgid "Disable debugging"
 msgstr "禁止调试"
@@ -79,7 +80,7 @@
 msgstr "禁止更新寄存器"
 
 msgid "Disable spawning a helper process while scanning the registry"
-msgstr "扫描寄存器时不可启用帮助"
+msgstr "扫描寄存器时禁止启动帮助进程"
 
 msgid "GStreamer Options"
 msgstr "GStreamer 选项"
@@ -104,18 +105,16 @@
 "GStreamer error: state change failed and some element failed to post a "
 "proper error message with the reason for the failure."
 msgstr ""
-"GStreamer 错误: 状态更改错误,而且某些组件无法对错误原因给出合适的错误信息。"
+"Gstreamer 错误:改变状态时失败,并且一些组件无法提供有关错误原因的信息。"
 
-#, fuzzy
 msgid "Internal GStreamer error: pad problem."
 msgstr "GStreamer 内部错误: 填充问题。"
 
 msgid "Internal GStreamer error: thread problem."
 msgstr "GStreamer 内部错误:线程问题。"
 
-#, fuzzy
 msgid "GStreamer error: negotiation problem."
-msgstr "GStreamer 内部错误: 协商问题。"
+msgstr "GStreamer 错误: 协商问题。"
 
 msgid "Internal GStreamer error: event problem."
 msgstr "GStreamer 内部错误:事件问题。"
@@ -132,9 +131,8 @@
 msgid "Your GStreamer installation is missing a plug-in."
 msgstr "您的 GStreamer 安装缺少插件。"
 
-#, fuzzy
 msgid "GStreamer error: clock problem."
-msgstr "GStreamer 内部错误:始终错误。"
+msgstr "GStreamer 错误:时钟错误。"
 
 msgid ""
 "This application is trying to use GStreamer functionality that has been "
@@ -154,7 +152,7 @@
 msgstr "无法配置支持库。"
 
 msgid "Encoding error."
-msgstr ""
+msgstr "编码错误。"
 
 msgid "GStreamer encountered a general resource error."
 msgstr "GStreamer 遇到了常规资源错误。"
@@ -195,9 +193,8 @@
 msgid "No space left on the resource."
 msgstr "资源上无剩余空间。"
 
-#, fuzzy
 msgid "Not authorized to access resource."
-msgstr "资源上无剩余空间。"
+msgstr "无权访问资源。"
 
 msgid "GStreamer encountered a general stream error."
 msgstr "GStreamer 遇到了常规流错误。"
@@ -274,7 +271,7 @@
 msgstr "排序后的艺术家"
 
 msgid "person(s) responsible for the recording for sorting purposes"
-msgstr "用于排序的负责录制的个人"
+msgstr "用于排序的负责录制的人名"
 
 msgid "album"
 msgstr "专辑"
@@ -286,19 +283,19 @@
 msgstr "排序后的专辑名"
 
 msgid "album containing this data for sorting purposes"
-msgstr "用于排序的包含此数据的专辑"
+msgstr "用于排序的专辑名"
 
 msgid "album artist"
-msgstr "专辑艺术家"
+msgstr "艺术家列表"
 
 msgid "The artist of the entire album, as it should be displayed"
-msgstr "所应当显示的整张专辑的艺术家"
+msgstr "用于显示的整张专辑的艺术家"
 
 msgid "album artist sortname"
-msgstr "专辑艺术家排序"
+msgstr "排序后的艺术家名"
 
 msgid "The artist of the entire album, as it should be sorted"
-msgstr "排序后的整张专辑艺术家"
+msgstr "用于排序的整张专辑的艺术家名"
 
 msgid "date"
 msgstr "日期"
@@ -306,13 +303,11 @@
 msgid "date the data was created (as a GDate structure)"
 msgstr "创建数据的日期(为 GDate 结构)"
 
-#, fuzzy
 msgid "datetime"
-msgstr "日期"
+msgstr "日期和时间"
 
-#, fuzzy
 msgid "date and time the data was created (as a GstDateTime structure)"
-msgstr "创建数据的日期(为 GDate 结构)"
+msgstr "创建数据的日期和时间为 GDate 结构)"
 
 msgid "genre"
 msgstr "流派"
@@ -403,12 +398,11 @@
 msgid "URI to the copyright notice of the data"
 msgstr "数据的版权警告 URI"
 
-#, fuzzy
 msgid "encoded by"
-msgstr "编码器"
+msgstr "编码者为"
 
 msgid "name of the encoding person or organization"
-msgstr ""
+msgstr "进行编码的人或组织"
 
 msgid "contact"
 msgstr "联系人"
@@ -471,10 +465,10 @@
 msgstr "字幕编码数据保存在"
 
 msgid "container format"
-msgstr "内容格式"
+msgstr "容器格式"
 
 msgid "container format the data is stored in"
-msgstr "数据以...格式存储"
+msgstr "用于储存数据的容器格式"
 
 msgid "bitrate"
 msgstr "比特率"
@@ -551,16 +545,14 @@
 msgid "language code"
 msgstr "语言代码"
 
-#, fuzzy
 msgid "language code for this stream, conforming to ISO-639-1 or ISO-639-2"
-msgstr "此流的语言代码,遵从为 ISO-639-1"
+msgstr "此流的语言代码(依照 ISO-639-1 或 ISO-639-2 规范)"
 
-#, fuzzy
 msgid "language name"
-msgstr "语言代码"
+msgstr "语言名称"
 
 msgid "freeform name of the language this stream is in"
-msgstr ""
+msgstr "此流的语言名称(freeform格式)"
 
 msgid "image"
 msgstr "图像"
@@ -599,7 +591,7 @@
 msgid ""
 "human readable descriptive location of where the media has been recorded or "
 "produced"
-msgstr "人们易理解的位置描述或是此媒体在哪里录制或是产生"
+msgstr "有关此媒体在何处录制或生产的可读信息"
 
 msgid "geo location latitude"
 msgstr "地理纬度"
@@ -633,65 +625,60 @@
 "根据 WGS84(平均海平面为 0 米)标准确定的地理海拔高度(有关此媒体在哪里录制或"
 "产生的)"
 
-#, fuzzy
 msgid "geo location country"
-msgstr "地理经度"
+msgstr "地理位置(国家)"
 
-#, fuzzy
 msgid "country (english name) where the media has been recorded or produced"
-msgstr "人们易理解的位置描述或是此媒体在哪里录制或是产生"
+msgstr "媒体录制或制作地所在国家(的英语名)"
 
-#, fuzzy
 msgid "geo location city"
-msgstr "地理纬度"
+msgstr "地理位置(城市)"
 
-#, fuzzy
 msgid "city (english name) where the media has been recorded or produced"
-msgstr "人们易理解的位置描述或是此媒体在哪里录制或是产生"
+msgstr "媒体录制或制作地所在城市(的英语名)"
 
-#, fuzzy
 msgid "geo location sublocation"
-msgstr "地理海拔"
+msgstr "地理区域(区)"
 
 msgid ""
 "a location within a city where the media has been produced or created (e.g. "
 "the neighborhood)"
-msgstr ""
+msgstr "媒体录制或制作地所在城市的区(的英语名),如“the neighborhood”"
 
-#, fuzzy
 msgid "geo location horizontal error"
-msgstr "地理位置名称"
+msgstr "地理位置(水平误差)"
 
 msgid "expected error of the horizontal positioning measures (in meters)"
-msgstr ""
+msgstr "预期的水平定位测量误差(单位为米)"
 
-#, fuzzy
 msgid "geo location movement speed"
-msgstr "地理经度"
+msgstr "地理位置(移动速度)"
 
 msgid ""
 "movement speed of the capturing device while performing the capture in m/s"
-msgstr ""
+msgstr "进行捕捉时捕捉设备的移动速度,单位:米每秒"
 
-#, fuzzy
 msgid "geo location movement direction"
-msgstr "地理海拔"
+msgstr "地理位置(移动方向)"
 
 msgid ""
 "indicates the movement direction of the device performing the capture of a "
 "media. It is represented as degrees in floating point representation, 0 "
 "means the geographic north, and increases clockwise"
 msgstr ""
+"进行捕捉时捕捉设备的移动方向。它由角度的浮点值表示,0为地理北极,且按顺时针方"
+"向增大"
 
-#, fuzzy
 msgid "geo location capture direction"
-msgstr "地理海拔"
+msgstr "地理位置(捕获方向)"
 
 msgid ""
 "indicates the direction the device is pointing to when capturing  a media. "
 "It is represented as degrees in floating point  representation, 0 means the "
 "geographic north, and increases clockwise"
 msgstr ""
+"进行捕捉时捕捉设备的朝向。它由角度的浮点值表示,0为地理北极,且按顺时针方向增"
+"大"
 
 #. TRANSLATORS: 'show name' = 'TV/radio/podcast show name' here
 msgid "show name"
@@ -702,14 +689,14 @@
 
 #. TRANSLATORS: 'show sortname' = 'TV/radio/podcast show name as used for sorting purposes' here
 msgid "show sortname"
-msgstr "排名显示"
+msgstr "显示排序名"
 
 msgid ""
 "Name of the tv/podcast/series show the media is from, for sorting purposes"
 msgstr "tv/podcast/series 名称代表此媒体来自何处(排名显示)"
 
 msgid "episode number"
-msgstr "场景编号"
+msgstr "年代"
 
 msgid "The episode number in the season the media is part of"
 msgstr "媒体是一季中的第几场景"
@@ -727,10 +714,10 @@
 msgstr "媒体歌词,通常用于歌曲"
 
 msgid "composer sortname"
-msgstr "排序后的作曲家"
+msgstr "排序后的作曲者"
 
 msgid "person(s) who composed the recording, for sorting purposes"
-msgstr "创作录音的人(排序显示)"
+msgstr "用于排序的负责制作的人名"
 
 msgid "grouping"
 msgstr "媒体组"
@@ -742,76 +729,72 @@
 "媒体组横跨多个音轨,就好像是一场音乐会的不同时段。这个概念范围比音轨高,但小"
 "于专辑"
 
-#, fuzzy
 msgid "user rating"
-msgstr "时期"
+msgstr "用户评级"
 
 msgid ""
 "Rating attributed by a user. The higher the rank, the more the user likes "
 "this media"
-msgstr ""
+msgstr "由用户提供的评级。评级越高,意味着有越多的用户喜欢这一媒体"
 
 msgid "device manufacturer"
-msgstr ""
+msgstr "设备商"
 
-#, fuzzy
 msgid "Manufacturer of the device used to create this media"
-msgstr "用于编码此流的编码器版本"
+msgstr "用于创建此媒体的设备的生产厂家"
 
 msgid "device model"
-msgstr ""
+msgstr "设备模式"
 
-#, fuzzy
 msgid "Model of the device used to create this media"
-msgstr "用于编码此流的编码器版本"
+msgstr "用于创建此媒体的设备的模式"
 
-#, fuzzy
 msgid "application name"
-msgstr "地理位置名称"
+msgstr "应用程序名称"
 
 msgid "Application used to create the media"
-msgstr ""
+msgstr "用于创建此媒体的应用程序"
 
 msgid "application data"
-msgstr ""
+msgstr "应用程序数据"
 
 msgid "Arbitrary application data to be serialized into the media"
-msgstr ""
+msgstr "被序列化后写入到媒体中的应用程序数据"
 
 msgid "image orientation"
-msgstr ""
+msgstr "图像方向"
 
 msgid "How the image should be rotated or flipped before display"
-msgstr ""
+msgstr "指示应如何旋转或翻转该图像后再显示它"
 
 msgid "publisher"
-msgstr ""
+msgstr "出版者"
 
 msgid "Name of the label or publisher"
-msgstr ""
+msgstr "标签或出版商的名称"
 
 msgid "interpreted-by"
-msgstr ""
+msgstr "解说者为"
 
 msgid "Information about the people behind a remix and similar interpretations"
-msgstr ""
+msgstr "混音(或类似解说)作者的信息"
 
 msgid "midi-base-note"
-msgstr ""
+msgstr "基于midi的注解"
 
 msgid "Midi note number of the audio track."
-msgstr ""
+msgstr "音频轨的midi注解编号"
 
 msgid ", "
 msgstr ", "
 
 #, c-format
 msgid "No URI handler for the %s protocol found"
-msgstr ""
+msgstr "未找到用于 %s 协议的URI处理器"
 
 #, c-format
 msgid "URI scheme '%s' not supported"
-msgstr ""
+msgstr "不支持URI方案“%s”"
 
 #, c-format
 msgid "ERROR: from element %s: %s\n"
@@ -827,11 +810,11 @@
 
 #, c-format
 msgid "link has no source [sink=%s@%p]"
-msgstr ""
+msgstr "链接没有源 [汇为 %s@%p]"
 
 #, c-format
 msgid "link has no sink [source=%s@%p]"
-msgstr ""
+msgstr "链接没有汇 [源为 %s@%p]"
 
 #, c-format
 msgid "no property \"%s\" in element \"%s\""
@@ -851,11 +834,11 @@
 
 #, c-format
 msgid "unexpected reference \"%s\" - ignoring"
-msgstr ""
+msgstr "未预期的引用“%s” - 忽略"
 
 #, c-format
 msgid "unexpected pad-reference \"%s\" - ignoring"
-msgstr ""
+msgstr "未预期的填充引用“%s” - 忽略"
 
 #, c-format
 msgid "could not parse caps \"%s\""
@@ -870,24 +853,24 @@
 msgstr "URI“%s”无源组件"
 
 msgid "syntax error"
-msgstr ""
+msgstr "语法错误"
 
 msgid "bin"
-msgstr ""
+msgstr "储仓"
 
-#, fuzzy, c-format
+#, c-format
 msgid "specified empty bin \"%s\", not allowed"
 msgstr "不允许指定空储仓“%s”"
 
-#, fuzzy, c-format
+#, c-format
 msgid "no bin \"%s\", unpacking elements"
-msgstr "找不到储仓“%s”,跳过"
+msgstr "找不到用于解包组件的储仓“%s”"
 
 msgid "empty pipeline not allowed"
 msgstr "不允许空管道"
 
 msgid "A lot of buffers are being dropped."
-msgstr "很多缓冲区正被丢弃。"
+msgstr "许多缓冲被丢弃。"
 
 msgid "Internal data flow problem."
 msgstr "内部数据流问题。"
@@ -902,7 +885,7 @@
 msgstr "内部时钟错误。"
 
 msgid "Failed to map buffer."
-msgstr ""
+msgstr "映射缓冲失败。"
 
 msgid "Filter caps"
 msgstr "过滤分析器"
@@ -914,6 +897,12 @@
 "限制所允许的功能 (NULL 表示无限制)。此属性可以为所提供的 GstCaps 对象设置一个"
 "关联应用。"
 
+msgid "Caps Change Mode"
+msgstr "分析器变更模式"
+
+msgid "Filter caps change behaviour"
+msgstr "过滤分析器变更行为"
+
 msgid "No Temp directory specified."
 msgstr "未指定临时目录。"
 
@@ -925,9 +914,8 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "无法打开文件“%s”读取。"
 
-#, fuzzy
 msgid "Error while writing to download file."
-msgstr "写入文件“%s”时出错。"
+msgstr "写入下载文件时出错。"
 
 msgid "No file name specified for writing."
 msgstr "未指定写入的文件名。"
@@ -981,6 +969,9 @@
 msgid "force caps without doing a typefind"
 msgstr "不做类型查找的强制分析"
 
+msgid "Stream contains not enough data."
+msgstr "流中没有足够数据。"
+
 msgid "Stream contains no data."
 msgstr "流中不含数据"
 
@@ -993,17 +984,20 @@
 msgid "writable"
 msgstr "可写"
 
+msgid "deprecated"
+msgstr "已废弃"
+
 msgid "controllable"
 msgstr "可控制"
 
 msgid "changeable in NULL, READY, PAUSED or PLAYING state"
-msgstr ""
+msgstr "可以在NULL、READY、PAUSED或PLAYING状态下改变"
 
 msgid "changeable only in NULL, READY or PAUSED state"
-msgstr ""
+msgstr "只能在NULL、READY或PAUSED状态下改变"
 
 msgid "changeable only in NULL or READY state"
-msgstr ""
+msgstr "只能在NULL、或READY状态下改变"
 
 msgid "Blacklisted files:"
 msgstr "文件黑名单:"
@@ -1043,19 +1037,19 @@
 "                                       Useful in connection with external "
 "automatic plugin installation mechanisms"
 msgstr ""
-"显示机器可解析的指定插件或所有插件提供的特性列表。\n"
-"                                       与外部自动插件安装机制连接时有用"
+"打印机器可解析的指定(或所有)插件提供的特性列表。\n"
+"                                       可以用于与外部自动插件安装机制的连接"
 
 msgid "List the plugin contents"
 msgstr "列出插件信息"
 
 msgid "Check if the specified element or plugin exists"
-msgstr ""
+msgstr "检查指定的组件或插件是否存在"
 
 msgid ""
 "When checking if an element or plugin exists, also check that its version is "
 "at least the version specified"
-msgstr ""
+msgstr "当检查组件或插件是否存在时,也检测它们的版本是否大于等于指定版本"
 
 msgid "Print supported URI schemes, with the elements that implement them"
 msgstr "打印所支持的 URI 样式及它们的关联组件"
@@ -1069,23 +1063,23 @@
 msgstr "没有那样的组件或插件‘%s’\n"
 
 msgid "Index statistics"
-msgstr ""
+msgstr "索引统计"
 
 #, c-format
 msgid "Got message #%u from element \"%s\" (%s): "
-msgstr "从组件\"%2$s\"(%3$s)中获取信息 #%1$u:"
+msgstr "从组件“%2$s”获得消息 #%1$u(%3$s): "
 
 #, c-format
 msgid "Got message #%u from pad \"%s:%s\" (%s): "
-msgstr "从组件\"%2$s:%3$s\"(%4$s)中获取信息 #%1$u:"
+msgstr "从填充“%2$s:%3$s”获得消息 #%1$u(%4$s): "
 
 #, c-format
 msgid "Got message #%u from object \"%s\" (%s): "
-msgstr "从组件\"%2$s\"(%3$s)中获取信息 #%1$u:"
+msgstr "从对象“%2$s”获得消息 #%1$u(%3$s): "
 
 #, c-format
 msgid "Got message #%u (%s): "
-msgstr "获取信息 #%u (%s):"
+msgstr "获得消息 #%u(%s): "
 
 #, c-format
 msgid "Got EOS from element \"%s\".\n"
@@ -1093,30 +1087,29 @@
 
 #, c-format
 msgid "FOUND TAG      : found by element \"%s\".\n"
-msgstr "找到标识    :由组件“%s”找到。\n"
+msgstr "找到标识      :由组件“%s”找到。\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TAG      : found by pad \"%s:%s\".\n"
-msgstr "找到标识    :由组件“%s:%s”找到。\n"
+msgstr "找到标识      :由填充“%s:%s”找到。\n"
 
 #, c-format
 msgid "FOUND TAG      : found by object \"%s\".\n"
-msgstr "找到标识    :由组件“%s”找到。\n"
+msgstr "找到标识      :由对象“%s”找到。\n"
 
 msgid "FOUND TAG\n"
 msgstr "找到标识\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TOC      : found by element \"%s\".\n"
-msgstr "找到标识    :由组件“%s”找到。\n"
+msgstr "找到TOC      :由组件“%s”找到。\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "FOUND TOC      : found by object \"%s\".\n"
-msgstr "找到标识    :由组件“%s”找到。\n"
+msgstr "找到TOC      :由对象“%s”找到。\n"
 
-#, fuzzy
 msgid "FOUND TOC\n"
-msgstr "找到标识\n"
+msgstr "找到TOC\n"
 
 #, c-format
 msgid ""
@@ -1131,11 +1124,10 @@
 msgstr "警告:来自组件 %s:%s\n"
 
 msgid "Prerolled, waiting for buffering to finish...\n"
-msgstr "Prerolled,等待缓冲完成...\n"
+msgstr "已加载预告片,等待缓冲完成...\n"
 
-#, fuzzy
 msgid "Prerolled, waiting for progress to finish...\n"
-msgstr "Prerolled,等待缓冲完成...\n"
+msgstr "已加载预告片,等待处理完成...\n"
 
 msgid "buffering..."
 msgstr "正在缓冲..."
@@ -1158,24 +1150,24 @@
 
 #, c-format
 msgid "Progress: (%s) %s\n"
-msgstr ""
+msgstr "进度:(%s)%s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Missing element: %s\n"
-msgstr "无组件“%s”"
+msgstr "缺少组件:“%s”\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Got context from element '%s': %s=%s\n"
-msgstr "警告:来自组件 %s:%s\n"
+msgstr "从组件“%s”获取上下文:%s=%s\n"
 
 msgid "Output tags (also known as metadata)"
 msgstr "输出标识(也可认为是元数据)"
 
 msgid "Output TOC (chapters and editions)"
-msgstr ""
+msgstr "输出TOC(章节和版本)"
 
 msgid "Output status information and property notifications"
-msgstr "输出状态信息和属性通告"
+msgstr "输出状态信息和属性通知"
 
 msgid "Do not print any progress information"
 msgstr "不打印任何进度信息"
@@ -1183,21 +1175,22 @@
 msgid "Output messages"
 msgstr "输出信息"
 
-msgid "Do not output status information of TYPE"
-msgstr "不输出类型的状态信息"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "类型1,类型2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "不安装错误的处理程序"
 
-#, fuzzy
 msgid "Force EOS on sources before shutting the pipeline down"
 msgstr "关闭管道前强制对源发出 EOS 信号"
 
 msgid "Gather and print index statistics"
-msgstr ""
+msgstr "收集并显示索引统计"
 
 #, c-format
 msgid "ERROR: pipeline could not be constructed: %s.\n"
@@ -1240,9 +1233,8 @@
 msgid "EOS on shutdown enabled -- Forcing EOS on the pipeline\n"
 msgstr "允许关闭时发出 EOS 信号 —— 强制对管道发出 EOS 信号\n"
 
-#, fuzzy
 msgid "EOS on shutdown enabled -- waiting for EOS after Error\n"
-msgstr "允许关闭时发出 EOS 信号 —— 强制对管道发出 EOS 信号\n"
+msgstr "允许关闭时发出 EOS 信号 —— 发生错误后等待EOS信号\n"
 
 msgid "Waiting for EOS...\n"
 msgstr "等待 EOS 信号...\n"
@@ -1250,9 +1242,8 @@
 msgid "EOS received - stopping pipeline...\n"
 msgstr "收到 EOS 信号 - 中止管道 ...\n"
 
-#, fuzzy
 msgid "Interrupt while waiting for EOS - stopping pipeline...\n"
-msgstr "中断: 中止管道 ...\n"
+msgstr "等待EOS信号时被中断 - 正在中止管道...\n"
 
 msgid "An error happened while waiting for EOS\n"
 msgstr "等待 EOS 信号时出现一个错误\n"
@@ -1269,6 +1260,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "释放管道资源 ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "不输出类型的状态信息"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "类型1,类型2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "不带源组件的链接"
 
@@ -1331,3 +1328,6 @@
 
 #~ msgid "original location of file as a URI"
 #~ msgstr "文件原始位置作为 URI 地址"
+
+#~ msgid "Do not install signal handlers for SIGUSR1 and SIGUSR2"
+#~ msgstr "不设置 SIGUSR1 和 SIGUSR2 信号的处理器"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 06d0288..62f7001 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 a07ad80..8bedda8 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: 2014-12-18 12:00+0100\n"
+"POT-Creation-Date: 2015-09-18 18:55+0200\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"
@@ -923,6 +923,12 @@
 "property takes a reference to the supplied GstCaps object."
 msgstr "限制允許的capabilities (NULL表示不限制),打開該屬性將會參照GstCaps物件"
 
+msgid "Caps Change Mode"
+msgstr ""
+
+msgid "Filter caps change behaviour"
+msgstr ""
+
 msgid "No Temp directory specified."
 msgstr "未指定暫存目錄"
 
@@ -990,6 +996,10 @@
 msgid "force caps without doing a typefind"
 msgstr "不尋找型態,直些強迫caps"
 
+#, fuzzy
+msgid "Stream contains not enough data."
+msgstr "資料串流中沒有資料"
+
 msgid "Stream contains no data."
 msgstr "資料串流中沒有資料"
 
@@ -1002,6 +1012,9 @@
 msgid "writable"
 msgstr "可寫"
 
+msgid "deprecated"
+msgstr ""
+
 msgid "controllable"
 msgstr "可控制"
 
@@ -1192,11 +1205,13 @@
 msgid "Output messages"
 msgstr "輸出訊息"
 
-msgid "Do not output status information of TYPE"
-msgstr "不顯示和 TYPE 有關的狀態資訊"
+msgid ""
+"Do not output status information for the specified property if verbose "
+"output is enabled (can be used multiple times)"
+msgstr ""
 
-msgid "TYPE1,TYPE2,..."
-msgstr "TYPE1,TYPE2,..."
+msgid "PROPERTY-NAME"
+msgstr ""
 
 msgid "Do not install a fault handler"
 msgstr "不安裝錯誤處理程式"
@@ -1275,6 +1290,12 @@
 msgid "Freeing pipeline ...\n"
 msgstr "釋放pipeline ...\n"
 
+#~ msgid "Do not output status information of TYPE"
+#~ msgstr "不顯示和 TYPE 有關的狀態資訊"
+
+#~ msgid "TYPE1,TYPE2,..."
+#~ msgstr "TYPE1,TYPE2,..."
+
 #~ msgid "link without source element"
 #~ msgstr "管線中沒有來源元件"
 
diff --git a/scripts/gst-uninstalled b/scripts/gst-uninstalled
index 8f9f799..648582a 100755
--- a/scripts/gst-uninstalled
+++ b/scripts/gst-uninstalled
@@ -101,7 +101,7 @@
 done
 
 # GStreamer plugins bad libraries
-for path in basecamerabinsrc codecparsers uridownloader egl gl insertbin interfaces mpegts video base
+for path in adaptivedemux basecamerabinsrc codecparsers uridownloader egl gl insertbin interfaces mpegts video base
 do
   LD_LIBRARY_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path/.libs:$LD_LIBRARY_PATH
   DYLD_LIBRARY_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path/.libs:$DYLD_LIBRARY_PATH
@@ -157,7 +157,6 @@
 :$GST/gst-plugins-bad/sys\
 :$GST/gst-libav/ext/\
 :$GST/gst-ffmpeg/ext/\
-:$GST/gnonlin/gnl/.libs\
 :$GST/gst-omx/omx/.libs\
 :$GST/clutter-gst/clutter-gst/.libs\
 :$GST/gstreamer-vaapi/gst/vaapi/.libs\
@@ -165,6 +164,8 @@
 :$GST/farsight2/gst\
 :$GST/farsight2/transmitters\
 :$GST/libnice/gst\
+:$GST/gst-rpicamsrc/src/.libs\
+:$GST/gst-editing-services/plugins/nle/.libs\
 ${GST_PLUGIN_PATH:+:$GST_PLUGIN_PATH}"
 
 # don't use any system-installed plug-ins at all
@@ -180,7 +181,7 @@
 # in the system-configured man paths from man.config
 # this still doesn't make it work for the uninstalled case, since man goes
 # look for a man directory "nearby" instead of the directory I'm telling it to
-export MANPATH=$GST/gstreamer/tools:$GST_PREFIX/share/man:$MANPATH
+export MANPATH=$GST/gstreamer/tools:$GST_PREFIX/share/man:$GST/gst-editing-services/docs/man/:$MANPATH
 if [ -z "$PYTHON" ]; then PYTHON="python"; fi
 pythonver=`$PYTHON -c "import sys; print (sys.version[:3])"`
 pythonsites=`$PYTHON -c "import site; print(':'.join(site.getsitepackages()))"`
@@ -207,7 +208,9 @@
 # gst-devtools/validate
 export PATH=$GST/gst-devtools/validate/tools:$PATH
 export PKG_CONFIG_PATH=$GST/gst-devtools/validate/pkgconfig:$PKG_CONFIG_PATH
-export GST_VALIDATE_SCENARIOS_PATH=$GST/gst-devtools/validate/data:$GST_VALIDATE_SCENARIOS_PATH
+export GST_VALIDATE_SCENARIOS_PATH=$GST/gst-devtools/validate/data/scenarios:$GST_VALIDATE_SCENARIOS_PATH
+export GST_VALIDATE_APPS_DIR=$GST_VALIDATE_APPS_DIR:$GST/gst-editing-services/tests/validate/
+export GST_VALIDATE_PLUGIN_PATH=$GST_VALIDATE_PLUGIN_PATH:$GST/gst-devtools/validate/plugins/
 
 if [ -d "$GST/gst-libav" -a -d "$GST/gst-ffmpeg" ]; then
   echo
diff --git a/test-driver b/test-driver
index d306056..8e575b0 100755
--- a/test-driver
+++ b/test-driver
@@ -3,7 +3,7 @@
 
 scriptversion=2013-07-13.22; # UTC
 
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -106,11 +106,14 @@
 # Test script is run here.
 "$@" >$log_file 2>&1
 estatus=$?
+
 if test $enable_hard_errors = no && test $estatus -eq 99; then
-  estatus=1
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
 fi
 
-case $estatus:$expect_failure in
+case $tweaked_estatus:$expect_failure in
   0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
   0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
   77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
@@ -119,6 +122,12 @@
   *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
 esac
 
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
 # Report outcome to console.
 echo "${col}${res}${std}: $test_name"
 
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 867ea2d..cf4f293 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -176,6 +187,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -212,7 +224,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -303,6 +320,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -314,9 +332,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -338,6 +358,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -399,8 +420,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -466,6 +489,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -518,7 +542,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -813,6 +836,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in
index fb5c6a0..eec38dd 100644
--- a/tests/benchmarks/Makefile.in
+++ b/tests/benchmarks/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -84,8 +94,6 @@
 	gstpollstress$(EXEEXT) gstpoolstress$(EXEEXT) \
 	gstclockstress$(EXEEXT) gstbufferstress$(EXEEXT)
 subdir = tests/benchmarks
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -94,6 +102,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -111,7 +120,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -124,6 +133,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -242,6 +252,7 @@
   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@
@@ -253,7 +264,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -344,6 +360,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -355,9 +372,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -379,6 +398,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -440,8 +460,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -507,6 +529,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -539,7 +562,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/benchmarks/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/benchmarks/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -871,6 +893,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/benchmarks/gstbufferstress.c b/tests/benchmarks/gstbufferstress.c
index 7871561..c9a4ac1 100644
--- a/tests/benchmarks/gstbufferstress.c
+++ b/tests/benchmarks/gstbufferstress.c
@@ -101,6 +101,7 @@
 
     if (error) {
       printf ("ERROR: g_thread_try_new() %s\n", error->message);
+      g_clear_error (&error);
       exit (-1);
     }
   }
diff --git a/tests/benchmarks/gstclockstress.c b/tests/benchmarks/gstclockstress.c
index 8dacf03..0d30900 100644
--- a/tests/benchmarks/gstclockstress.c
+++ b/tests/benchmarks/gstclockstress.c
@@ -75,6 +75,7 @@
 
     if (error) {
       printf ("ERROR: g_thread_try_new() %s\n", error->message);
+      g_clear_error (&error);
       exit (-1);
     }
   }
diff --git a/tests/benchmarks/gstpollstress.c b/tests/benchmarks/gstpollstress.c
index 09b2b06..fcfed15 100644
--- a/tests/benchmarks/gstpollstress.c
+++ b/tests/benchmarks/gstpollstress.c
@@ -165,6 +165,7 @@
 
     if (error) {
       printf ("ERROR: g_thread_try_new() %s\n", error->message);
+      g_clear_error (&error);
       exit (-1);
     }
   }
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index f188b1a..07ad657 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -7,7 +7,7 @@
 REGISTRY_ENVIRONMENT = \
 	GST_REGISTRY=$(CHECK_REGISTRY)
 
-TESTS_ENVIRONMENT = \
+AM_TESTS_ENVIRONMENT = \
         GST_STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)"	\
         $(REGISTRY_ENVIRONMENT)					\
         GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner \
@@ -44,6 +44,12 @@
 endif
 endif
 
+if !GST_DISABLE_GST_DEBUG
+PRINTF_CHECKS = gst/gstprintf
+else
+PRINTF_CHECKS =
+endif
+
 LIBSABI_CHECKS = libs/libsabi
 
 if HAVE_CXX
@@ -69,12 +75,14 @@
 	gst/gstghostpad				\
 	gst/gstplugin				\
 	gst/gstpreset				\
+	gst/gstprotection			\
 	gst/gstquery				\
 	gst/gstregistry				\
 	gst/gsturi  				\
 	gst/gstutils				\
 	generic/sinks				\
 	elements/capsfilter			\
+	elements/concat				\
 	elements/fakesink			\
 	elements/fakesrc			\
 	elements/fdsrc			  	\
@@ -88,6 +96,7 @@
 	elements/queue                          \
 	elements/queue2                         \
 	elements/valve                          \
+	elements/streamiddemux			\
 	libs/baseparse				\
 	libs/basesrc				\
 	libs/basesink				\
@@ -123,6 +132,8 @@
 	gst/gstparamspecs			\
 	gst/gstpipeline				\
 	gst/gstpoll     			\
+	gst/gstprotection     			\
+	$(PRINTF_CHECKS)			\
 	gst/gstsegment				\
 	gst/gstsystemclock			\
 	gst/gstclock				\
@@ -147,10 +158,12 @@
 	libs/flowcombiner			\
 	libs/sparsefile				\
 	libs/collectpads			\
+	libs/gstharness				\
 	libs/gstnetclientclock			\
 	libs/gstnettimeprovider			\
 	libs/gsttestclock			\
 	libs/transform1				\
+	libs/transform2				\
 	tools/gstinspect
 
 # failing tests
@@ -181,8 +194,10 @@
 EXTRA_DIST = \
 	libs/test_transform.c
 
-AM_CFLAGS = $(GST_OBJ_CFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
-AM_CXXFLAGS = $(GST_OBJ_CXXFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+AM_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\""
 LDADD = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(GST_OBJ_LIBS)
@@ -193,6 +208,10 @@
 
 gst_gstutils_LDADD = $(LDADD) $(GSL_LIBS) $(GMP_LIBS)
 
+gst_gstprintf_LDADD = \
+	$(top_builddir)/gst/printf/libgstprintf.la \
+	$(LDADD)
+
 elements_fdsrc_CFLAGS=$(GST_OBJ_CFLAGS) $(AM_CFLAGS) \
 	-DTESTFILE=\"$(top_srcdir)/configure.ac\"
 elements_filesrc_CFLAGS=$(GST_OBJ_CFLAGS) $(AM_CFLAGS) \
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 09d3319..bbf784f 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,9 +90,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(top_srcdir)/common/check.mak $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am $(top_srcdir)/depcomp $(noinst_HEADERS) \
-	$(top_srcdir)/test-driver
 check_PROGRAMS = $(am__EXEEXT_1) gst/gstatomicqueue$(EXEEXT) \
 	gst/gstbuffer$(EXEEXT) gst/gstbufferlist$(EXEEXT) \
 	gst/gstbufferpool$(EXEEXT) gst/gstmeta$(EXEEXT) \
@@ -94,21 +101,23 @@
 	gst/gstminiobject$(EXEEXT) gst/gstobject$(EXEEXT) \
 	gst/gstpad$(EXEEXT) gst/gstparamspecs$(EXEEXT) \
 	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/gsttagsetter$(EXEEXT) \
 	gst/gsttask$(EXEEXT) gst/gsttoc$(EXEEXT) \
 	gst/gsttocsetter$(EXEEXT) gst/gstvalue$(EXEEXT) \
-	generic/states$(EXEEXT) $(am__EXEEXT_3) $(am__EXEEXT_4) \
-	$(am__EXEEXT_5) libs/adapter$(EXEEXT) libs/bitreader$(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) \
-	libs/gstnetclientclock$(EXEEXT) \
+	libs/gstharness$(EXEEXT) libs/gstnetclientclock$(EXEEXT) \
 	libs/gstnettimeprovider$(EXEEXT) libs/gsttestclock$(EXEEXT) \
-	libs/transform1$(EXEEXT) tools/gstinspect$(EXEEXT)
+	libs/transform1$(EXEEXT) libs/transform2$(EXEEXT) \
+	tools/gstinspect$(EXEEXT)
 noinst_PROGRAMS =
 subdir = tests/check
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -119,6 +128,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -136,7 +146,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -149,6 +159,8 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -156,12 +168,13 @@
 @GST_DISABLE_REGISTRY_FALSE@@GST_DISABLE_TRACE_FALSE@am__EXEEXT_1 = gst/gstabi$(EXEEXT)
 @HAVE_CXX_TRUE@am__EXEEXT_2 = gst/gstcpp$(EXEEXT) \
 @HAVE_CXX_TRUE@	libs/gstlibscpp$(EXEEXT)
-@GST_DISABLE_PARSE_FALSE@am__EXEEXT_3 = pipelines/simple-launch-lines$(EXEEXT) \
+@GST_DISABLE_GST_DEBUG_FALSE@am__EXEEXT_3 = gst/gstprintf$(EXEEXT)
+@GST_DISABLE_PARSE_FALSE@am__EXEEXT_4 = pipelines/simple-launch-lines$(EXEEXT) \
 @GST_DISABLE_PARSE_FALSE@	pipelines/cleanup$(EXEEXT) \
 @GST_DISABLE_PARSE_FALSE@	pipelines/parse-launch$(EXEEXT)
-@GST_DISABLE_PARSE_TRUE@am__EXEEXT_3 =  \
+@GST_DISABLE_PARSE_TRUE@am__EXEEXT_4 =  \
 @GST_DISABLE_PARSE_TRUE@	pipelines/parse-disabled$(EXEEXT)
-@GST_DISABLE_REGISTRY_FALSE@am__EXEEXT_4 = gst/gst$(EXEEXT) \
+@GST_DISABLE_REGISTRY_FALSE@am__EXEEXT_5 = gst/gst$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstbin$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstchildproxy$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstcontext$(EXEEXT) \
@@ -172,12 +185,14 @@
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstghostpad$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstplugin$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstpreset$(EXEEXT) \
+@GST_DISABLE_REGISTRY_FALSE@	gst/gstprotection$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstquery$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstregistry$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gsturi$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstutils$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	generic/sinks$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	elements/capsfilter$(EXEEXT) \
+@GST_DISABLE_REGISTRY_FALSE@	elements/concat$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	elements/fakesink$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	elements/fakesrc$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	elements/fdsrc$(EXEEXT) \
@@ -191,6 +206,7 @@
 @GST_DISABLE_REGISTRY_FALSE@	elements/queue$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	elements/queue2$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	elements/valve$(EXEEXT) \
+@GST_DISABLE_REGISTRY_FALSE@	elements/streamiddemux$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/baseparse$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesrc$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesink$(EXEEXT) \
@@ -201,7 +217,7 @@
 @GST_DISABLE_REGISTRY_FALSE@	pipelines/seek$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	pipelines/stress$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	pipelines/queue-error$(EXEEXT)
-am__EXEEXT_5 = libs/libsabi$(EXEEXT)
+am__EXEEXT_6 = libs/libsabi$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 elements_capsfilter_SOURCES = elements/capsfilter.c
 am__dirstamp = $(am__leading_dot)dirstamp
@@ -215,6 +231,12 @@
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
+elements_concat_SOURCES = elements/concat.c
+elements_concat_OBJECTS = elements/concat.$(OBJEXT)
+elements_concat_LDADD = $(LDADD)
+elements_concat_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 elements_fakesink_SOURCES = elements/fakesink.c
 elements_fakesink_OBJECTS = elements/fakesink.$(OBJEXT)
 elements_fakesink_LDADD = $(LDADD)
@@ -290,6 +312,12 @@
 elements_selector_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+elements_streamiddemux_SOURCES = elements/streamiddemux.c
+elements_streamiddemux_OBJECTS = elements/streamiddemux.$(OBJEXT)
+elements_streamiddemux_LDADD = $(LDADD)
+elements_streamiddemux_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 elements_tee_SOURCES = elements/tee.c
 elements_tee_OBJECTS = elements/tee.$(OBJEXT)
 elements_tee_LDADD = $(LDADD)
@@ -518,6 +546,20 @@
 gst_gstpreset_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_gstprintf_SOURCES = gst/gstprintf.c
+gst_gstprintf_OBJECTS = gst/gstprintf.$(OBJEXT)
+am__DEPENDENCIES_2 = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
+gst_gstprintf_DEPENDENCIES =  \
+	$(top_builddir)/gst/printf/libgstprintf.la \
+	$(am__DEPENDENCIES_2)
+gst_gstprotection_SOURCES = gst/gstprotection.c
+gst_gstprotection_OBJECTS = gst/gstprotection.$(OBJEXT)
+gst_gstprotection_LDADD = $(LDADD)
+gst_gstprotection_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_gstquery_SOURCES = gst/gstquery.c
 gst_gstquery_OBJECTS = gst/gstquery.$(OBJEXT)
 gst_gstquery_LDADD = $(LDADD)
@@ -586,9 +628,6 @@
 	$(am__DEPENDENCIES_1)
 gst_gstutils_SOURCES = gst/gstutils.c
 gst_gstutils_OBJECTS = gst/gstutils.$(OBJEXT)
-am__DEPENDENCIES_2 = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
-	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
-	$(am__DEPENDENCIES_1)
 gst_gstutils_DEPENDENCIES = $(am__DEPENDENCIES_2) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 gst_gstvalue_SOURCES = gst/gstvalue.c
@@ -673,6 +712,12 @@
 libs_flowcombiner_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+libs_gstharness_SOURCES = libs/gstharness.c
+libs_gstharness_OBJECTS = libs/gstharness.$(OBJEXT)
+libs_gstharness_LDADD = $(LDADD)
+libs_gstharness_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 am_libs_gstlibscpp_OBJECTS = libs/gstlibscpp.$(OBJEXT)
 libs_gstlibscpp_OBJECTS = $(am_libs_gstlibscpp_OBJECTS)
 libs_gstlibscpp_LDADD = $(LDADD)
@@ -719,6 +764,12 @@
 libs_transform1_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+libs_transform2_SOURCES = libs/transform2.c
+libs_transform2_OBJECTS = libs/transform2.$(OBJEXT)
+libs_transform2_LDADD = $(LDADD)
+libs_transform2_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 libs_typefindhelper_SOURCES = libs/typefindhelper.c
 libs_typefindhelper_OBJECTS = libs/typefindhelper.$(OBJEXT)
 libs_typefindhelper_LDADD = $(LDADD)
@@ -827,10 +878,45 @@
 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
-SOURCES = elements/capsfilter.c elements/fakesink.c elements/fakesrc.c \
-	elements/fdsrc.c elements/filesink.c elements/filesrc.c \
-	elements/funnel.c elements/identity.c elements/multiqueue.c \
-	elements/queue.c elements/queue2.c elements/selector.c \
+SOURCES = elements/capsfilter.c elements/concat.c elements/fakesink.c \
+	elements/fakesrc.c elements/fdsrc.c elements/filesink.c \
+	elements/filesrc.c elements/funnel.c elements/identity.c \
+	elements/multiqueue.c elements/queue.c elements/queue2.c \
+	elements/selector.c elements/streamiddemux.c elements/tee.c \
+	elements/valve.c generic/sinks.c generic/states.c gst/gst.c \
+	gst/gstabi.c gst/gstatomicqueue.c gst/gstbin.c gst/gstbuffer.c \
+	gst/gstbufferlist.c gst/gstbufferpool.c gst/gstbus.c \
+	gst/gstcaps.c gst/gstcapsfeatures.c gst/gstchildproxy.c \
+	gst/gstclock.c gst/gstcontext.c gst/gstcontroller.c \
+	$(gst_gstcpp_SOURCES) gst/gstdatetime.c gst/gstdevice.c \
+	gst/gstelement.c gst/gstelementfactory.c gst/gstevent.c \
+	gst/gstghostpad.c gst/gstinfo.c gst/gstiterator.c \
+	gst/gstmemory.c gst/gstmessage.c gst/gstmeta.c \
+	gst/gstminiobject.c gst/gstobject.c gst/gstpad.c \
+	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/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 \
+	libs/gstnettimeprovider.c libs/gsttestclock.c libs/libsabi.c \
+	libs/queuearray.c libs/sparsefile.c libs/transform1.c \
+	libs/transform2.c libs/typefindhelper.c pipelines/cleanup.c \
+	pipelines/parse-disabled.c pipelines/parse-launch.c \
+	pipelines/queue-error.c pipelines/seek.c \
+	pipelines/simple-launch-lines.c pipelines/stress.c \
+	tools/gstinspect.c
+DIST_SOURCES = elements/capsfilter.c elements/concat.c \
+	elements/fakesink.c elements/fakesrc.c elements/fdsrc.c \
+	elements/filesink.c elements/filesrc.c elements/funnel.c \
+	elements/identity.c elements/multiqueue.c elements/queue.c \
+	elements/queue2.c elements/selector.c elements/streamiddemux.c \
 	elements/tee.c elements/valve.c generic/sinks.c \
 	generic/states.c gst/gst.c gst/gstabi.c gst/gstatomicqueue.c \
 	gst/gstbin.c gst/gstbuffer.c gst/gstbufferlist.c \
@@ -843,52 +929,20 @@
 	gst/gstmessage.c gst/gstmeta.c gst/gstminiobject.c \
 	gst/gstobject.c gst/gstpad.c gst/gstparamspecs.c \
 	gst/gstpipeline.c gst/gstplugin.c gst/gstpoll.c \
-	gst/gstpreset.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/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/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/controller.c libs/flowcombiner.c libs/gstharness.c \
 	$(libs_gstlibscpp_SOURCES) libs/gstnetclientclock.c \
 	libs/gstnettimeprovider.c libs/gsttestclock.c libs/libsabi.c \
 	libs/queuearray.c libs/sparsefile.c libs/transform1.c \
-	libs/typefindhelper.c pipelines/cleanup.c \
-	pipelines/parse-disabled.c pipelines/parse-launch.c \
-	pipelines/queue-error.c pipelines/seek.c \
-	pipelines/simple-launch-lines.c pipelines/stress.c \
-	tools/gstinspect.c
-DIST_SOURCES = elements/capsfilter.c elements/fakesink.c \
-	elements/fakesrc.c elements/fdsrc.c elements/filesink.c \
-	elements/filesrc.c elements/funnel.c elements/identity.c \
-	elements/multiqueue.c elements/queue.c elements/queue2.c \
-	elements/selector.c elements/tee.c elements/valve.c \
-	generic/sinks.c generic/states.c gst/gst.c gst/gstabi.c \
-	gst/gstatomicqueue.c gst/gstbin.c gst/gstbuffer.c \
-	gst/gstbufferlist.c gst/gstbufferpool.c gst/gstbus.c \
-	gst/gstcaps.c gst/gstcapsfeatures.c gst/gstchildproxy.c \
-	gst/gstclock.c gst/gstcontext.c gst/gstcontroller.c \
-	$(gst_gstcpp_SOURCES) gst/gstdatetime.c gst/gstdevice.c \
-	gst/gstelement.c gst/gstelementfactory.c gst/gstevent.c \
-	gst/gstghostpad.c gst/gstinfo.c gst/gstiterator.c \
-	gst/gstmemory.c gst/gstmessage.c gst/gstmeta.c \
-	gst/gstminiobject.c gst/gstobject.c gst/gstpad.c \
-	gst/gstparamspecs.c gst/gstpipeline.c gst/gstplugin.c \
-	gst/gstpoll.c gst/gstpreset.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/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_gstlibscpp_SOURCES) libs/gstnetclientclock.c \
-	libs/gstnettimeprovider.c libs/gsttestclock.c libs/libsabi.c \
-	libs/queuearray.c libs/sparsefile.c libs/transform1.c \
-	libs/typefindhelper.c pipelines/cleanup.c \
+	libs/transform2.c libs/typefindhelper.c pipelines/cleanup.c \
 	pipelines/parse-disabled.c pipelines/parse-launch.c \
 	pipelines/queue-error.c pipelines/seek.c \
 	pipelines/simple-launch-lines.c pipelines/stress.c \
@@ -1122,6 +1176,8 @@
 TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
 TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
 	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/common/check.mak \
+	$(top_srcdir)/depcomp $(top_srcdir)/test-driver
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -1133,7 +1189,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -1224,6 +1285,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -1235,9 +1297,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -1259,6 +1323,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -1320,8 +1385,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -1387,6 +1454,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -1407,7 +1475,7 @@
 REGISTRY_ENVIRONMENT = \
 	GST_REGISTRY=$(CHECK_REGISTRY)
 
-TESTS_ENVIRONMENT = \
+AM_TESTS_ENVIRONMENT = \
         GST_STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)"	\
         $(REGISTRY_ENVIRONMENT)					\
         GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner \
@@ -1428,6 +1496,8 @@
 # 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_GST_DEBUG_FALSE@PRINTF_CHECKS = gst/gstprintf
+@GST_DISABLE_GST_DEBUG_TRUE@PRINTF_CHECKS = 
 LIBSABI_CHECKS = libs/libsabi
 @HAVE_CXX_FALSE@CXX_CHECKS = 
 @HAVE_CXX_TRUE@CXX_CHECKS = gst/gstcpp libs/gstlibscpp
@@ -1443,12 +1513,14 @@
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstghostpad				\
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstplugin				\
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstpreset				\
+@GST_DISABLE_REGISTRY_FALSE@	gst/gstprotection			\
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstquery				\
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstregistry				\
 @GST_DISABLE_REGISTRY_FALSE@	gst/gsturi  				\
 @GST_DISABLE_REGISTRY_FALSE@	gst/gstutils				\
 @GST_DISABLE_REGISTRY_FALSE@	generic/sinks				\
 @GST_DISABLE_REGISTRY_FALSE@	elements/capsfilter			\
+@GST_DISABLE_REGISTRY_FALSE@	elements/concat				\
 @GST_DISABLE_REGISTRY_FALSE@	elements/fakesink			\
 @GST_DISABLE_REGISTRY_FALSE@	elements/fakesrc			\
 @GST_DISABLE_REGISTRY_FALSE@	elements/fdsrc			  	\
@@ -1462,6 +1534,7 @@
 @GST_DISABLE_REGISTRY_FALSE@	elements/queue                          \
 @GST_DISABLE_REGISTRY_FALSE@	elements/queue2                         \
 @GST_DISABLE_REGISTRY_FALSE@	elements/valve                          \
+@GST_DISABLE_REGISTRY_FALSE@	elements/streamiddemux			\
 @GST_DISABLE_REGISTRY_FALSE@	libs/baseparse				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesrc				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesink				\
@@ -1501,8 +1574,12 @@
 EXTRA_DIST = \
 	libs/test_transform.c
 
-AM_CFLAGS = $(GST_OBJ_CFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
-AM_CXXFLAGS = $(GST_OBJ_CXXFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+AM_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\""
+
 LDADD = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(GST_OBJ_LIBS)
@@ -1510,6 +1587,10 @@
 gst_gstcpp_SOURCES = gst/gstcpp.cc
 libs_gstlibscpp_SOURCES = libs/gstlibscpp.cc
 gst_gstutils_LDADD = $(LDADD) $(GSL_LIBS) $(GMP_LIBS)
+gst_gstprintf_LDADD = \
+	$(top_builddir)/gst/printf/libgstprintf.la \
+	$(LDADD)
+
 elements_fdsrc_CFLAGS = $(GST_OBJ_CFLAGS) $(AM_CFLAGS) \
 	-DTESTFILE=\"$(top_srcdir)/configure.ac\"
 
@@ -1580,7 +1661,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/check/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/check/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -1589,7 +1669,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/check.mak:
+$(top_srcdir)/common/check.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1629,6 +1709,12 @@
 elements/capsfilter$(EXEEXT): $(elements_capsfilter_OBJECTS) $(elements_capsfilter_DEPENDENCIES) $(EXTRA_elements_capsfilter_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/capsfilter$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_capsfilter_OBJECTS) $(elements_capsfilter_LDADD) $(LIBS)
+elements/concat.$(OBJEXT): elements/$(am__dirstamp) \
+	elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/concat$(EXEEXT): $(elements_concat_OBJECTS) $(elements_concat_DEPENDENCIES) $(EXTRA_elements_concat_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/concat$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(elements_concat_OBJECTS) $(elements_concat_LDADD) $(LIBS)
 elements/fakesink.$(OBJEXT): elements/$(am__dirstamp) \
 	elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -1695,6 +1781,12 @@
 elements/selector$(EXEEXT): $(elements_selector_OBJECTS) $(elements_selector_DEPENDENCIES) $(EXTRA_elements_selector_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/selector$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_selector_OBJECTS) $(elements_selector_LDADD) $(LIBS)
+elements/streamiddemux.$(OBJEXT): elements/$(am__dirstamp) \
+	elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/streamiddemux$(EXEEXT): $(elements_streamiddemux_OBJECTS) $(elements_streamiddemux_DEPENDENCIES) $(EXTRA_elements_streamiddemux_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/streamiddemux$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(elements_streamiddemux_OBJECTS) $(elements_streamiddemux_LDADD) $(LIBS)
 elements/tee.$(OBJEXT): elements/$(am__dirstamp) \
 	elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -1934,6 +2026,18 @@
 gst/gstpreset$(EXEEXT): $(gst_gstpreset_OBJECTS) $(gst_gstpreset_DEPENDENCIES) $(EXTRA_gst_gstpreset_DEPENDENCIES) gst/$(am__dirstamp)
 	@rm -f gst/gstpreset$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gst_gstpreset_OBJECTS) $(gst_gstpreset_LDADD) $(LIBS)
+gst/gstprintf.$(OBJEXT): gst/$(am__dirstamp) \
+	gst/$(DEPDIR)/$(am__dirstamp)
+
+gst/gstprintf$(EXEEXT): $(gst_gstprintf_OBJECTS) $(gst_gstprintf_DEPENDENCIES) $(EXTRA_gst_gstprintf_DEPENDENCIES) gst/$(am__dirstamp)
+	@rm -f gst/gstprintf$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gst_gstprintf_OBJECTS) $(gst_gstprintf_LDADD) $(LIBS)
+gst/gstprotection.$(OBJEXT): gst/$(am__dirstamp) \
+	gst/$(DEPDIR)/$(am__dirstamp)
+
+gst/gstprotection$(EXEEXT): $(gst_gstprotection_OBJECTS) $(gst_gstprotection_DEPENDENCIES) $(EXTRA_gst_gstprotection_DEPENDENCIES) gst/$(am__dirstamp)
+	@rm -f gst/gstprotection$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gst_gstprotection_OBJECTS) $(gst_gstprotection_LDADD) $(LIBS)
 gst/gstquery.$(OBJEXT): gst/$(am__dirstamp) \
 	gst/$(DEPDIR)/$(am__dirstamp)
 
@@ -2096,6 +2200,12 @@
 libs/flowcombiner$(EXEEXT): $(libs_flowcombiner_OBJECTS) $(libs_flowcombiner_DEPENDENCIES) $(EXTRA_libs_flowcombiner_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/flowcombiner$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(libs_flowcombiner_OBJECTS) $(libs_flowcombiner_LDADD) $(LIBS)
+libs/gstharness.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/gstharness$(EXEEXT): $(libs_gstharness_OBJECTS) $(libs_gstharness_DEPENDENCIES) $(EXTRA_libs_gstharness_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/gstharness$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(libs_gstharness_OBJECTS) $(libs_gstharness_LDADD) $(LIBS)
 libs/gstlibscpp.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -2144,6 +2254,12 @@
 libs/transform1$(EXEEXT): $(libs_transform1_OBJECTS) $(libs_transform1_DEPENDENCIES) $(EXTRA_libs_transform1_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/transform1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(libs_transform1_OBJECTS) $(libs_transform1_LDADD) $(LIBS)
+libs/transform2.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/transform2$(EXEEXT): $(libs_transform2_OBJECTS) $(libs_transform2_DEPENDENCIES) $(EXTRA_libs_transform2_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/transform2$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(libs_transform2_OBJECTS) $(libs_transform2_LDADD) $(LIBS)
 libs/typefindhelper.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -2224,6 +2340,7 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/capsfilter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/concat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_fdsrc-fdsrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_filesrc-filesrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/fakesink.Po@am__quote@
@@ -2235,6 +2352,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/queue.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/queue2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/selector.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/streamiddemux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/tee.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/valve.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@generic/$(DEPDIR)/sinks.Po@am__quote@
@@ -2273,6 +2391,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstplugin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstpoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstpreset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstprotection.Po@am__quote@
 @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@
@@ -2299,6 +2419,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/collectpads.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/controller.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/flowcombiner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/gstharness.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/gstlibscpp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/gstnetclientclock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/gstnettimeprovider.Po@am__quote@
@@ -2307,6 +2428,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/queuearray.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/sparsefile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/transform1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/transform2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/typefindhelper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/cleanup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/parse-disabled.Po@am__quote@
@@ -2487,7 +2609,7 @@
 	if test -n "$$am__remaking_logs"; then \
 	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
 	       "recursion detected" >&2; \
-	else \
+	elif test -n "$$redo_logs"; then \
 	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
 	fi; \
 	if $(am__make_dryrun); then :; else \
@@ -2759,6 +2881,20 @@
 	--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/gstprotection.log: gst/gstprotection$(EXEEXT)
+	@p='gst/gstprotection$(EXEEXT)'; \
+	b='gst/gstprotection'; \
+	$(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/gstprintf.log: gst/gstprintf$(EXEEXT)
+	@p='gst/gstprintf$(EXEEXT)'; \
+	b='gst/gstprintf'; \
+	$(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/gstsegment.log: gst/gstsegment$(EXEEXT)
 	@p='gst/gstsegment$(EXEEXT)'; \
 	b='gst/gstsegment'; \
@@ -2983,6 +3119,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/concat.log: elements/concat$(EXEEXT)
+	@p='elements/concat$(EXEEXT)'; \
+	b='elements/concat'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 elements/fakesink.log: elements/fakesink$(EXEEXT)
 	@p='elements/fakesink$(EXEEXT)'; \
 	b='elements/fakesink'; \
@@ -3074,6 +3217,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/streamiddemux.log: elements/streamiddemux$(EXEEXT)
+	@p='elements/streamiddemux$(EXEEXT)'; \
+	b='elements/streamiddemux'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/baseparse.log: libs/baseparse$(EXEEXT)
 	@p='libs/baseparse$(EXEEXT)'; \
 	b='libs/baseparse'; \
@@ -3214,6 +3364,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/gstharness.log: libs/gstharness$(EXEEXT)
+	@p='libs/gstharness$(EXEEXT)'; \
+	b='libs/gstharness'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/gstnetclientclock.log: libs/gstnetclientclock$(EXEEXT)
 	@p='libs/gstnetclientclock$(EXEEXT)'; \
 	b='libs/gstnetclientclock'; \
@@ -3242,6 +3399,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/transform2.log: libs/transform2$(EXEEXT)
+	@p='libs/transform2$(EXEEXT)'; \
+	b='libs/transform2'; \
+	$(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)
 tools/gstinspect.log: tools/gstinspect$(EXEEXT)
 	@p='tools/gstinspect$(EXEEXT)'; \
 	b='tools/gstinspect'; \
@@ -3434,6 +3598,8 @@
 	pdf pdf-am ps ps-am recheck tags tags-am uninstall \
 	uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # keep target around, since it's referenced in the modules' Makefiles
 clean-local-check:
@@ -3450,37 +3616,38 @@
 # run any given test by running make test.check
 # if the test fails, run it again at at least debug level 2
 %.check: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$* ||							\
-	$(TESTS_ENVIRONMENT)					\
+	$(AM_TESTS_ENVIRONMENT)					\
 	GST_DEBUG=$$GST_DEBUG,*:2				\
 	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # just like 'check', but don't run it again if it fails (useful for debugging)
 %.check-norepeat: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # run any given test in a loop
 %.torture: %
 	@for i in `seq 1 $(LOOPS)`; do				\
-	$(TESTS_ENVIRONMENT)					\
+	$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$*; done
 
 # run any given test in an infinite loop
 %.forever: %
 	@while true; do						\
-	$(TESTS_ENVIRONMENT)					\
+	$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=20					\
 	$* || break; done
 
 # valgrind any given test by running make test.valgrind
 %.valgrind: %
-	@$(TESTS_ENVIRONMENT)					\
+	@valgrind_log=$(subst /,-,$*-valgrind.log);		\
+	$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=360					\
 	G_SLICE=always-malloc					\
 	$(LIBTOOL) --mode=execute				\
@@ -3489,16 +3656,16 @@
 	--tool=memcheck --leak-check=full --trace-children=yes	\
 	--show-possibly-lost=no                                 \
 	--leak-resolution=high --num-callers=20			\
-	./$* 2>&1 | tee valgrind.log
-	@if grep "==" valgrind.log > /dev/null 2>&1; then	\
-	    rm valgrind.log;					\
+	./$* 2>&1 | tee $$valgrind_log ;			\
+	if grep "==" $$valgrind_log > /dev/null 2>&1; then	\
+	    rm $$valgrind_log;					\
 	    exit 1;						\
-	fi
-	@rm valgrind.log
+	fi ;							\
+	rm $$valgrind_log
 
 # valgrind any given test and generate suppressions for it
 %.valgrind.gen-suppressions: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_DEFAULT_TIMEOUT=360					\
 	G_SLICE=always-malloc					\
 	$(LIBTOOL) --mode=execute				\
@@ -3528,7 +3695,7 @@
 
 # gdb any given test by running make test.gdb
 %.gdb: %
-	@$(TESTS_ENVIRONMENT)					\
+	@$(AM_TESTS_ENVIRONMENT)					\
 	CK_FORK=no						\
 	$(LIBTOOL) --mode=execute				\
 	gdb $*
@@ -3581,19 +3748,13 @@
 # valgrind all tests
 valgrind: $(TESTS)
 	@echo "Valgrinding tests ..."
-	@failed=0;							\
+	@failed=0; valgrind_targets="";					\
 	for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do	\
-		$(MAKE) $$t.valgrind;					\
-		if test "$$?" -ne 0; then                               \
-			echo "Valgrind error for test $$t";		\
-			failed=`expr $$failed + 1`;			\
-			whicht="$$whicht $$t";				\
-		fi;							\
+	  valgrind_targets="$$valgrind_targets $$t.valgrind";		\
 	done;								\
-	if test "$$failed" -ne 0; then					\
-		echo "$$failed tests had leaks or errors under valgrind:";	\
-		echo "$$whicht";					\
-		false;							\
+	if ! $(MAKE) $$valgrind_targets ; then				\
+	  echo "Some tests had leaks or errors under valgrind";		\
+	  false;							\
 	fi
 
 # valgrind all tests until failure
@@ -3638,11 +3799,14 @@
 	fi
 inspect:
 	@echo "Inspecting features ..."
-	@for e in `$(TESTS_ENVIRONMENT) $(GST_INSPECT) | head -n -2 	\
+	@for e in `$(AM_TESTS_ENVIRONMENT) $(GST_INSPECT) | head -n -2 	\
 	  | cut -d: -f2`;						\
 	  do echo Inspecting $$e;					\
 	     $(GST_INSPECT) $$e > /dev/null 2>&1; done
 
+# build all tests
+build-checks: $(TESTS)
+
 help:
 	@echo
 	@echo "make check                         -- run all checks"
@@ -3665,6 +3829,7 @@
 	@echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions"
 	@echo "                                               and save to suppressions.log"
 	@echo "make inspect                       -- inspect all plugin features"
+	@echo "make build-checks                  -- build all checks (but don't run them)"
 	@echo
 	@echo
 	@echo "Additionally, you can use the GST_CHECKS environment variable to"
diff --git a/tests/check/elements/capsfilter.c b/tests/check/elements/capsfilter.c
index 39bc6bd..008fee9 100644
--- a/tests/check/elements/capsfilter.c
+++ b/tests/check/elements/capsfilter.c
@@ -36,6 +36,16 @@
     GST_STATIC_CAPS (CAPS_TEMPLATE_STRING)
     );
 
+static GstStaticPadTemplate any_sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate any_srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
 static GList *events = NULL;
 
 static gboolean
@@ -325,6 +335,141 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_caps_change_mode_delayed)
+{
+  GstElement *filter;
+  GstPad *mysinkpad;
+  GstPad *mysrcpad;
+  GstSegment segment;
+  GstEvent *event;
+  GstCaps *caps;
+
+  filter = gst_check_setup_element ("capsfilter");
+  mysinkpad = gst_check_setup_sink_pad (filter, &any_sinktemplate);
+  gst_pad_set_event_function (mysinkpad, test_pad_eventfunc);
+  gst_pad_set_active (mysinkpad, TRUE);
+  mysrcpad = gst_check_setup_src_pad (filter, &any_srctemplate);
+  gst_pad_set_active (mysrcpad, TRUE);
+
+  g_object_set (filter, "caps-change-mode", 1, NULL);
+
+  fail_unless_equals_int (gst_element_set_state (filter, GST_STATE_PLAYING),
+      GST_STATE_CHANGE_SUCCESS);
+
+  /* push the stream start */
+  fail_unless (gst_pad_push_event (mysrcpad,
+          gst_event_new_stream_start ("test-stream")));
+  fail_unless_equals_int (g_list_length (events), 1);
+  event = events->data;
+  fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START);
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a caps */
+  caps = gst_caps_from_string ("audio/x-raw, "
+      "channels=(int)2, " "rate = (int)44100");
+  g_object_set (filter, "caps", caps, NULL);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+  fail_unless_equals_int (g_list_length (events), 1);
+  event = events->data;
+  fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CAPS);
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+  fail_unless_equals_int (g_list_length (events), 1);
+  event = events->data;
+  fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT);
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a buffer */
+  fail_unless_equals_int (gst_pad_push (mysrcpad,
+          gst_buffer_new_wrapped (g_malloc0 (1024), 1024)), GST_FLOW_OK);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  /* Set new incompatible caps */
+  caps = gst_caps_from_string ("audio/x-raw, "
+      "channels=(int)2, " "rate = (int)48000");
+  g_object_set (filter, "caps", caps, NULL);
+
+  /* push a buffer without updating the caps */
+  fail_unless_equals_int (gst_pad_push (mysrcpad,
+          gst_buffer_new_wrapped (g_malloc0 (1024), 1024)), GST_FLOW_OK);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  /* No caps event here, we're still at the old caps */
+  fail_unless (g_list_length (events) == 0);
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+  fail_unless_equals_int (g_list_length (events), 1);
+  event = events->data;
+  fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CAPS);
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* Push a new buffer, now we have the new caps */
+  fail_unless_equals_int (gst_pad_push (mysrcpad,
+          gst_buffer_new_wrapped (g_malloc0 (1024), 1024)), GST_FLOW_OK);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  /* Set back old caps */
+  caps = gst_caps_from_string ("audio/x-raw, "
+      "channels=(int)2, " "rate = (int)44100");
+  g_object_set (filter, "caps", caps, NULL);
+  gst_caps_unref (caps);
+
+  /* push a buffer without updating the caps */
+  fail_unless_equals_int (gst_pad_push (mysrcpad,
+          gst_buffer_new_wrapped (g_malloc0 (1024), 1024)), GST_FLOW_OK);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  /* Now set new caps again but the old caps are currently pushed */
+  caps = gst_caps_from_string ("audio/x-raw, "
+      "channels=(int)2, " "rate = (int)48000");
+  g_object_set (filter, "caps", caps, NULL);
+  gst_caps_unref (caps);
+  /* Race condition simulation here! */
+  caps = gst_caps_from_string ("audio/x-raw, "
+      "channels=(int)2, " "rate = (int)44100");
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+  fail_unless_equals_int (g_list_length (events), 1);
+  event = events->data;
+  fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CAPS);
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  fail_unless_equals_int (gst_pad_push (mysrcpad,
+          gst_buffer_new_wrapped (g_malloc0 (1024), 1024)), GST_FLOW_OK);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  /* cleanup */
+  GST_DEBUG ("cleanup");
+
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+  gst_check_teardown_src_pad (filter);
+  gst_check_teardown_sink_pad (filter);
+  gst_check_teardown_element (filter);
+}
+
+GST_END_TEST;
+
 static Suite *
 capsfilter_suite (void)
 {
@@ -337,6 +482,7 @@
   tcase_add_test (tc_chain, test_caps_query);
   tcase_add_test (tc_chain, test_accept_caps_query);
   tcase_add_test (tc_chain, test_push_pending_events);
+  tcase_add_test (tc_chain, test_caps_change_mode_delayed);
 
   return s;
 }
diff --git a/tests/check/elements/concat.c b/tests/check/elements/concat.c
new file mode 100644
index 0000000..43054dc
--- /dev/null
+++ b/tests/check/elements/concat.c
@@ -0,0 +1,308 @@
+/* GStreamer unit tests for concat
+ *
+ * Copyright (C) 2014 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+*/
+
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <gst/check/gstcheck.h>
+
+#define N_BUFFERS 10
+static gboolean got_eos;
+static guint buffer_count;
+static GstSegment current_segment;
+static guint64 current_bytes;
+
+static GstFlowReturn
+output_chain_time (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstClockTime timestamp;
+  guint8 b;
+
+  timestamp = GST_BUFFER_TIMESTAMP (buffer);
+  fail_unless_equals_int64 (timestamp,
+      (buffer_count % N_BUFFERS) * 25 * GST_MSECOND);
+  timestamp =
+      gst_segment_to_stream_time (&current_segment, GST_FORMAT_TIME, timestamp);
+  fail_unless_equals_int64 (timestamp,
+      (buffer_count % N_BUFFERS) * 25 * GST_MSECOND);
+
+  timestamp = GST_BUFFER_TIMESTAMP (buffer);
+  timestamp =
+      gst_segment_to_running_time (&current_segment, GST_FORMAT_TIME,
+      timestamp);
+  fail_unless_equals_int64 (timestamp, buffer_count * 25 * GST_MSECOND);
+
+  gst_buffer_extract (buffer, 0, &b, 1);
+  fail_unless_equals_int (b, buffer_count % N_BUFFERS);
+
+  buffer_count++;
+  gst_buffer_unref (buffer);
+  return GST_FLOW_OK;
+}
+
+static gboolean
+output_event_time (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_STOP:
+      gst_segment_init (&current_segment, GST_FORMAT_UNDEFINED);
+      break;
+    case GST_EVENT_SEGMENT:
+      gst_event_copy_segment (event, &current_segment);
+      break;
+    case GST_EVENT_EOS:
+      got_eos = TRUE;
+      break;
+    default:
+      break;
+  }
+
+  gst_event_unref (event);
+  return TRUE;
+}
+
+static gpointer
+push_buffers_time (gpointer data)
+{
+  GstSegment segment;
+  GstPad *pad = data;
+  gint i;
+  GstClockTime timestamp = 0;
+
+  gst_pad_send_event (pad, gst_event_new_stream_start ("test"));
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  gst_pad_send_event (pad, gst_event_new_segment (&segment));
+
+  for (i = 0; i < N_BUFFERS; i++) {
+    GstBuffer *buf = gst_buffer_new_and_alloc (1000);
+
+    gst_buffer_memset (buf, 0, i, 1);
+
+    GST_BUFFER_TIMESTAMP (buf) = timestamp;
+    timestamp += 25 * GST_MSECOND;
+    GST_BUFFER_DURATION (buf) = timestamp - GST_BUFFER_TIMESTAMP (buf);
+
+    fail_unless (gst_pad_chain (pad, buf) == GST_FLOW_OK);
+  }
+  gst_pad_send_event (pad, gst_event_new_eos ());
+
+  return NULL;
+}
+
+GST_START_TEST (test_concat_simple_time)
+{
+  GstElement *concat;
+  GstPad *sink1, *sink2, *sink3, *src, *output_sink;
+  GThread *thread1, *thread2, *thread3;
+
+  got_eos = FALSE;
+  buffer_count = 0;
+  gst_segment_init (&current_segment, GST_FORMAT_UNDEFINED);
+
+  concat = gst_element_factory_make ("concat", NULL);
+  fail_unless (concat != NULL);
+
+  sink1 = gst_element_get_request_pad (concat, "sink_%u");
+  fail_unless (sink1 != NULL);
+
+  sink2 = gst_element_get_request_pad (concat, "sink_%u");
+  fail_unless (sink2 != NULL);
+
+  sink3 = gst_element_get_request_pad (concat, "sink_%u");
+  fail_unless (sink3 != NULL);
+
+  src = gst_element_get_static_pad (concat, "src");
+  output_sink = gst_pad_new ("sink", GST_PAD_SINK);
+  fail_unless (output_sink != NULL);
+  fail_unless (gst_pad_link (src, output_sink) == GST_PAD_LINK_OK);
+
+  gst_pad_set_chain_function (output_sink, output_chain_time);
+  gst_pad_set_event_function (output_sink, output_event_time);
+
+  gst_pad_set_active (output_sink, TRUE);
+  fail_unless (gst_element_set_state (concat,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS);
+
+  thread1 = g_thread_new ("thread1", (GThreadFunc) push_buffers_time, sink1);
+  thread2 = g_thread_new ("thread2", (GThreadFunc) push_buffers_time, sink2);
+  thread3 = g_thread_new ("thread3", (GThreadFunc) push_buffers_time, sink3);
+
+  g_thread_join (thread1);
+  g_thread_join (thread2);
+  g_thread_join (thread3);
+
+  fail_unless (got_eos);
+  fail_unless_equals_int (buffer_count, 3 * N_BUFFERS);
+
+  gst_element_set_state (concat, GST_STATE_NULL);
+  gst_pad_unlink (src, output_sink);
+  gst_object_unref (src);
+  gst_element_release_request_pad (concat, sink1);
+  gst_object_unref (sink1);
+  gst_element_release_request_pad (concat, sink2);
+  gst_object_unref (sink2);
+  gst_element_release_request_pad (concat, sink3);
+  gst_object_unref (sink3);
+  gst_pad_set_active (output_sink, FALSE);
+  gst_object_unref (output_sink);
+  gst_object_unref (concat);
+}
+
+GST_END_TEST;
+
+static GstFlowReturn
+output_chain_bytes (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  guint8 b;
+
+  fail_unless (current_bytes >= current_segment.start);
+  fail_unless_equals_int64 (current_segment.start,
+      (buffer_count / N_BUFFERS) * 1000 * N_BUFFERS);
+
+  gst_buffer_extract (buffer, 0, &b, 1);
+  fail_unless_equals_int (b, buffer_count % N_BUFFERS);
+
+  current_bytes += gst_buffer_get_size (buffer), buffer_count++;
+  gst_buffer_unref (buffer);
+  return GST_FLOW_OK;
+}
+
+static gboolean
+output_event_bytes (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_STOP:
+      gst_segment_init (&current_segment, GST_FORMAT_UNDEFINED);
+      break;
+    case GST_EVENT_SEGMENT:
+      gst_event_copy_segment (event, &current_segment);
+      break;
+    case GST_EVENT_EOS:
+      got_eos = TRUE;
+      break;
+    default:
+      break;
+  }
+
+  gst_event_unref (event);
+  return TRUE;
+}
+
+static gpointer
+push_buffers_bytes (gpointer data)
+{
+  GstSegment segment;
+  GstPad *pad = data;
+  gint i;
+
+  gst_pad_send_event (pad, gst_event_new_stream_start ("test"));
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  gst_pad_send_event (pad, gst_event_new_segment (&segment));
+
+  for (i = 0; i < N_BUFFERS; i++) {
+    GstBuffer *buf = gst_buffer_new_and_alloc (1000);
+    gst_buffer_memset (buf, 0, i, 1);
+
+    fail_unless (gst_pad_chain (pad, buf) == GST_FLOW_OK);
+  }
+  gst_pad_send_event (pad, gst_event_new_eos ());
+
+  return NULL;
+}
+
+GST_START_TEST (test_concat_simple_bytes)
+{
+  GstElement *concat;
+  GstPad *sink1, *sink2, *sink3, *src, *output_sink;
+  GThread *thread1, *thread2, *thread3;
+
+  got_eos = FALSE;
+  buffer_count = 0;
+  current_bytes = 0;
+  gst_segment_init (&current_segment, GST_FORMAT_UNDEFINED);
+
+  concat = gst_element_factory_make ("concat", NULL);
+  fail_unless (concat != NULL);
+
+  sink1 = gst_element_get_request_pad (concat, "sink_%u");
+  fail_unless (sink1 != NULL);
+
+  sink2 = gst_element_get_request_pad (concat, "sink_%u");
+  fail_unless (sink2 != NULL);
+
+  sink3 = gst_element_get_request_pad (concat, "sink_%u");
+  fail_unless (sink3 != NULL);
+
+  src = gst_element_get_static_pad (concat, "src");
+  output_sink = gst_pad_new ("sink", GST_PAD_SINK);
+  fail_unless (output_sink != NULL);
+  fail_unless (gst_pad_link (src, output_sink) == GST_PAD_LINK_OK);
+
+  gst_pad_set_chain_function (output_sink, output_chain_bytes);
+  gst_pad_set_event_function (output_sink, output_event_bytes);
+
+  gst_pad_set_active (output_sink, TRUE);
+  fail_unless (gst_element_set_state (concat,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS);
+
+  thread1 = g_thread_new ("thread1", (GThreadFunc) push_buffers_bytes, sink1);
+  thread2 = g_thread_new ("thread2", (GThreadFunc) push_buffers_bytes, sink2);
+  thread3 = g_thread_new ("thread3", (GThreadFunc) push_buffers_bytes, sink3);
+
+  g_thread_join (thread1);
+  g_thread_join (thread2);
+  g_thread_join (thread3);
+
+  fail_unless (got_eos);
+  fail_unless_equals_int (buffer_count, 3 * N_BUFFERS);
+  fail_unless_equals_int64 (current_bytes, 3 * N_BUFFERS * 1000);
+
+  gst_element_set_state (concat, GST_STATE_NULL);
+  gst_pad_unlink (src, output_sink);
+  gst_object_unref (src);
+  gst_element_release_request_pad (concat, sink1);
+  gst_object_unref (sink1);
+  gst_element_release_request_pad (concat, sink2);
+  gst_object_unref (sink2);
+  gst_element_release_request_pad (concat, sink3);
+  gst_object_unref (sink3);
+  gst_pad_set_active (output_sink, FALSE);
+  gst_object_unref (output_sink);
+  gst_object_unref (concat);
+}
+
+GST_END_TEST;
+
+static Suite *
+concat_suite (void)
+{
+  Suite *s = suite_create ("concat");
+  TCase *tc_chain;
+
+  tc_chain = tcase_create ("concat");
+  tcase_add_test (tc_chain, test_concat_simple_time);
+  tcase_add_test (tc_chain, test_concat_simple_bytes);
+  suite_add_tcase (s, tc_chain);
+
+  return s;
+}
+
+GST_CHECK_MAIN (concat);
diff --git a/tests/check/elements/fakesink.c b/tests/check/elements/fakesink.c
index de932e7..b96d266 100644
--- a/tests/check/elements/fakesink.c
+++ b/tests/check/elements/fakesink.c
@@ -991,6 +991,183 @@
 
 GST_END_TEST;
 
+static void
+last_message_cb (GObject * obj, GParamSpec * pspec, gpointer user_data)
+{
+  gint *p_counter = user_data;
+  gchar *s, *end, *last_msg = NULL;
+  guint64 offset, count;
+
+  g_object_get (obj, "last-message", &last_msg, NULL);
+  fail_unless (last_msg != NULL);
+
+  if (!strstr (last_msg, "chain"))
+    goto skip;
+
+  GST_LOG_OBJECT (obj, "%s", last_msg);
+
+  s = strstr (last_msg, "offset: ");
+  fail_unless (s != NULL);
+
+  s += strlen ("offset: ");
+
+  offset = g_ascii_strtoull (s, &end, 10);
+  fail_unless (offset < G_MAXUINT64);
+  fail_if (end == s);
+
+  count = *p_counter;
+
+  fail_unless_equals_int (count, offset);
+
+  *p_counter = count + 1;
+
+skip:
+
+  g_free (last_msg);
+}
+
+#define NUM_BUFFERS 500
+
+GST_START_TEST (test_last_message_notify)
+{
+  GstElement *pipe, *src, *tee, *q1, *q2, *sink1, *sink2;
+  gint counter1 = 0;
+  gint counter2 = 0;
+  GstMessage *m;
+
+  pipe = gst_pipeline_new ("pipeline");
+  src = gst_element_factory_make ("fakesrc", NULL);
+  gst_util_set_object_arg (G_OBJECT (src), "sizetype", "fixed");
+  g_object_set (src, "num-buffers", NUM_BUFFERS, "sizemax", 1, NULL);
+
+  tee = gst_element_factory_make ("tee", NULL);
+
+  q1 = gst_element_factory_make ("queue", NULL);
+  sink1 = gst_element_factory_make ("fakesink", NULL);
+  g_object_set (sink1, "silent", FALSE, NULL);
+
+  q2 = gst_element_factory_make ("queue", NULL);
+  sink2 = gst_element_factory_make ("fakesink", NULL);
+  g_object_set (sink2, "silent", FALSE, NULL);
+
+  gst_bin_add_many (GST_BIN (pipe), src, tee, q1, q2, sink1, sink2, NULL);
+  fail_unless (gst_element_link_many (src, tee, NULL));
+  fail_unless (gst_element_link_many (tee, q1, sink1, NULL));
+  fail_unless (gst_element_link_many (tee, q2, sink2, NULL));
+
+  g_signal_connect (sink1, "notify::last-message",
+      G_CALLBACK (last_message_cb), &counter1);
+  g_signal_connect (sink2, "notify::last-message",
+      G_CALLBACK (last_message_cb), &counter2);
+
+  GST_DEBUG ("Setting pipeline to PLAYING");
+  fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_PLAYING),
+      GST_STATE_CHANGE_ASYNC);
+
+  m = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), -1, GST_MESSAGE_EOS);
+  gst_message_unref (m);
+
+  fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_NULL),
+      GST_STATE_CHANGE_SUCCESS);
+
+  fail_unless_equals_int (counter1, NUM_BUFFERS);
+  fail_unless_equals_int (counter2, NUM_BUFFERS);
+}
+
+GST_END_TEST;
+
+static void
+deep_notify_last_message_cb (GstObject * obj, GstObject * prop_obj,
+    GParamSpec * pspec, gpointer user_data)
+{
+  gint *counter_array = user_data;
+  gint *p_counter;
+  gchar *s, *end, *last_msg = NULL;
+  guint64 offset, count;
+
+  if (strcmp (GST_OBJECT_NAME (prop_obj), "fakesink0") == 0)
+    p_counter = counter_array;
+  else if (strcmp (GST_OBJECT_NAME (prop_obj), "fakesink1") == 0)
+    p_counter = counter_array + 1;
+  else
+    g_assert_not_reached ();
+
+  g_object_get (prop_obj, "last-message", &last_msg, NULL);
+  fail_unless (last_msg != NULL);
+
+  if (!strstr (last_msg, "chain"))
+    goto skip;
+
+  GST_LOG_OBJECT (prop_obj, "%s", last_msg);
+
+  s = strstr (last_msg, "offset: ");
+  fail_unless (s != NULL);
+
+  s += strlen ("offset: ");
+
+  offset = g_ascii_strtoull (s, &end, 10);
+  fail_unless (offset < G_MAXUINT64);
+  fail_if (end == s);
+
+  count = *p_counter;
+
+//  fail_unless_equals_int (count, offset);
+
+  *p_counter = count + 1;
+
+skip:
+
+  g_free (last_msg);
+}
+
+GST_START_TEST (test_last_message_deep_notify)
+{
+  GstElement *pipe, *src, *tee, *q1, *q2, *sink1, *sink2;
+  gint counter[2] = { 0, 0 };
+  GstMessage *m;
+
+  pipe = gst_pipeline_new ("pipeline");
+  src = gst_element_factory_make ("fakesrc", NULL);
+  gst_util_set_object_arg (G_OBJECT (src), "sizetype", "fixed");
+  g_object_set (src, "num-buffers", NUM_BUFFERS, "sizemax", 1, NULL);
+
+  tee = gst_element_factory_make ("tee", NULL);
+
+  q1 = gst_element_factory_make ("queue", NULL);
+  sink1 = gst_element_factory_make ("fakesink", NULL);
+  g_object_set (sink1, "silent", FALSE, NULL);
+
+  q2 = gst_element_factory_make ("queue", NULL);
+  sink2 = gst_element_factory_make ("fakesink", NULL);
+  g_object_set (sink2, "silent", FALSE, NULL);
+
+  gst_bin_add_many (GST_BIN (pipe), src, tee, q1, q2, sink1, sink2, NULL);
+  fail_unless (gst_element_link_many (src, tee, NULL));
+  fail_unless (gst_element_link_many (tee, q1, sink1, NULL));
+  fail_unless (gst_element_link_many (tee, q2, sink2, NULL));
+
+  g_signal_connect (pipe, "deep-notify::last-message",
+      G_CALLBACK (deep_notify_last_message_cb), counter);
+
+  GST_DEBUG ("Setting pipeline to PLAYING");
+  fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_PLAYING),
+      GST_STATE_CHANGE_ASYNC);
+
+  m = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), -1, GST_MESSAGE_EOS);
+  gst_message_unref (m);
+
+  fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_NULL),
+      GST_STATE_CHANGE_SUCCESS);
+
+  GST_ERROR ("sink1: %d, sink2: %d, total: %d", counter[0], counter[1],
+      counter[0] + counter[1]);
+
+  fail_unless_equals_int (counter[0], NUM_BUFFERS);
+  fail_unless_equals_int (counter[1], NUM_BUFFERS);
+}
+
+GST_END_TEST;
+
 static Suite *
 fakesink_suite (void)
 {
@@ -1006,6 +1183,8 @@
   tcase_add_test (tc_chain, test_eos2);
   tcase_add_test (tc_chain, test_position);
   tcase_add_test (tc_chain, test_notify_race);
+  tcase_add_test (tc_chain, test_last_message_notify);
+  tcase_skip_broken_test (tc_chain, test_last_message_deep_notify);
 
   return s;
 }
diff --git a/tests/check/elements/fdsrc.c b/tests/check/elements/fdsrc.c
index 12e9d10..ffe6194 100644
--- a/tests/check/elements/fdsrc.c
+++ b/tests/check/elements/fdsrc.c
@@ -24,6 +24,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <errno.h>
 
 #include <gst/check/gstcheck.h>
 
@@ -87,9 +88,19 @@
           GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
       "could not set to playing");
 
+#if defined (G_OS_UNIX) && defined (O_NONBLOCK)
+  {
+    int flags;
+
+    flags = fcntl (pipe_fd[1], F_GETFL, 0);
+    fcntl (pipe_fd[1], F_SETFL, flags | O_NONBLOCK);
+  }
+#endif
+
   memset (data, 0, 4096);
   while (!have_eos) {
-    fail_if (write (pipe_fd[1], data, 4096) < 0);
+    int ret = write (pipe_fd[1], data, 4096);
+    fail_if (ret < 0 && errno != EAGAIN);
     g_usleep (100);
   }
 
diff --git a/tests/check/elements/filesink.c b/tests/check/elements/filesink.c
index afe06ee..cc42c8a 100644
--- a/tests/check/elements/filesink.c
+++ b/tests/check/elements/filesink.c
@@ -95,6 +95,75 @@
       g_rand_free (rand);                                                 \
     } G_STMT_END
 
+/* Push Buffer with num_mem_blocks memory block each of size num_bytes*/
+#define PUSH_BUFFER_WITH_MULTIPLE_MEM_BLOCKS(num_mem_blocks, num_bytes)      \
+    G_STMT_START {                                                           \
+      GstBuffer *buf = gst_buffer_new();                                     \
+      guint i;                                                               \
+      for (i = 0; i < num_mem_blocks; ++i){                                  \
+        GstMapInfo info;                                                     \
+        GstMemory* mem_block = gst_allocator_alloc(NULL,num_bytes,NULL);     \
+        GRand *rand = g_rand_new_with_seed (num_bytes);                      \
+        guint j;                                                             \
+        fail_unless (gst_memory_map (mem_block, &info, GST_MAP_WRITE));      \
+        for (j = 0; j < num_bytes; ++j)                                      \
+           ((guint8 *)info.data)[j] = (g_rand_int (rand) >> 24) & 0xff;      \
+        gst_memory_unmap (mem_block, &info);                                 \
+        gst_buffer_append_memory(buf,mem_block);                             \
+        g_rand_free (rand);                                                  \
+      }                                                                      \
+      fail_unless_equals_int (gst_pad_push (mysrcpad, buf), GST_FLOW_OK);    \
+    } G_STMT_END
+
+/* Push Buffer List with num_buffers buffers each containing num_mem_blocks
+ * memory blocks of size num_bytes */
+#define PUSH_BUFFER_LIST_WITH_MULTI_MEM_BLOCKS_BUFFERS(num_buffers, num_mem_blocks, num_bytes) \
+    G_STMT_START {                                                             \
+      guint i;                                                                 \
+      GstBufferList* buf_list = gst_buffer_list_new();                         \
+      for(i = 0; i < num_buffers; ++i){                                        \
+        GstBuffer *buf = gst_buffer_new();                                     \
+        guint j;                                                               \
+        for (j = 0; j < num_mem_blocks; ++j){                                  \
+          GstMapInfo info;                                                     \
+          GstMemory* mem_block = gst_allocator_alloc(NULL,num_bytes,NULL);     \
+          GRand *rand = g_rand_new_with_seed (num_bytes);                      \
+          guint k;                                                             \
+          fail_unless (gst_memory_map (mem_block, &info, GST_MAP_WRITE));      \
+          for (k = 0; k < num_bytes; ++k)                                      \
+            ((guint8 *)info.data)[k] = (g_rand_int (rand) >> 24) & 0xff;       \
+          gst_memory_unmap (mem_block, &info);                                 \
+          gst_buffer_append_memory(buf,mem_block);                             \
+          g_rand_free (rand);                                                  \
+        }                                                                      \
+        gst_buffer_list_add(buf_list,buf);                                     \
+      }                                                                        \
+      fail_unless_equals_int (gst_pad_push_list (mysrcpad, buf_list), GST_FLOW_OK); \
+    } G_STMT_END
+
+/* Push buffer_list containing num_buffers number of buffers with size
+ *   num_bytes bytes
+ * Example: PUSH_BUFFER_LIST(2,10) will push the buffer list containing
+ *   2 buffers with size 10 bytes each */
+#define PUSH_BUFFER_LIST(num_buffers, num_bytes)                          \
+    G_STMT_START {                                                        \
+      guint i;                                                            \
+      GstBufferList* buf_list = gst_buffer_list_new();                    \
+      for(i = 0; i < num_buffers; ++i){                                   \
+        GstBuffer *buf = gst_buffer_new_and_alloc(num_bytes);             \
+        GRand *rand = g_rand_new_with_seed (num_bytes);                   \
+        GstMapInfo info;                                                  \
+        guint j;                                                          \
+        fail_unless (gst_buffer_map (buf, &info, GST_MAP_WRITE));         \
+        for (j = 0; j < num_bytes; ++j)                                   \
+          ((guint8 *)info.data)[j] = (g_rand_int (rand) >> 24) & 0xff;    \
+        gst_buffer_unmap (buf, &info);                                    \
+        gst_buffer_list_add(buf_list,buf);                                \
+        g_rand_free (rand);                                               \
+      }                                                                   \
+      fail_unless_equals_int (gst_pad_push_list (mysrcpad, buf_list), GST_FLOW_OK); \
+    } G_STMT_END
+
 #define CHECK_WRITTEN_BYTES(offset,written,file_size)                      \
     G_STMT_START {                                                        \
       gchar *data = NULL;                                                 \
@@ -196,6 +265,31 @@
   PUSH_BYTES (8800);
   CHECK_QUERY_POSITION (filesink, GST_FORMAT_BYTES, 8900);
 
+  /* Push buffer list with 2 buffers each of size 50 bytes */
+  PUSH_BUFFER_LIST (2, 50);
+  CHECK_QUERY_POSITION (filesink, GST_FORMAT_BYTES, 9000);
+  /* Push buffer list with 3 buffers each of size 10 bytes */
+  PUSH_BUFFER_LIST (3, 10);
+  CHECK_QUERY_POSITION (filesink, GST_FORMAT_BYTES, 9030);
+  /* Check bytes written using push buffer list */
+  CHECK_WRITTEN_BYTES (8900, 50, 9030);
+  CHECK_WRITTEN_BYTES (8950, 50, 9030);
+  CHECK_WRITTEN_BYTES (9000, 10, 9030);
+  CHECK_WRITTEN_BYTES (9010, 10, 9030);
+  CHECK_WRITTEN_BYTES (9020, 10, 9030);
+
+  /* Push buffer with 2 memory blocks each of size 20 bytes */
+  PUSH_BUFFER_WITH_MULTIPLE_MEM_BLOCKS (2, 20);
+  CHECK_WRITTEN_BYTES (9030, 20, 9070);
+  CHECK_WRITTEN_BYTES (9050, 20, 9070);
+
+  /* Push buffer list with 2 buffers each containing 2 memory blocks each of size 20 bytes */
+  PUSH_BUFFER_LIST_WITH_MULTI_MEM_BLOCKS_BUFFERS (2, 2, 20);
+  CHECK_WRITTEN_BYTES (9070, 20, 9150);
+  CHECK_WRITTEN_BYTES (9090, 20, 9150);
+  CHECK_WRITTEN_BYTES (9110, 20, 9150);
+  CHECK_WRITTEN_BYTES (9130, 20, 9150);
+
   segment.start = 8800;
   if (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))) {
     GST_LOG ("seek ok");
@@ -362,6 +456,11 @@
   fail_unless_equals_string (location, "file:///foo/b%3Fr");
   g_free (location);
 
+  g_object_set (G_OBJECT (filesink), "location", "\".donotexist", NULL);
+  g_object_get (G_OBJECT (filesink), "location", &location, NULL);
+  fail_unless_equals_string (location, "\".donotexist");
+  g_free (location);
+
   /* should fail with other hostnames */
   fail_if (gst_uri_handler_set_uri (GST_URI_HANDLER (filesink),
           "file://hostname/foo/foo", NULL));
diff --git a/tests/check/elements/funnel.c b/tests/check/elements/funnel.c
index e5fe75f..313dd48 100644
--- a/tests/check/elements/funnel.c
+++ b/tests/check/elements/funnel.c
@@ -243,6 +243,135 @@
 
 GST_END_TEST;
 
+guint nb_stream_start_event = 0;
+guint nb_caps_event = 0;
+guint nb_segment_event = 0;
+guint nb_gap_event = 0;
+
+static GstPadProbeReturn
+event_counter (GstObject * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GstEvent *event = GST_PAD_PROBE_INFO_EVENT (info);
+
+  fail_unless (event != NULL);
+  fail_unless (GST_IS_EVENT (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_STREAM_START:
+      ++nb_stream_start_event;
+      break;
+    case GST_EVENT_CAPS:
+      ++nb_caps_event;
+      break;
+    case GST_EVENT_SEGMENT:
+      ++nb_segment_event;
+      break;
+    case GST_EVENT_GAP:
+      ++nb_gap_event;
+      break;
+    default:
+      break;
+  }
+
+  return GST_PAD_PROBE_OK;
+}
+
+/*
+ * Push GAP events into funnel to forward sticky events.
+ * Funnel element shoud also treat GAP events likes buffers.
+ * For example, funnel can be used for internal subtitle with streamiddemux. 
+ *  +--------------------------------------------------------------------------+
+ *  | playbin                               +--------------------------------+ |
+ *  | +--------------+  +----------------+  | +------------+     playsink    | |
+ *  | | uridecodebin |  | input-selector |  | | video-sink |                 | |
+ *  | |              |  +----------------+  | +------------+                 | |
+ *  | |              |                      |                                | |
+ *  | |              |  +----------------+  | +------------+                 | |
+ *  | |              |  | input-selector |  | | audio-sink |                 | |
+ *  | |              |  +----------------+  | +------------+                 | |
+ *  | |              |                      |                                | |
+ *  | |              |  +----------------+  | +---------------+ +----------+ | |
+ *  | |              |  | funnel         |  | | streamiddemux | | appsink0 | | |
+ *  | +--------------+  +----------------+  | +---------------+ +----------+ | |
+ *  |                                       |                   +----------+ | |
+ *  |                                       |                   | appsinkn | | |
+ *  |                                       |                   +----------+ | |
+ *  |                                       +--------------------------------+ |
+ *  +--------------------------------------------------------------------------+
+ * If no data was received in funnel and then sticky events can be pending continuously. 
+ * And streamiddemux only receive gap events continuously. 
+ * Thus, pipeline can not be constructed completely.
+ * For support it, need to handle GAP events likes buffers.
+ */
+GST_START_TEST (test_funnel_gap_event)
+{
+  struct TestData td;
+  guint probe = 0;
+
+  setup_test_objects (&td, chain_ok);
+
+  nb_stream_start_event = 0;
+  nb_caps_event = 0;
+  nb_segment_event = 0;
+  nb_gap_event = 0;
+  bufcount = 0;
+
+  probe = gst_pad_add_probe (td.mysink, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
+      (GstPadProbeCallback) event_counter, NULL, NULL);
+
+  /* push a gap event to srcpad1 to push sticky events */
+  fail_unless (gst_pad_push_event (td.mysrc1, gst_event_new_gap (0,
+              GST_SECOND)));
+
+  fail_unless (nb_stream_start_event == 1);
+  fail_unless (nb_caps_event == 1);
+  fail_unless (nb_segment_event == 1);
+  fail_unless (nb_gap_event == 1);
+
+  /* push a gap event to srcpad2 to push sticky events */
+  fail_unless (gst_pad_push_event (td.mysrc2, gst_event_new_gap (0,
+              GST_SECOND)));
+
+  fail_unless (nb_stream_start_event == 2);
+  fail_unless (nb_caps_event == 2);
+  fail_unless (nb_segment_event == 2);
+  fail_unless (nb_gap_event == 2);
+
+  /* push a gap event to srcpad2 */
+  fail_unless (gst_pad_push_event (td.mysrc2, gst_event_new_gap (0,
+              GST_SECOND)));
+
+  fail_unless (nb_stream_start_event == 2);
+  fail_unless (nb_caps_event == 2);
+  fail_unless (nb_segment_event == 2);
+  fail_unless (nb_gap_event == 3);
+
+  /* push a gap event to srcpad1 */
+  fail_unless (gst_pad_push_event (td.mysrc1, gst_event_new_gap (0,
+              GST_SECOND)));
+
+  fail_unless (nb_stream_start_event == 3);
+  fail_unless (nb_caps_event == 3);
+  fail_unless (nb_segment_event == 3);
+  fail_unless (nb_gap_event == 4);
+
+  /* push buffer */
+  fail_unless (gst_pad_push (td.mysrc1, gst_buffer_new ()) == GST_FLOW_OK);
+  fail_unless (gst_pad_push (td.mysrc2, gst_buffer_new ()) == GST_FLOW_OK);
+
+  fail_unless (nb_stream_start_event == 4);
+  fail_unless (nb_caps_event == 4);
+  fail_unless (nb_segment_event == 4);
+  fail_unless (nb_gap_event == 4);
+  fail_unless (bufcount == 2);
+
+  gst_pad_remove_probe (td.mysink, probe);
+
+  release_test_objects (&td);
+}
+
+GST_END_TEST;
+
 static Suite *
 funnel_suite (void)
 {
@@ -252,6 +381,7 @@
   tc_chain = tcase_create ("funnel simple");
   tcase_add_test (tc_chain, test_funnel_simple);
   tcase_add_test (tc_chain, test_funnel_eos);
+  tcase_add_test (tc_chain, test_funnel_gap_event);
   suite_add_tcase (s, tc_chain);
 
   return s;
diff --git a/tests/check/elements/identity.c b/tests/check/elements/identity.c
index 2beb987..fd59b33 100644
--- a/tests/check/elements/identity.c
+++ b/tests/check/elements/identity.c
@@ -3,6 +3,7 @@
  * unit test for identity
  *
  * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ * Copyright (C) <2015> Havard Graff           <havard@pexip.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -20,100 +21,159 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include <unistd.h>
-
 #include <gst/check/gstcheck.h>
-
-static gboolean have_eos = FALSE;
-
-/* For ease of programming we use globals to keep refs for our floating
- * src and sink pads we create; otherwise we always have to do get_pad,
- * get_peer, and then remove references in every test function */
-static GstPad *mysrcpad, *mysinkpad;
-
-
-static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS_ANY);
-static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS_ANY);
-
-static gboolean
-event_func (GstPad * pad, GstObject * parent, GstEvent * event)
-{
-  if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
-    have_eos = TRUE;
-  }
-
-  gst_event_unref (event);
-  return TRUE;
-}
-
-static GstElement *
-setup_identity (void)
-{
-  GstElement *identity;
-
-  GST_DEBUG ("setup_identity");
-
-  identity = gst_check_setup_element ("identity");
-  mysrcpad = gst_check_setup_src_pad (identity, &srctemplate);
-  mysinkpad = gst_check_setup_sink_pad (identity, &sinktemplate);
-  gst_pad_set_event_function (mysinkpad, event_func);
-  gst_pad_set_active (mysrcpad, TRUE);
-  gst_pad_set_active (mysinkpad, TRUE);
-
-  return identity;
-}
-
-static void
-cleanup_identity (GstElement * identity)
-{
-  GST_DEBUG ("cleanup_identity");
-
-  gst_pad_set_active (mysrcpad, FALSE);
-  gst_pad_set_active (mysinkpad, FALSE);
-  gst_check_teardown_src_pad (identity);
-  gst_check_teardown_sink_pad (identity);
-  gst_check_teardown_element (identity);
-}
+#include <gst/check/gstharness.h>
 
 GST_START_TEST (test_one_buffer)
 {
-  GstElement *identity;
-  GstBuffer *buffer;
-  GstSegment segment;
+  GstHarness *h = gst_harness_new ("identity");
+  GstBuffer *buffer_in;
+  GstBuffer *buffer_out;
 
-  identity = setup_identity ();
-  fail_unless (gst_element_set_state (identity,
-          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
-      "could not set to playing");
+  gst_harness_set_src_caps_str (h, "mycaps");
 
-  gst_segment_init (&segment, GST_FORMAT_BYTES);
-  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
-  gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment));
+  buffer_in = gst_buffer_new_and_alloc (4);
+  ASSERT_BUFFER_REFCOUNT (buffer_in, "buffer", 1);
 
-  buffer = gst_buffer_new_and_alloc (4);
-  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
-
-  gst_buffer_fill (buffer, 0, "data", 4);
+  gst_buffer_fill (buffer_in, 0, "data", 4);
 
   /* pushing gives away my reference ... */
-  fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK,
-      "Failed pushing buffer to identity");
+  fail_unless_equals_int (GST_FLOW_OK, gst_harness_push (h, buffer_in));
 
-  /* ... but it should end up being collected on the global buffer list */
-  fail_unless (g_list_length (buffers) == 1);
-  fail_unless ((GstBuffer *) (g_list_first (buffers)->data) == buffer);
-  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
+  /* ... but it should end up being collected on GstHarness queue */
+  fail_unless_equals_int (1, gst_harness_buffers_in_queue (h));
+  buffer_out = gst_harness_pull (h);
+
+  fail_unless (buffer_in == buffer_out);
+  ASSERT_BUFFER_REFCOUNT (buffer_out, "buffer", 1);
 
   /* cleanup */
-  cleanup_identity (identity);
+  gst_buffer_unref (buffer_out);
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
+static void
+handoff_func (GstElement * identity, GstBuffer * buf,  GstBuffer ** ret)
+{
+  (void)identity;
+  *ret = buf;
 }
 
+GST_START_TEST (test_signal_handoffs)
+{
+  GstHarness *h = gst_harness_new ("identity");
+  GstBuffer *buffer_in;
+  GstBuffer *buffer_signaled = NULL;
+  gst_harness_set_src_caps_str (h, "mycaps");
+
+  /* connect to the handoff signal */
+  g_signal_connect (h->element, "handoff",
+      G_CALLBACK (handoff_func), &buffer_signaled);
+
+  /* first, turn off signal-handoffs */
+  g_object_set (h->element, "signal-handoffs", FALSE, NULL);
+
+  /* then push a buffer */
+  buffer_in = gst_buffer_new_and_alloc (4);
+  fail_unless_equals_int (GST_FLOW_OK, gst_harness_push (h, buffer_in));
+
+  /* verify that we got no buffer signaled */
+  fail_unless (buffer_signaled == NULL);
+
+  /* now turn on signal-handoffs */
+  g_object_set (h->element, "signal-handoffs", TRUE, NULL);
+
+  /* then push another buffer */
+  buffer_in = gst_buffer_new_and_alloc (4);
+  fail_unless_equals_int (GST_FLOW_OK, gst_harness_push (h, buffer_in));
+
+  /* verify the buffer signaled is equal to the one pushed in */
+  fail_unless (buffer_signaled == buffer_in);
+  ASSERT_BUFFER_REFCOUNT (buffer_signaled, "buffer", 1);
+
+  /* cleanup */
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_sync_on_timestamp)
+{
+  /* the reason to use the queue in front of the identity element
+     is to effectively make gst_harness_push asynchronous, not locking
+     up the test, waiting for gst_clock_id_wait */
+  GstHarness * h = gst_harness_new_parse ("queue ! identity sync=1");
+  GstBuffer *buf;
+  GstClock *clock;
+  GstClockTime timestamp = 123456789;
+
+  /* use testclock */
+  gst_harness_use_testclock (h);
+  gst_harness_set_src_caps_str (h, "mycaps");
+
+  /* make a buffer and set the timestamp */
+  buf = gst_buffer_new ();
+  GST_BUFFER_PTS (buf) = timestamp;
+
+  /* push the buffer, and verify it does *not* make it through */
+  gst_harness_push (h, buf);
+  fail_unless_equals_int (0, gst_harness_buffers_in_queue (h));
+
+  /* verify the identity element has registered exactly one GstClockID */
+  fail_unless (gst_harness_wait_for_clock_id_waits (h, 1, 42));
+
+  /* crank the clock and pull the buffer */
+  gst_harness_crank_single_clock_wait (h);
+  buf = gst_harness_pull (h);
+
+  /* verify that the buffer has the right timestamp, and that the time on
+     the clock is equal to the timestamp */
+  fail_unless_equals_int64 (timestamp, GST_BUFFER_PTS (buf));
+  clock = gst_element_get_clock (h->element);
+  fail_unless_equals_int64 (timestamp, gst_clock_get_time (clock));
+
+  /* cleanup */
+  gst_object_unref (clock);
+  gst_buffer_unref (buf);
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_stopping_element_unschedules_sync)
+{
+  /* the reason to use the queue in front of the identity element
+     is to effectively make gst_harness_push asynchronous, not locking
+     up the test, waiting for gst_clock_id_wait */
+  GstHarness * h = gst_harness_new_parse ("queue ! identity sync=1");
+  GstBuffer *buf;
+  GstClockTime timestamp = 123456789;
+
+  /* use testclock */
+  gst_harness_use_testclock (h);
+  gst_harness_set_src_caps_str (h, "mycaps");
+
+  /* make a buffer and set the timestamp */
+  buf = gst_buffer_new ();
+  GST_BUFFER_PTS (buf) = timestamp;
+
+  /* push the buffer, and verify it does *not* make it through */
+  gst_harness_push (h, buf);
+  fail_unless_equals_int (0, gst_harness_buffers_in_queue (h));
+
+  /* verify the identity element has registered exactly one GstClockID */
+  fail_unless (gst_harness_wait_for_clock_id_waits (h, 1, 42));
+
+  /* setting identity to READY should unschedule the sync */
+  gst_element_set_state (h->element, GST_STATE_READY);
+
+  /* verify the identity element no longer waits on the clock */
+  fail_unless (gst_harness_wait_for_clock_id_waits (h, 0, 42));
+
+  /* and that the waiting buffer was dropped */
+  fail_unless_equals_int (0, gst_harness_buffers_received (h));
+
+  gst_harness_teardown (h);
+}
 GST_END_TEST;
 
 static Suite *
@@ -124,6 +184,10 @@
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_one_buffer);
+  tcase_add_test (tc_chain, test_signal_handoffs);
+  tcase_add_test (tc_chain, test_sync_on_timestamp);
+  tcase_add_test (tc_chain, test_stopping_element_unschedules_sync);
+
 
   return s;
 }
diff --git a/tests/check/elements/multiqueue.c b/tests/check/elements/multiqueue.c
index 22cb57c..4b2777c 100644
--- a/tests/check/elements/multiqueue.c
+++ b/tests/check/elements/multiqueue.c
@@ -323,6 +323,9 @@
 
   GMutex *mutex;
   GCond *cond;
+
+  /* used by initial_events_nodelay */
+  gint event_count;
 };
 
 static GstFlowReturn
@@ -949,6 +952,113 @@
 
 GST_END_TEST;
 
+static gboolean
+event_func_signal (GstPad * sinkpad, GstObject * parent, GstEvent * event)
+{
+  struct PadData *pad_data;
+
+  GST_LOG_OBJECT (sinkpad, "%s event", GST_EVENT_TYPE_NAME (event));
+
+  pad_data = gst_pad_get_element_private (sinkpad);
+
+  g_mutex_lock (pad_data->mutex);
+  ++pad_data->event_count;
+  g_cond_broadcast (pad_data->cond);
+  g_mutex_unlock (pad_data->mutex);
+
+  gst_event_unref (event);
+  return TRUE;
+}
+
+GST_START_TEST (test_initial_events_nodelay)
+{
+  struct PadData pad_data = { 0, };
+  GstElement *pipe;
+  GstElement *mq;
+  GstPad *inputpad;
+  GstPad *sinkpad;
+  GstSegment segment;
+  GstCaps *caps;
+  GMutex mutex;
+  GCond cond;
+
+  g_mutex_init (&mutex);
+  g_cond_init (&cond);
+
+  pipe = gst_pipeline_new ("testbin");
+
+  mq = gst_element_factory_make ("multiqueue", NULL);
+  fail_unless (mq != NULL);
+  gst_bin_add (GST_BIN (pipe), mq);
+
+  {
+    GstPad *mq_srcpad, *mq_sinkpad;
+
+    inputpad = gst_pad_new ("dummysrc", GST_PAD_SRC);
+
+    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);
+
+    mq_srcpad = mq_sinkpad_to_srcpad (mq, mq_sinkpad);
+
+    sinkpad = gst_pad_new ("dummysink", GST_PAD_SINK);
+    gst_pad_set_event_function (sinkpad, event_func_signal);
+
+    pad_data.event_count = 0;
+    pad_data.cond = &cond;
+    pad_data.mutex = &mutex;
+    gst_pad_set_element_private (sinkpad, &pad_data);
+
+    fail_unless (gst_pad_link (mq_srcpad, sinkpad) == GST_PAD_LINK_OK);
+    gst_pad_set_active (sinkpad, TRUE);
+
+    gst_object_unref (mq_sinkpad);
+    gst_object_unref (mq_srcpad);
+  }
+
+  /* Run the test: push events through multiqueue */
+  gst_element_set_state (pipe, GST_STATE_PLAYING);
+
+  gst_pad_push_event (inputpad, gst_event_new_stream_start ("test"));
+
+  caps = gst_caps_new_empty_simple ("foo/x-bar");
+  gst_pad_push_event (inputpad, gst_event_new_caps (caps));
+  gst_caps_unref (caps);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  gst_pad_push_event (inputpad, gst_event_new_segment (&segment));
+
+  g_mutex_lock (&mutex);
+  while (pad_data.event_count < 3) {
+    GST_LOG ("%d events so far, waiting for more", pad_data.event_count);
+    g_cond_wait (&cond, &mutex);
+  }
+  g_mutex_unlock (&mutex);
+
+  /* Clean up */
+  {
+    GstPad *mq_input = gst_pad_get_peer (inputpad);
+
+    gst_pad_unlink (inputpad, mq_input);
+    gst_element_release_request_pad (mq, mq_input);
+    gst_object_unref (mq_input);
+    gst_object_unref (inputpad);
+
+    gst_object_unref (sinkpad);
+  }
+
+  gst_element_set_state (pipe, GST_STATE_NULL);
+  gst_object_unref (pipe);
+
+  g_cond_clear (&cond);
+  g_mutex_clear (&mutex);
+}
+
+GST_END_TEST;
+
 static Suite *
 multiqueue_suite (void)
 {
@@ -971,6 +1081,7 @@
   tcase_add_test (tc_chain, test_limit_changes);
 
   tcase_add_test (tc_chain, test_buffering_with_none_pts);
+  tcase_add_test (tc_chain, test_initial_events_nodelay);
 
   return s;
 }
diff --git a/tests/check/elements/queue.c b/tests/check/elements/queue.c
index 9a2ebcf..8619909 100644
--- a/tests/check/elements/queue.c
+++ b/tests/check/elements/queue.c
@@ -45,6 +45,9 @@
 static GCond underrun_cond;
 static gint underrun_count;
 
+static GMutex events_lock;
+static GCond events_cond;
+static gint events_count;
 static GList *events;
 
 static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
@@ -76,22 +79,20 @@
 static gboolean
 event_func (GstPad * pad, GstObject * parent, GstEvent * event)
 {
-  GST_DEBUG ("%s event", gst_event_type_get_name (GST_EVENT_TYPE (event)));
+  GST_DEBUG ("%s event", GST_EVENT_TYPE_NAME (event));
+
+  g_mutex_lock (&events_lock);
+
   events = g_list_append (events, event);
+  ++events_count;
+
+  g_cond_broadcast (&events_cond);
+  g_mutex_unlock (&events_lock);
 
   return TRUE;
 }
 
 static void
-drop_events (void)
-{
-  while (events != NULL) {
-    gst_event_unref (GST_EVENT (events->data));
-    events = g_list_delete_link (events, events);
-  }
-}
-
-static void
 block_src (void)
 {
   qsrcpad = gst_element_get_static_pad (queue, "src");
@@ -123,6 +124,10 @@
 
   underrun_count = 0;
 
+
+  g_mutex_init (&events_lock);
+  g_cond_init (&events_cond);
+  events_count = 0;
   events = NULL;
 }
 
@@ -133,7 +138,13 @@
 
   gst_check_drop_buffers ();
 
-  drop_events ();
+  while (events != NULL) {
+    gst_event_unref (GST_EVENT (events->data));
+    events = g_list_delete_link (events, events);
+  }
+  events_count = 0;
+  g_mutex_clear (&events_lock);
+  g_cond_clear (&events_cond);
 
   if (mysinkpad != NULL) {
     gst_pad_set_active (mysinkpad, FALSE);
@@ -894,6 +905,247 @@
 
 GST_END_TEST;
 
+static gpointer
+push_event_thread_func (gpointer data)
+{
+  GstEvent *event;
+
+  event = GST_EVENT (data);
+
+  GST_DEBUG ("pushing event %p on pad %p", event, mysrcpad);
+  gst_pad_push_event (mysrcpad, event);
+
+  return NULL;
+}
+
+GST_START_TEST (test_state_change_when_flushing)
+{
+  GstEvent *event;
+  GThread *thread;
+
+  mysinkpad = gst_check_setup_sink_pad (queue, &sinktemplate);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  fail_unless (gst_element_set_state (queue, GST_STATE_PAUSED) ==
+      GST_STATE_CHANGE_SUCCESS);
+
+  event = gst_event_new_flush_start ();
+  gst_pad_push_event (mysrcpad, event);
+
+  event = gst_event_new_flush_stop (TRUE);
+  thread = g_thread_new ("send event", push_event_thread_func, event);
+
+  GST_DEBUG ("changing state to READY");
+  fail_unless (gst_element_set_state (queue, GST_STATE_READY) ==
+      GST_STATE_CHANGE_SUCCESS);
+  GST_DEBUG ("state changed");
+
+  g_thread_join (thread);
+
+  fail_unless (gst_element_set_state (queue, GST_STATE_NULL) ==
+      GST_STATE_CHANGE_SUCCESS);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_time_level_buffer_list)
+{
+  GstBuffer *buffer = NULL;
+  GstBufferList *buffer_list = NULL;
+  GstClockTime time;
+  guint buffers;
+  GstSegment segment;
+
+  g_signal_connect (queue, "overrun",
+      G_CALLBACK (queue_overrun_link_and_activate), NULL);
+  g_object_set (G_OBJECT (queue), "max-size-buffers", 11, NULL);
+  g_object_set (G_OBJECT (queue), "max-size-time",
+      G_GUINT64_CONSTANT (7000) * GST_MSECOND, NULL);
+
+  GST_DEBUG ("starting");
+
+  block_src ();
+
+  UNDERRUN_LOCK ();
+  fail_unless (gst_element_set_state (queue,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  UNDERRUN_WAIT ();
+  UNDERRUN_UNLOCK ();
+
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
+  gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment));
+
+  /* push buffer without duration */
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 1000 * GST_MSECOND;
+  /* pushing gives away my reference */
+  gst_pad_push (mysrcpad, buffer);
+
+  /* level should be 1 seconds because buffer has no duration and starts at 1
+   * SECOND (sparse stream). */
+  g_object_get (G_OBJECT (queue), "current-level-time", &time, NULL);
+  fail_unless_equals_uint64 (time, 1000 * GST_MSECOND);
+  g_object_get (G_OBJECT (queue), "current-level-buffers", &buffers, NULL);
+  fail_unless_equals_int (buffers, 1);
+
+  /* second push should set the level to 2 second */
+  buffer_list = gst_buffer_list_new ();
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 1500 * GST_MSECOND;
+  gst_buffer_list_add (buffer_list, buffer);
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 2000 * GST_MSECOND;
+  gst_buffer_list_add (buffer_list, buffer);
+  gst_pad_push_list (mysrcpad, buffer_list);
+
+  g_object_get (G_OBJECT (queue), "current-level-time", &time, NULL);
+  fail_unless_equals_uint64 (time, 2000 * GST_MSECOND);
+  g_object_get (G_OBJECT (queue), "current-level-buffers", &buffers, NULL);
+  fail_unless_equals_int (buffers, 3);
+
+  /* third push should set the level to 4 seconds, the 1 second diff with the
+   * previous buffer (without duration) and the 1 second duration of this
+   * buffer. */
+  buffer_list = gst_buffer_list_new ();
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 3000 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 500 * GST_MSECOND;
+  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
+  gst_buffer_list_add (buffer_list, buffer);
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 3500 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 500 * GST_MSECOND;
+  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
+  gst_buffer_list_add (buffer_list, buffer);
+  gst_pad_push_list (mysrcpad, buffer_list);
+
+  g_object_get (G_OBJECT (queue), "current-level-time", &time, NULL);
+  fail_unless_equals_uint64 (time, 4000 * GST_MSECOND);
+  g_object_get (G_OBJECT (queue), "current-level-buffers", &buffers, NULL);
+  fail_unless_equals_int (buffers, 5);
+
+  /* fourth push should set the level to 6 seconds, the 2 second diff with the
+   * previous buffer, same duration. */
+  buffer_list = gst_buffer_list_new ();
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 5000 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 1000 * GST_MSECOND;
+  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
+  gst_buffer_list_add (buffer_list, buffer);
+  gst_pad_push_list (mysrcpad, buffer_list);
+
+  g_object_get (G_OBJECT (queue), "current-level-time", &time, NULL);
+  fail_unless_equals_uint64 (time, 6000 * GST_MSECOND);
+  g_object_get (G_OBJECT (queue), "current-level-buffers", &buffers, NULL);
+  fail_unless_equals_int (buffers, 6);
+
+  /* fifth push should not adjust the level, the timestamp and duration are the
+   * same, meaning the previous buffer did not really have a duration. */
+  buffer_list = gst_buffer_list_new ();
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 5000 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+  gst_buffer_list_add (buffer_list, buffer);
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 5250 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+  gst_buffer_list_add (buffer_list, buffer);
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 5500 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+  gst_buffer_list_add (buffer_list, buffer);
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 5750 * GST_MSECOND;
+  GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+  gst_buffer_list_add (buffer_list, buffer);
+  gst_pad_push_list (mysrcpad, buffer_list);
+
+  g_object_get (G_OBJECT (queue), "current-level-time", &time, NULL);
+  fail_unless_equals_uint64 (time, 6000 * GST_MSECOND);
+  g_object_get (G_OBJECT (queue), "current-level-buffers", &buffers, NULL);
+  fail_unless_equals_int (buffers, 10);
+
+  /* sixth push should adjust the level with 1 second, we now know the
+   * previous buffer actually had a duration of 2 SECONDS */
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 7000 * GST_MSECOND;
+  gst_pad_push (mysrcpad, buffer);
+
+  g_object_get (G_OBJECT (queue), "current-level-time", &time, NULL);
+  fail_unless_equals_uint64 (time, 7000 * GST_MSECOND);
+  g_object_get (G_OBJECT (queue), "current-level-buffers", &buffers, NULL);
+  fail_unless_equals_int (buffers, 11);
+
+  /* eighth push should cause overrun */
+  fail_unless (overrun_count == 0);
+  buffer_list = gst_buffer_list_new ();
+  buffer = gst_buffer_new_and_alloc (4);
+  GST_BUFFER_TIMESTAMP (buffer) = 8000 * GST_MSECOND;
+  /* the next call to gst_pad_push will emit the overrun signal. The signal
+   * handler queue_overrun_link_and_activate() (above) increases overrun_count,
+   * activates and links mysinkpad. The queue task then dequeues a buffer and
+   * gst_pad_push() will return. */
+  gst_buffer_list_add (buffer_list, buffer);
+  gst_pad_push_list (mysrcpad, buffer_list);
+
+  fail_unless (overrun_count == 1);
+
+  GST_DEBUG ("stopping");
+  fail_unless (gst_element_set_state (queue,
+          GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null");
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_initial_events_nodelay)
+{
+  GstSegment segment;
+  GstEvent *event;
+  GstCaps *caps;
+  gboolean ret;
+
+  mysinkpad = gst_check_setup_sink_pad (queue, &sinktemplate);
+  gst_pad_set_event_function (mysinkpad, event_func);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  GST_DEBUG ("starting");
+
+  fail_unless (gst_element_set_state (queue,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
+
+  caps = gst_caps_new_empty_simple ("foo/x-bar");
+  ret = gst_pad_push_event (mysrcpad, gst_event_new_caps (caps));
+  gst_caps_unref (caps);
+  fail_unless (ret == TRUE);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  ret = gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment));
+  fail_unless (ret == TRUE);
+
+  g_mutex_lock (&events_lock);
+  while (events_count < 3) {
+    g_cond_wait (&events_cond, &events_lock);
+  }
+  g_mutex_unlock (&events_lock);
+
+  fail_unless_equals_int (g_list_length (events), 3);
+  event = g_list_nth_data (events, 0);
+  fail_unless_equals_int (GST_EVENT_TYPE (event), GST_EVENT_STREAM_START);
+  event = g_list_nth_data (events, 1);
+  fail_unless_equals_int (GST_EVENT_TYPE (event), GST_EVENT_CAPS);
+  event = g_list_nth_data (events, 2);
+  fail_unless_equals_int (GST_EVENT_TYPE (event), GST_EVENT_SEGMENT);
+
+  gst_element_set_state (queue, GST_STATE_NULL);
+}
+
+GST_END_TEST;
+
 static Suite *
 queue_suite (void)
 {
@@ -909,10 +1161,13 @@
   tcase_add_test (tc_chain, test_time_level);
   tcase_add_test (tc_chain, test_time_level_task_not_started);
   tcase_add_test (tc_chain, test_queries_while_flushing);
+  tcase_add_test (tc_chain, test_state_change_when_flushing);
 #if 0
   tcase_add_test (tc_chain, test_newsegment);
 #endif
   tcase_add_test (tc_chain, test_sticky_not_linked);
+  tcase_add_test (tc_chain, test_time_level_buffer_list);
+  tcase_add_test (tc_chain, test_initial_events_nodelay);
 
   return s;
 }
diff --git a/tests/check/elements/selector.c b/tests/check/elements/selector.c
index 34179e5..1bb2d02 100644
--- a/tests/check/elements/selector.c
+++ b/tests/check/elements/selector.c
@@ -368,7 +368,7 @@
 
 /* Push buffers to input pad and check the 
    amount of buffers arrived to output pads */
-GST_START_TEST (test_output_selector_buffer_count);
+GST_START_TEST (test_output_selector_buffer_count)
 {
   gint i, j;
 
@@ -383,7 +383,7 @@
 
 /* Push buffers to input pads and check the 
    amount of buffers arrived to output pad */
-GST_START_TEST (test_input_selector_buffer_count);
+GST_START_TEST (test_input_selector_buffer_count)
 {
   gint i, j;
 
@@ -396,8 +396,233 @@
 
 GST_END_TEST;
 
+static GstElement *selector;
+static GstPad *output_pad;
+static GstPad *stream1_pad;
+static GstPad *stream2_pad;
 
-GST_START_TEST (test_output_selector_no_srcpad_negotiation);
+static gboolean eos_received;
+static gulong eos_probe;
+static GMutex eos_probe_lock;
+static GCond eos_probe_cond;
+
+enum InputSelectorResult
+{
+  INPUT_SELECTOR_FORWARD,
+  INPUT_SELECTOR_DROP
+};
+
+static GstPadProbeReturn
+eos_pushed_probe (GstPad * pad, GstPadProbeInfo * info, gpointer udata)
+{
+  g_mutex_lock (&eos_probe_lock);
+  if (GST_EVENT_TYPE (info->data) == GST_EVENT_EOS) {
+    eos_received = TRUE;
+    g_cond_broadcast (&eos_probe_cond);
+  }
+  g_mutex_unlock (&eos_probe_lock);
+
+  return GST_PAD_PROBE_OK;
+}
+
+static void
+setup_input_selector_with_2_streams (gint active_stream)
+{
+  eos_received = FALSE;
+  g_mutex_init (&eos_probe_lock);
+  g_cond_init (&eos_probe_cond);
+
+  selector = gst_check_setup_element ("input-selector");
+  output_pad = gst_check_setup_sink_pad (selector, &sinktemplate);
+
+  gst_pad_set_active (output_pad, TRUE);
+  stream1_pad = setup_input_pad (selector);
+  stream2_pad = setup_input_pad (selector);
+
+  if (active_stream == 1) {
+    g_object_set (selector, "active-pad", GST_PAD_PEER (stream1_pad), NULL);
+  } else {
+    g_object_set (selector, "active-pad", GST_PAD_PEER (stream2_pad), NULL);
+  }
+
+  eos_probe =
+      gst_pad_add_probe (output_pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
+      eos_pushed_probe, NULL, NULL);
+
+  fail_unless (gst_element_set_state (selector,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  gst_check_setup_events_with_stream_id (stream1_pad, selector, NULL,
+      GST_FORMAT_TIME, "stream-1-id");
+  gst_check_setup_events_with_stream_id (stream2_pad, selector, NULL,
+      GST_FORMAT_TIME, "stream-2-id");
+}
+
+static void
+teardown_input_selector_with_2_streams (void)
+{
+  fail_unless (gst_element_set_state (selector,
+          GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null");
+
+  gst_pad_remove_probe (output_pad, eos_probe);
+
+  gst_pad_set_active (output_pad, FALSE);
+  gst_check_teardown_sink_pad (selector);
+  gst_check_teardown_element (selector);
+
+  g_mutex_clear (&eos_probe_lock);
+  g_cond_clear (&eos_probe_cond);
+}
+
+static void
+input_selector_push_buffer (gint stream, enum InputSelectorResult res)
+{
+  GstBuffer *buf;
+  GstPad *pad = stream == 1 ? stream1_pad : stream2_pad;
+
+  buf = gst_buffer_new ();
+  fail_unless (buffers == NULL);
+  fail_unless (gst_pad_push (pad, buf) == GST_FLOW_OK);
+
+  if (res == INPUT_SELECTOR_DROP) {
+    fail_unless (buffers == NULL);
+  } else {
+    fail_unless (buffers != NULL);
+    fail_unless (buffers->data == buf);
+    g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+    buffers = NULL;
+  }
+}
+
+static gpointer
+input_selector_do_push_eos (GstPad * pad)
+{
+  gst_pad_push_event (pad, gst_event_new_eos ());
+  return NULL;
+}
+
+static void
+input_selector_check_eos (gint present)
+{
+  GstEvent *eos;
+
+  eos = gst_pad_get_sticky_event (output_pad, GST_EVENT_EOS, 0);
+  if (present) {
+    fail_unless (eos != NULL);
+    gst_event_unref (eos);
+  } else {
+    fail_unless (eos == NULL);
+  }
+}
+
+static void
+input_selector_push_eos (gint stream, gboolean active)
+{
+  GstPad *pad = stream == 1 ? stream1_pad : stream2_pad;
+
+  if (active) {
+    fail_unless (gst_pad_push_event (pad, gst_event_new_eos ()));
+  } else {
+    /* The non-active pads will block when receving eos, so we need to do it
+     * from a separate thread. This makes this test racy, but it should only
+     * cause false positives, not false negatives */
+    GThread *t = g_thread_new ("selector-test-push-eos",
+        (GThreadFunc) input_selector_do_push_eos, pad);
+
+    /* Sleep half a second to allow the other thread to execute, this is not
+     * a definitive solution but there is no way to know when the
+     * EOS has reached input-selector and blocked there, so this is just
+     * to reduce the possibility of this test being racy (false positives)
+     */
+    g_usleep (0.5 * G_USEC_PER_SEC);
+    g_thread_unref (t);
+  }
+
+  input_selector_check_eos (active);
+}
+
+GST_START_TEST (test_input_selector_empty_stream)
+{
+  setup_input_selector_with_2_streams (2);
+
+  /* stream1 is the empty stream, stream2 has data */
+
+  /* empty stream is just an EOS and it should not be forwarded */
+  input_selector_push_eos (1, FALSE);
+
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_eos (2, TRUE);
+
+  teardown_input_selector_with_2_streams ();
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_input_selector_shorter_stream)
+{
+  setup_input_selector_with_2_streams (2);
+
+  /* stream1 is shorter than stream2 */
+
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (1, INPUT_SELECTOR_DROP);
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+
+  /* EOS from inactive stream should not go through */
+  input_selector_push_eos (1, FALSE);
+
+  /* buffers from active stream can still flow */
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+
+  /* EOS from active stream should go through */
+  input_selector_push_eos (2, TRUE);
+
+  teardown_input_selector_with_2_streams ();
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_input_selector_switch_to_eos_stream)
+{
+  setup_input_selector_with_2_streams (2);
+
+  /* stream1 receives eos before stream2 and then we switch to it */
+
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (1, INPUT_SELECTOR_DROP);
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (1, INPUT_SELECTOR_DROP);
+
+  /* EOS from inactive stream should not go through */
+  input_selector_push_eos (1, FALSE);
+
+  /* buffers from active stream can still flow */
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+  input_selector_push_buffer (2, INPUT_SELECTOR_FORWARD);
+
+  /* now switch to stream1 */
+  g_object_set (selector, "active-pad", GST_PAD_PEER (stream1_pad), NULL);
+
+  /* wait for eos (it runs from a separate thread) */
+  g_mutex_lock (&eos_probe_lock);
+  while (!eos_received) {
+    g_cond_wait (&eos_probe_cond, &eos_probe_lock);
+  }
+  g_mutex_unlock (&eos_probe_lock);
+
+  teardown_input_selector_with_2_streams ();
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_output_selector_no_srcpad_negotiation)
 {
   GstElement *sel;
   GstCaps *caps;
@@ -478,7 +703,7 @@
   output_pads = NULL;
 }
 
-GST_START_TEST (test_output_selector_getcaps_none);
+GST_START_TEST (test_output_selector_getcaps_none)
 {
   GList *walker;
 
@@ -513,7 +738,7 @@
 GST_END_TEST;
 
 
-GST_START_TEST (test_output_selector_getcaps_all);
+GST_START_TEST (test_output_selector_getcaps_all)
 {
   GList *walker;
   GstCaps *expected;
@@ -553,7 +778,7 @@
 GST_END_TEST;
 
 
-GST_START_TEST (test_output_selector_getcaps_active);
+GST_START_TEST (test_output_selector_getcaps_active)
 {
   GList *walker;
   GstCaps *expected;
@@ -605,6 +830,9 @@
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_output_selector_buffer_count);
   tcase_add_test (tc_chain, test_input_selector_buffer_count);
+  tcase_add_test (tc_chain, test_input_selector_empty_stream);
+  tcase_add_test (tc_chain, test_input_selector_shorter_stream);
+  tcase_add_test (tc_chain, test_input_selector_switch_to_eos_stream);
   tcase_add_test (tc_chain, test_output_selector_no_srcpad_negotiation);
 
   tc_chain = tcase_create ("output-selector-negotiation");
diff --git a/tests/check/elements/streamiddemux.c b/tests/check/elements/streamiddemux.c
new file mode 100644
index 0000000..8c10bce
--- /dev/null
+++ b/tests/check/elements/streamiddemux.c
@@ -0,0 +1,514 @@
+/* GStreamer unit tests for the streamiddemux
+ *
+ * Copyright 2013 LGE Corporation.
+ *  @author: Hoonhee Lee <hoonhee.lee@lge.com>
+ *  @author: Jeongseok Kim <jeongseok.kim@lge.com>
+ *  @author: Wonchul Lee <wonchul86.lee@lge.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gst/check/gstcheck.h>
+#include <stdlib.h>
+
+#define NUM_SUBSTREAMS 100
+#define NUM_BUFFER 1000
+
+static GstPad *active_srcpad;
+
+struct TestData
+{
+  GstElement *demux;
+  GstPad *mysrc, *mysink[NUM_SUBSTREAMS];
+  GstPad *demuxsink, *demuxsrc[NUM_SUBSTREAMS];
+  gint srcpad_cnt;
+  GstCaps *mycaps;
+  GstCaps *caps[NUM_SUBSTREAMS];
+  GstSegment segment[NUM_SUBSTREAMS];
+  gchar *stream_ids[NUM_SUBSTREAMS];
+};
+
+static void
+set_active_srcpad (struct TestData *td)
+{
+  if (active_srcpad)
+    gst_object_unref (active_srcpad);
+
+  g_object_get (td->demux, "active-pad", &active_srcpad, NULL);
+}
+
+static void
+release_test_objects (struct TestData *td)
+{
+  fail_unless (gst_element_set_state (td->demux, GST_STATE_NULL) ==
+      GST_STATE_CHANGE_SUCCESS);
+
+  gst_object_unref (td->demuxsink);
+
+  gst_caps_unref (td->mycaps);
+
+  if (active_srcpad)
+    gst_object_unref (active_srcpad);
+
+  gst_object_unref (td->demux);
+}
+
+static void
+src_pad_added_cb (GstElement * demux, GstPad * pad, struct TestData *td)
+{
+  if (td->srcpad_cnt < NUM_SUBSTREAMS) {
+    td->demuxsrc[td->srcpad_cnt] = pad;
+    fail_unless (gst_pad_link (pad,
+            td->mysink[td->srcpad_cnt++]) == GST_PAD_LINK_OK);
+  }
+}
+
+static void
+setup_test_objects (struct TestData *td)
+{
+  td->mycaps = gst_caps_new_empty_simple ("test/test");
+  td->srcpad_cnt = 0;
+
+  td->demux = gst_element_factory_make ("streamiddemux", NULL);
+  fail_unless (td->demux != NULL);
+  g_signal_connect (td->demux, "pad-added", G_CALLBACK (src_pad_added_cb), td);
+  td->demuxsink = gst_element_get_static_pad (td->demux, "sink");
+  fail_unless (td->demuxsink != NULL);
+
+  fail_unless (gst_element_set_state (td->demux, GST_STATE_PLAYING) ==
+      GST_STATE_CHANGE_SUCCESS);
+}
+
+static GstFlowReturn
+chain_ok (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstPad *peer_pad = NULL;
+  gchar *pad_stream_id, *active_srcpad_stream_id;
+
+  peer_pad = gst_pad_get_peer (active_srcpad);
+  pad_stream_id = gst_pad_get_stream_id (pad);
+  active_srcpad_stream_id = gst_pad_get_stream_id (active_srcpad);
+  fail_unless (pad == peer_pad);
+  fail_unless (g_strcmp0 (pad_stream_id, active_srcpad_stream_id) == 0);
+
+  g_free (pad_stream_id);
+  g_free (active_srcpad_stream_id);
+  gst_object_unref (peer_pad);
+  gst_buffer_unref (buffer);
+
+  return GST_FLOW_OK;
+}
+
+GST_START_TEST (test_simple_create_destroy)
+{
+  GstElement *demux;
+
+  demux = gst_element_factory_make ("streamiddemux", NULL);
+  gst_object_unref (demux);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_streamiddemux_with_stream_start)
+{
+  struct TestData td;
+
+  setup_test_objects (&td);
+
+  GST_DEBUG ("Creating mysink");
+  td.mysink[0] = gst_pad_new ("mysink0", GST_PAD_SINK);
+  gst_pad_set_active (td.mysink[0], TRUE);
+
+  GST_DEBUG ("Creating mysrc");
+  td.mysrc = gst_pad_new ("mysrc", GST_PAD_SRC);
+  fail_unless (GST_PAD_LINK_SUCCESSFUL (gst_pad_link (td.mysrc, td.demuxsink)));
+  gst_pad_set_active (td.mysrc, TRUE);
+
+  GST_DEBUG ("Pushing stream-start event");
+  fail_unless (gst_pad_push_event (td.mysrc,
+          gst_event_new_stream_start ("test0")));
+
+  g_object_get (td.demux, "active-pad", &active_srcpad, NULL);
+  fail_unless (active_srcpad != NULL, "Failed to generate a srcpad");
+  fail_unless (td.srcpad_cnt == 1, "pad-added signal has not emmited");
+
+  GST_DEBUG ("Releasing mysink and mysrc");
+  gst_pad_set_active (td.mysink[0], FALSE);
+  gst_pad_set_active (td.mysrc, FALSE);
+
+  gst_object_unref (td.mysink[0]);
+  gst_object_unref (td.mysrc);
+
+  GST_DEBUG ("Releasing streamiddemux");
+  release_test_objects (&td);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_streamiddemux_without_stream_start)
+{
+  struct TestData td;
+  GstSegment segment;
+
+  setup_test_objects (&td);
+
+  GST_DEBUG ("Creating mysink");
+  td.mysink[0] = gst_pad_new ("mysink0", GST_PAD_SINK);
+  gst_pad_set_active (td.mysink[0], TRUE);
+
+  GST_DEBUG ("Creating mysrc");
+  td.mysrc = gst_pad_new ("mysrc", GST_PAD_SRC);
+  fail_unless (GST_PAD_LINK_SUCCESSFUL (gst_pad_link (td.mysrc, td.demuxsink)));
+  gst_pad_set_active (td.mysrc, TRUE);
+
+  GST_DEBUG ("Pushing caps and segment event without stream-start");
+  fail_unless (gst_pad_push_event (td.mysrc, gst_event_new_caps (td.mycaps)));
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  fail_unless (gst_pad_push_event (td.mysrc, gst_event_new_segment (&segment)));
+
+  g_object_get (td.demux, "active-pad", &active_srcpad, NULL);
+  fail_unless (active_srcpad == NULL, "srcpad has created unexpectedly");
+  fail_unless (td.srcpad_cnt == 0, "pad-added signal is emmited unexpectedly");
+
+  GST_DEBUG ("Releasing mysink and mysrc");
+  gst_pad_set_active (td.mysink[0], FALSE);
+  gst_pad_set_active (td.mysrc, FALSE);
+
+  gst_object_unref (td.mysink[0]);
+  gst_object_unref (td.mysrc);
+
+  GST_DEBUG ("Releasing streamiddemux");
+  release_test_objects (&td);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_streamiddemux_simple)
+{
+  struct TestData td;
+
+  setup_test_objects (&td);
+
+  GST_DEBUG ("Creating mysink");
+  td.mysink[0] = gst_pad_new ("mysink0", GST_PAD_SINK);
+  td.mysink[0]->chaindata = &td;
+  gst_pad_set_chain_function (td.mysink[0], chain_ok);
+  gst_pad_set_active (td.mysink[0], TRUE);
+
+  td.mysink[1] = gst_pad_new ("mysink1", GST_PAD_SINK);
+  td.mysink[1]->chaindata = &td;
+  gst_pad_set_chain_function (td.mysink[1], chain_ok);
+  gst_pad_set_active (td.mysink[1], TRUE);
+
+  GST_DEBUG ("Creating mysrc");
+  td.mysrc = gst_pad_new ("mysrc", GST_PAD_SRC);
+  fail_unless (GST_PAD_LINK_SUCCESSFUL (gst_pad_link (td.mysrc, td.demuxsink)));
+  gst_pad_set_active (td.mysrc, TRUE);
+
+  GST_DEBUG ("Pushing stream-start, caps and segment event");
+  gst_check_setup_events_with_stream_id (td.mysrc, td.demux, td.mycaps,
+      GST_FORMAT_BYTES, "test0");
+  set_active_srcpad (&td);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+
+  gst_check_setup_events_with_stream_id (td.mysrc, td.demux, td.mycaps,
+      GST_FORMAT_BYTES, "test1");
+  set_active_srcpad (&td);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+
+  GST_DEBUG ("Pushing buffer");
+  fail_unless (gst_pad_push_event (td.mysrc,
+          gst_event_new_stream_start ("test0")));
+  set_active_srcpad (&td);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+
+  fail_unless (gst_pad_push_event (td.mysrc,
+          gst_event_new_stream_start ("test1")));
+  set_active_srcpad (&td);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+
+  GST_DEBUG ("Releasing mysink and mysrc");
+  gst_pad_set_active (td.mysink[0], FALSE);
+  gst_pad_set_active (td.mysink[1], FALSE);
+  gst_pad_set_active (td.mysrc, FALSE);
+
+  gst_object_unref (td.mysink[0]);
+  gst_object_unref (td.mysink[1]);
+  gst_object_unref (td.mysrc);
+
+  GST_DEBUG ("Releasing streamiddemux");
+  release_test_objects (&td);
+}
+
+GST_END_TEST;
+
+GList *expected[NUM_SUBSTREAMS];
+
+static gboolean
+sink_event_func (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GList **expected = GST_PAD_ELEMENT_PRIVATE (pad);
+  GstEvent *exp;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CAPS:{
+      GstCaps *recvcaps, *expectcaps;
+
+      *expected = g_list_first (*expected);
+      exp = GST_EVENT ((*expected)->data);
+
+      gst_event_parse_caps (event, &recvcaps);
+      gst_event_parse_caps (exp, &expectcaps);
+
+      fail_unless (gst_caps_is_equal (recvcaps, expectcaps));
+      break;
+    }
+    case GST_EVENT_SEGMENT:{
+      const GstSegment *recvseg, *expectseg;
+
+      *expected = g_list_last (*expected);
+      exp = GST_EVENT ((*expected)->data);
+
+      gst_event_parse_segment (event, &recvseg);
+      gst_event_parse_segment (exp, &expectseg);
+
+      fail_unless_equals_uint64 (recvseg->position, expectseg->position);
+      break;
+    }
+    default:
+      break;
+  }
+
+  return gst_pad_event_default (pad, parent, event);
+}
+
+GST_START_TEST (test_streamiddemux_num_buffers)
+{
+  struct TestData td;
+  gint buffer_cnt = 0;
+  gint stream_cnt = 0;
+  GstEvent *event;
+
+  setup_test_objects (&td);
+
+  GST_DEBUG ("Creating mysink");
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
+    gchar *name;
+    name = g_strdup_printf ("mysink%d", stream_cnt);
+    td.mysink[stream_cnt] = gst_pad_new (name, GST_PAD_SINK);
+    g_free (name);
+    gst_pad_set_chain_function (td.mysink[stream_cnt], chain_ok);
+    gst_pad_set_event_function (td.mysink[stream_cnt], sink_event_func);
+    gst_pad_set_active (td.mysink[stream_cnt], TRUE);
+    GST_PAD_ELEMENT_PRIVATE (td.mysink[stream_cnt]) = &expected[stream_cnt];
+  }
+
+  GST_DEBUG ("Creating mysrc");
+  td.mysrc = gst_pad_new ("mysrc", GST_PAD_SRC);
+  fail_unless (GST_PAD_LINK_SUCCESSFUL (gst_pad_link (td.mysrc, td.demuxsink)));
+  gst_pad_set_active (td.mysrc, TRUE);
+
+  GST_DEBUG ("Creating caps");
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
+    gchar *caps_name;
+    caps_name = g_strdup_printf ("test/test%d", stream_cnt);
+    td.caps[stream_cnt] = gst_caps_new_empty_simple (caps_name);
+
+    g_free (caps_name);
+  }
+
+  GST_DEBUG ("Creating segment");
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
+    gst_segment_init (&td.segment[stream_cnt], GST_FORMAT_BYTES);
+    td.segment[stream_cnt].position = stream_cnt * GST_SECOND;
+  }
+
+  GST_DEBUG ("Pushing stream-start, caps and segment event");
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
+    gchar *name;
+    name = g_strdup_printf ("test%d", stream_cnt);
+
+    fail_unless (gst_pad_push_event (td.mysrc,
+            gst_event_new_stream_start (name)));
+
+    event = gst_event_new_caps (td.caps[stream_cnt]);
+    expected[stream_cnt] =
+        g_list_append (expected[stream_cnt], gst_event_ref (event));
+    fail_unless (gst_pad_push_event (td.mysrc, event));
+
+    event = gst_event_new_segment (&td.segment[stream_cnt]);
+    expected[stream_cnt] =
+        g_list_append (expected[stream_cnt], gst_event_ref (event));
+    fail_unless (gst_pad_push_event (td.mysrc, event));
+
+    g_free (name);
+    set_active_srcpad (&td);
+
+    fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+  }
+
+  GST_DEBUG ("Pushing buffers to random srcpad");
+  for (buffer_cnt = 0; buffer_cnt < NUM_BUFFER; ++buffer_cnt) {
+    gchar *name;
+    gint active_stream = rand () % NUM_SUBSTREAMS;
+    name = g_strdup_printf ("test%d", active_stream);
+
+    fail_unless (gst_pad_push_event (td.mysrc,
+            gst_event_new_stream_start (name)));
+    fail_unless (gst_pad_push_event (td.mysrc,
+            gst_event_new_caps (td.caps[active_stream])));
+    fail_unless (gst_pad_push_event (td.mysrc,
+            gst_event_new_segment (&td.segment[active_stream])));
+
+    g_free (name);
+    set_active_srcpad (&td);
+
+    fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+  }
+
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt)
+    gst_caps_unref (td.caps[stream_cnt]);
+
+  GST_DEBUG ("Releasing mysink and mysrc");
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
+    gst_pad_set_active (td.mysink[stream_cnt], FALSE);
+  }
+  gst_pad_set_active (td.mysrc, FALSE);
+
+  for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
+    gst_object_unref (td.mysink[stream_cnt]);
+  }
+  gst_object_unref (td.mysrc);
+
+  GST_DEBUG ("Releasing streamiddemux");
+  release_test_objects (&td);
+}
+
+GST_END_TEST;
+
+guint num_eos = 0;
+guint num_flush_start = 0;
+guint num_flush_stop = 0;
+
+static gboolean
+event_func (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_STREAM_START:
+      ++num_flush_start;
+      break;
+    case GST_EVENT_FLUSH_STOP:
+      ++num_flush_stop;
+      break;
+    case GST_EVENT_EOS:
+      ++num_eos;
+      break;
+    default:
+      break;
+  }
+
+  return gst_pad_event_default (pad, parent, event);
+}
+
+GST_START_TEST (test_streamiddemux_eos)
+{
+  struct TestData td;
+
+  setup_test_objects (&td);
+
+  num_eos = 0;
+
+  GST_DEBUG ("Creating mysink");
+  td.mysink[0] = gst_pad_new ("mysink0", GST_PAD_SINK);
+  gst_pad_set_chain_function (td.mysink[0], chain_ok);
+  gst_pad_set_event_function (td.mysink[0], event_func);
+  gst_pad_set_active (td.mysink[0], TRUE);
+
+  td.mysink[1] = gst_pad_new ("mysink1", GST_PAD_SINK);
+  gst_pad_set_chain_function (td.mysink[1], chain_ok);
+  gst_pad_set_event_function (td.mysink[1], event_func);
+  gst_pad_set_active (td.mysink[1], TRUE);
+
+  GST_DEBUG ("Creating mysrc");
+  td.mysrc = gst_pad_new ("mysrc", GST_PAD_SRC);
+  fail_unless (GST_PAD_LINK_SUCCESSFUL (gst_pad_link (td.mysrc, td.demuxsink)));
+  gst_pad_set_active (td.mysrc, TRUE);
+
+  GST_DEBUG ("Pushing stream-start, caps and segment event");
+  gst_check_setup_events_with_stream_id (td.mysrc, td.demux, td.mycaps,
+      GST_FORMAT_BYTES, "test0");
+  set_active_srcpad (&td);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+
+  gst_check_setup_events_with_stream_id (td.mysrc, td.demux, td.mycaps,
+      GST_FORMAT_BYTES, "test1");
+  set_active_srcpad (&td);
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_OK);
+
+  GST_DEBUG ("Pushing flush event");
+  fail_unless (gst_pad_push_event (td.mysrc, gst_event_new_flush_start ()));
+  fail_unless (num_flush_start == 2,
+      "Failed to send flush-start event to all pads internally linked");
+  fail_unless (gst_pad_push_event (td.mysrc, gst_event_new_flush_stop (TRUE)));
+  fail_unless (num_flush_stop == 2,
+      "Failed to send flush-stop event to all pads internally linked");
+
+  GST_DEBUG ("Pushing eos event");
+  fail_unless (gst_pad_push_event (td.mysrc, gst_event_new_eos ()));
+  fail_unless (num_eos == 2,
+      "Failed to send eos event to all pads internally linked");
+
+  fail_unless (gst_pad_push (td.mysrc, gst_buffer_new ()) == GST_FLOW_EOS);
+
+  GST_DEBUG ("Releasing mysink and mysrc");
+  gst_pad_set_active (td.mysink[0], FALSE);
+  gst_pad_set_active (td.mysink[1], FALSE);
+  gst_pad_set_active (td.mysrc, FALSE);
+
+  gst_object_unref (td.mysink[0]);
+  gst_object_unref (td.mysink[1]);
+  gst_object_unref (td.mysrc);
+
+  GST_DEBUG ("Releasing streamiddemux");
+  release_test_objects (&td);
+}
+
+GST_END_TEST;
+
+static Suite *
+streamiddemux_suite (void)
+{
+  Suite *s = suite_create ("streamiddemux");
+  TCase *tc_chain;
+
+  tc_chain = tcase_create ("streamiddemux simple");
+  tcase_add_test (tc_chain, test_simple_create_destroy);
+  tcase_add_test (tc_chain, test_streamiddemux_with_stream_start);
+  tcase_add_test (tc_chain, test_streamiddemux_without_stream_start);
+  tcase_add_test (tc_chain, test_streamiddemux_simple);
+  tcase_add_test (tc_chain, test_streamiddemux_num_buffers);
+  tcase_add_test (tc_chain, test_streamiddemux_eos);
+  suite_add_tcase (s, tc_chain);
+
+  return s;
+}
+
+GST_CHECK_MAIN (streamiddemux);
diff --git a/tests/check/elements/tee.c b/tests/check/elements/tee.c
index 7491215..3cdd0f6 100644
--- a/tests/check/elements/tee.c
+++ b/tests/check/elements/tee.c
@@ -625,6 +625,79 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_allow_not_linked)
+{
+  GstElement *tee;
+  GstPad *src1, *src2;
+  GstBuffer *buffer;
+  GstPad *srcpad;
+  GstCaps *caps;
+  GstSegment segment;
+
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS_ANY);
+
+  caps = gst_caps_new_empty_simple ("test/test");
+
+  tee = gst_check_setup_element ("tee");
+  fail_unless (tee);
+  g_object_set (tee, "allow-not-linked", TRUE, NULL);
+
+  srcpad = gst_check_setup_src_pad (tee, &srctemplate);
+  gst_pad_set_active (srcpad, TRUE);
+
+  gst_pad_push_event (srcpad, gst_event_new_stream_start ("test"));
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  gst_pad_push_event (srcpad, gst_event_new_stream_start ("test"));
+  gst_pad_set_caps (srcpad, caps);
+  gst_caps_unref (caps);
+  gst_pad_push_event (srcpad, gst_event_new_segment (&segment));
+
+  fail_unless (gst_element_set_state (tee,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS);
+
+  buffer = gst_buffer_new ();
+  fail_unless (buffer);
+
+  fail_unless (gst_pad_push (srcpad, gst_buffer_ref (buffer)) == GST_FLOW_OK);
+
+  src1 = gst_element_get_request_pad (tee, "src_%u");
+
+  fail_unless (gst_pad_push (srcpad, gst_buffer_ref (buffer)) == GST_FLOW_OK);
+
+  src2 = gst_element_get_request_pad (tee, "src_%u");
+
+  fail_unless (gst_pad_push (srcpad, gst_buffer_ref (buffer)) == GST_FLOW_OK);
+
+  g_object_set (tee, "allow-not-linked", FALSE, NULL);
+
+  fail_unless (gst_pad_push (srcpad,
+          gst_buffer_ref (buffer)) == GST_FLOW_NOT_LINKED);
+
+  gst_element_release_request_pad (tee, src1);
+
+  fail_unless (gst_pad_push (srcpad,
+          gst_buffer_ref (buffer)) == GST_FLOW_NOT_LINKED);
+
+  gst_element_release_request_pad (tee, src2);
+  g_object_unref (src1);
+  g_object_unref (src2);
+
+  fail_unless (gst_pad_push (srcpad,
+          gst_buffer_ref (buffer)) == GST_FLOW_NOT_LINKED);
+
+  gst_pad_set_active (srcpad, FALSE);
+  gst_check_teardown_src_pad (tee);
+  gst_check_teardown_element (tee);
+
+  fail_if (buffer->mini_object.refcount != 1);
+  gst_buffer_unref (buffer);
+}
+
+GST_END_TEST;
+
 static Suite *
 tee_suite (void)
 {
@@ -642,6 +715,7 @@
   tcase_add_test (tc_chain, test_internal_links);
   tcase_add_test (tc_chain, test_flow_aggregation);
   tcase_add_test (tc_chain, test_request_pads);
+  tcase_add_test (tc_chain, test_allow_not_linked);
 
   return s;
 }
diff --git a/tests/check/generic/states.c b/tests/check/generic/states.c
index 251f433..8085877 100644
--- a/tests/check/generic/states.c
+++ b/tests/check/generic/states.c
@@ -40,7 +40,8 @@
 
   GST_DEBUG ("getting elements for package %s", PACKAGE);
   STATE_IGNORE_ELEMENTS = g_getenv ("GST_STATE_IGNORE_ELEMENTS");
-  if (!g_getenv ("GST_NO_STATE_IGNORE_ELEMENTS") && STATE_IGNORE_ELEMENTS) {
+  fail_unless (STATE_IGNORE_ELEMENTS != NULL, "Test environment not set up!");
+  if (!g_getenv ("GST_NO_STATE_IGNORE_ELEMENTS")) {
     GST_DEBUG ("Will ignore element factories: '%s'", STATE_IGNORE_ELEMENTS);
     ignorelist = g_strsplit (STATE_IGNORE_ELEMENTS, " ", 0);
   }
@@ -205,11 +206,71 @@
 
 GST_END_TEST;
 
+static gboolean
+element_state_is (GstElement * e, GstState s)
+{
+  GstStateChangeReturn ret;
+  GstState state;
+
+  ret = gst_element_get_state (e, &state, NULL, GST_CLOCK_TIME_NONE);
+  return (ret == GST_STATE_CHANGE_SUCCESS && state == s);
+}
+
+GST_START_TEST (test_state_changes_up_failure)
+{
+  GstElement *bin;
+  GstElement *mid[3];
+  int n;
+
+  /* we want at least one before and one after */
+  g_assert (G_N_ELEMENTS (mid) >= 3);
+
+  /* make a bin */
+  bin = gst_element_factory_make ("bin", NULL);
+
+  /* add children */
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n) {
+    const char *element = n != 1 ? "identity" : "fakesink";
+    mid[n] = gst_element_factory_make (element, NULL);
+    gst_bin_add (GST_BIN (bin), mid[n]);
+    if (n == 1)
+      g_object_set (mid[n], "async", FALSE, NULL);
+  }
+
+  /* This one should work */
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n)
+    fail_unless (element_state_is (mid[n], GST_STATE_NULL));
+  gst_element_set_state (bin, GST_STATE_READY);
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n)
+    fail_unless (element_state_is (mid[n], GST_STATE_READY));
+  gst_element_set_state (bin, GST_STATE_NULL);
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n)
+    fail_unless (element_state_is (mid[n], GST_STATE_NULL));
+
+  /* make the middle element fail to switch up */
+  g_object_set (mid[1], "state-error", 1 /* null-to-ready */ , NULL);
+
+  /* This one should not */
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n)
+    fail_unless (element_state_is (mid[n], GST_STATE_NULL));
+  gst_element_set_state (bin, GST_STATE_READY);
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n)
+    fail_unless (element_state_is (mid[n], GST_STATE_NULL));
+  gst_element_set_state (bin, GST_STATE_NULL);
+  for (n = 0; n < G_N_ELEMENTS (mid); ++n)
+    fail_unless (element_state_is (mid[n], GST_STATE_NULL));
+
+  /* cleanup */
+  gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
 
 static Suite *
 states_suite (void)
 {
-  Suite *s = suite_create ("states");
+  Suite *s = suite_create ("states_core");
   TCase *tc_chain = tcase_create ("general");
 
   suite_add_tcase (s, tc_chain);
@@ -217,6 +278,7 @@
   tcase_add_test (tc_chain, test_state_changes_up_and_down_seq);
   tcase_add_test (tc_chain, test_state_changes_up_seq);
   tcase_add_test (tc_chain, test_state_changes_down_seq);
+  tcase_add_test (tc_chain, test_state_changes_up_failure);
 
   return s;
 }
diff --git a/tests/check/gst/capslist.h b/tests/check/gst/capslist.h
index 20c1409..0991fa8 100644
--- a/tests/check/gst/capslist.h
+++ b/tests/check/gst/capslist.h
@@ -26,7 +26,9 @@
   /* Test lists of fractions and fraction ranges */
   "test/gst-fraction-range, fraction = (fraction) { [ 1/4, 1/3 ], 1/8 }",
   "test/gst-fraction-range, fraction = (fraction) { [ 1/4, 1/3 ], [ 1/8, 2/8 ] }",
-
+  /* FlagSet */
+  "test/gst-flags,thingy=1f394:00ff8ff",
+  "test/gst-flags,thingy=101ffff1f394:fff00ff00ff8ff",
   /* Some random checks */
   "video/x-raw, format = (string) { I420, Y42B, Y444 }, framerate = (fraction) [1/MAX, MAX], width = (int) [ 1, MAX ], height = (int) [ 1, MAX ]",
 
diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
index 58c91ea..297f6b4 100644
--- a/tests/check/gst/gstbin.c
+++ b/tests/check/gst/gstbin.c
@@ -201,6 +201,7 @@
   gst_pad_set_active (pad2, FALSE);
   gst_check_teardown_src_pad (sink1);
   gst_check_teardown_src_pad (sink2);
+  gst_object_unref (bus);
   gst_object_unref (pipeline);
 }
 
@@ -259,6 +260,7 @@
   gst_pad_set_active (pad2, FALSE);
   gst_check_teardown_src_pad (sink1);
   gst_check_teardown_src_pad (sink2);
+  gst_object_unref (bus);
   gst_object_unref (pipeline);
 }
 
@@ -460,7 +462,7 @@
 
   ASSERT_OBJECT_REFCOUNT (bus, "bus", 2);
   ASSERT_OBJECT_REFCOUNT (src, "src", 1);
-  ASSERT_OBJECT_REFCOUNT (sink, "sink", 1);
+  ASSERT_OBJECT_REFCOUNT (sink, "sink", 2);
   ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 1);
 
   /* change state to PLAYING, spawning three messages */
@@ -479,7 +481,7 @@
    * sink might have an extra reference if it's still blocked on preroll
    * pipeline posted a new-clock message too. */
   ASSERT_OBJECT_REFCOUNT_BETWEEN (src, "src", 2, 3);
-  ASSERT_OBJECT_REFCOUNT_BETWEEN (sink, "sink", 2, 3);
+  ASSERT_OBJECT_REFCOUNT_BETWEEN (sink, "sink", 2, 4);
   ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 3);
 
   pop_messages (bus, 3);
@@ -489,7 +491,7 @@
   /* src might have an extra reference if it's still pushing */
   ASSERT_OBJECT_REFCOUNT_BETWEEN (src, "src", 1, 2);
   /* sink might have an extra reference if it's still blocked on preroll */
-  ASSERT_OBJECT_REFCOUNT_BETWEEN (sink, "sink", 1, 2);
+  ASSERT_OBJECT_REFCOUNT_BETWEEN (sink, "sink", 1, 3);
   ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 1);
 
   /* go back to READY, spawning six messages */
@@ -695,7 +697,7 @@
   bin = gst_bin_new (NULL);
   fail_unless (bin != NULL, "Could not create bin");
 
-  ASSERT_WARNING (gst_bin_add (GST_BIN (bin), bin));
+  ASSERT_CRITICAL (gst_bin_add (GST_BIN (bin), bin));
 
   gst_object_unref (bin);
 }
diff --git a/tests/check/gst/gstbuffer.c b/tests/check/gst/gstbuffer.c
index e52175f..6291c24 100644
--- a/tests/check/gst/gstbuffer.c
+++ b/tests/check/gst/gstbuffer.c
@@ -340,6 +340,8 @@
 
   /* NOTE that data is refcounted */
   fail_unless (info.size == sinfo.size);
+  /* GstBuffer was copied but the underlying GstMemory should be the same */
+  fail_unless (info.data == sinfo.data);
 
   gst_buffer_unmap (copy, &sinfo);
   gst_buffer_unmap (buffer, &info);
@@ -379,12 +381,12 @@
   /* copy should still be independent if copied when mapped */
   buffer = gst_buffer_new_and_alloc (4);
   gst_buffer_memset (buffer, 0, 0, 4);
-  gst_buffer_map (buffer, &info, GST_MAP_WRITE);
+  fail_unless (gst_buffer_map (buffer, &info, GST_MAP_WRITE));
   copy = gst_buffer_copy (buffer);
   fail_unless (gst_buffer_is_writable (copy));
   gst_buffer_memset (copy, 0, 0x80, 4);
   gst_buffer_unmap (buffer, &info);
-  gst_buffer_map (buffer, &info, GST_MAP_READ);
+  fail_unless (gst_buffer_map (buffer, &info, GST_MAP_READ));
   fail_if (gst_buffer_memcmp (copy, 0, info.data, info.size) == 0);
   gst_buffer_unmap (buffer, &info);
 
@@ -408,6 +410,37 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_copy_deep)
+{
+  GstBuffer *buffer, *copy;
+  GstMapInfo info, sinfo;
+
+  buffer = gst_buffer_new_and_alloc (4);
+  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
+
+  copy = gst_buffer_copy_deep (buffer);
+  ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1);
+  ASSERT_BUFFER_REFCOUNT (copy, "copy", 1);
+  /* buffers are copied and must point to different memory */
+  fail_if (buffer == copy);
+
+  fail_unless (gst_buffer_map (buffer, &info, GST_MAP_READ));
+  fail_unless (gst_buffer_map (copy, &sinfo, GST_MAP_READ));
+
+  /* NOTE that data is refcounted */
+  fail_unless (info.size == sinfo.size);
+  /* copy_deep() forces new GstMemory to be used */
+  fail_unless (info.data != sinfo.data);
+
+  gst_buffer_unmap (copy, &sinfo);
+  gst_buffer_unmap (buffer, &info);
+
+  gst_buffer_unref (copy);
+  gst_buffer_unref (buffer);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_try_new_and_alloc)
 {
   GstBuffer *buf;
@@ -871,6 +904,7 @@
   tcase_add_test (tc_chain, test_metadata_writable);
   tcase_add_test (tc_chain, test_memcmp);
   tcase_add_test (tc_chain, test_copy);
+  tcase_add_test (tc_chain, test_copy_deep);
   tcase_add_test (tc_chain, test_try_new_and_alloc);
   tcase_add_test (tc_chain, test_size);
   tcase_add_test (tc_chain, test_resize);
diff --git a/tests/check/gst/gstbufferlist.c b/tests/check/gst/gstbufferlist.c
index 9d5c2df..6220d02 100644
--- a/tests/check/gst/gstbufferlist.c
+++ b/tests/check/gst/gstbufferlist.c
@@ -195,6 +195,55 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_copy_deep)
+{
+  GstBufferList *list_copy;
+  GstMapInfo info, sinfo;
+  GstBuffer *buf1;
+  GstBuffer *buf2;
+  GstBuffer *buf_copy;
+
+  /* add buffers to the list */
+  buf1 = gst_buffer_new_allocate (NULL, 1, NULL);
+  gst_buffer_list_add (list, buf1);
+
+  buf2 = gst_buffer_new_allocate (NULL, 2, NULL);
+  gst_buffer_list_add (list, buf2);
+
+  /* make a copy */
+  list_copy = gst_buffer_list_copy_deep (list);
+  fail_unless (GST_MINI_OBJECT_REFCOUNT_VALUE (list) == 1);
+  fail_unless (GST_MINI_OBJECT_REFCOUNT_VALUE (list_copy) == 1);
+  fail_unless (list_copy != list);
+  fail_unless_equals_int (gst_buffer_list_length (list_copy), 2);
+
+  buf_copy = gst_buffer_list_get (list_copy, 0);
+  /* each buffer in the list is copied and must point to different memory */
+  fail_unless (buf_copy != buf1);
+  ASSERT_BUFFER_REFCOUNT (buf1, "buf1", 1);
+  fail_unless_equals_int (gst_buffer_get_size (buf1), 1);
+
+  buf_copy = gst_buffer_list_get (list_copy, 1);
+  fail_unless (buf_copy != buf2);
+  ASSERT_BUFFER_REFCOUNT (buf2, "buf2", 1);
+  fail_unless_equals_int (gst_buffer_get_size (buf2), 2);
+
+  fail_unless (gst_buffer_map (buf2, &info, GST_MAP_READ));
+  fail_unless (gst_buffer_map (buf_copy, &sinfo, GST_MAP_READ));
+
+  /* NOTE that data is refcounted */
+  fail_unless (info.size == sinfo.size);
+  /* copy_deep() forces new GstMemory to be used */
+  fail_unless (info.data != sinfo.data);
+
+  gst_buffer_unmap (buf_copy, &sinfo);
+  gst_buffer_unmap (buf2, &info);
+
+  gst_buffer_list_unref (list_copy);
+}
+
+GST_END_TEST;
+
 typedef struct
 {
   GstBuffer *buf[2];
@@ -390,6 +439,7 @@
   tcase_add_test (tc_chain, test_remove);
   tcase_add_test (tc_chain, test_make_writable);
   tcase_add_test (tc_chain, test_copy);
+  tcase_add_test (tc_chain, test_copy_deep);
   tcase_add_test (tc_chain, test_foreach);
   tcase_add_test (tc_chain, test_expand_and_remove);
 
diff --git a/tests/check/gst/gstbufferpool.c b/tests/check/gst/gstbufferpool.c
index 7dcf1bf..8dd265a 100644
--- a/tests/check/gst/gstbufferpool.c
+++ b/tests/check/gst/gstbufferpool.c
@@ -179,7 +179,6 @@
   GstBufferPool *pool = gst_buffer_pool_new ();
   GstStructure *config = gst_buffer_pool_get_config (pool);
   GstCaps *caps = gst_caps_new_empty_simple ("test/data");
-  GstBuffer *buffer = NULL;
 
   /* unconfigured pool cannot be activated */
   fail_if (gst_buffer_pool_set_active (pool, TRUE));
@@ -192,26 +191,11 @@
   config = gst_buffer_pool_get_config (pool);
   fail_unless (gst_buffer_pool_set_config (pool, config));
 
-  /* setting a different config should deactivate the pool */
+  /* setting a different config on active pool should fail */
   config = gst_buffer_pool_get_config (pool);
   gst_buffer_pool_config_set_params (config, caps, 12, 10, 0);
-  fail_unless (gst_buffer_pool_set_config (pool, config));
-  fail_if (gst_buffer_pool_is_active (pool));
-
-  /* though it should fail if there is outstanding buffers */
-  gst_buffer_pool_set_active (pool, TRUE);
-  gst_buffer_pool_acquire_buffer (pool, &buffer, NULL);
-  fail_if (buffer == NULL);
-  config = gst_buffer_pool_get_config (pool);
-  gst_buffer_pool_config_set_params (config, caps, 10, 10, 0);
   fail_if (gst_buffer_pool_set_config (pool, config));
-
-  /* and work when last buffer is back */
-  config = gst_buffer_pool_get_config (pool);
-  gst_buffer_pool_config_set_params (config, caps, 10, 10, 0);
-  gst_buffer_unref (buffer);
-  fail_unless (gst_buffer_pool_set_config (pool, config));
-  fail_unless (gst_buffer_pool_set_active (pool, TRUE));
+  fail_unless (gst_buffer_pool_is_active (pool));
 
   gst_buffer_pool_set_active (pool, FALSE);
   gst_object_unref (pool);
@@ -228,8 +212,8 @@
 
   fail_unless (gst_buffer_pool_config_validate_params (config, caps, 5, 4, 0));
   fail_unless (gst_buffer_pool_config_validate_params (config, caps, 5, 2, 0));
+  fail_unless (gst_buffer_pool_config_validate_params (config, caps, 4, 4, 0));
   fail_if (gst_buffer_pool_config_validate_params (config, caps, 5, 6, 0));
-  fail_if (gst_buffer_pool_config_validate_params (config, caps, 4, 4, 0));
 
   gst_caps_unref (caps);
   caps = gst_caps_new_empty_simple ("test/data2");
diff --git a/tests/check/gst/gstbus.c b/tests/check/gst/gstbus.c
index 5eaa7f1..f0308c6 100644
--- a/tests/check/gst/gstbus.c
+++ b/tests/check/gst/gstbus.c
@@ -188,7 +188,7 @@
   fail_unless_equals_int (num_eos, 10);
   fail_unless_equals_int (num_app, 10);
 
-  g_source_remove (id);
+  fail_unless (gst_bus_remove_watch (test_bus));
   g_main_loop_unref (main_loop);
 
   gst_object_unref ((GstObject *) test_bus);
@@ -286,6 +286,31 @@
 
 GST_END_TEST;
 
+static gboolean
+dummy_bus_func (GstBus * bus, GstMessage * msg, gpointer user_data)
+{
+  return TRUE;
+}
+
+GST_START_TEST (test_remove_watch)
+{
+  test_bus = gst_bus_new ();
+
+  /* removing a non-existing watch should fail */
+  fail_if (gst_bus_remove_watch (test_bus));
+
+  gst_bus_add_watch (test_bus, dummy_bus_func, NULL);
+
+  fail_unless (gst_bus_remove_watch (test_bus));
+
+  /* now it should fail to remove the watch again */
+  fail_if (gst_bus_remove_watch (test_bus));
+
+  gst_object_unref (test_bus);
+}
+
+GST_END_TEST;
+
 static gint messages_seen;
 
 static void
@@ -704,6 +729,86 @@
 
 GST_END_TEST;
 
+static GstBusSyncReply
+test_async_sync_handler (GstBus * bus, GstMessage * msg, gpointer user_data)
+{
+  GArray *timestamps = user_data;
+  gint64 ts = g_get_monotonic_time () * 1000;   /* microsecs -> nanosecs */
+
+  g_array_append_val (timestamps, ts);
+  GST_INFO ("[msg %p] %" GST_PTR_FORMAT, msg, msg);
+
+  return GST_BUS_ASYNC;
+}
+
+static gpointer
+post_10_app_messages_thread (gpointer data)
+{
+  THREAD_START ();
+  send_10_app_messages ();
+  return NULL;
+}
+
+/* Test GST_BUS_ASYNC actually causes the thread posting the message to
+ * block until the message has been freed. We spawn a thread to post ten
+ * messages. We install a bus sync handler to get the timestamp of each
+ * message as it is being posted, and to return GST_BUS_ASYNC. In the main
+ * thread we sleep a bit after we pop off a message and before we free it.
+ * The posting thread should be blocked while the main thread sleeps, so
+ * we expect the interval as the messages are posted to be roughly the same
+ * as the sleep time in the main thread. g_usleep() is not super-precise, so
+ * we allow for some slack there, we just want to check that the posting
+ * thread was blocked at all really. */
+GST_START_TEST (test_async_message)
+{
+  GArray *timestamps;
+  guint i;
+
+  MAIN_INIT ();
+
+  timestamps = g_array_sized_new (FALSE, FALSE, sizeof (gint64), 10);
+
+  test_bus = gst_bus_new ();
+
+  gst_bus_set_sync_handler (test_bus, test_async_sync_handler, timestamps,
+      NULL);
+
+  MAIN_START_THREAD_FUNCTIONS (1, post_10_app_messages_thread, NULL);
+
+  MAIN_SYNCHRONIZE ();
+
+  for (i = 0; i < 10; i++) {
+    GstMessage *msg;
+
+    GST_LOG ("(%d) waiting for message..", i);
+    msg = gst_bus_timed_pop (test_bus, GST_CLOCK_TIME_NONE);
+    GST_LOG ("(%d) got message, sleeping a bit", i);
+    g_usleep (60 * GST_MSECOND / (GST_SECOND / G_USEC_PER_SEC));
+    GST_LOG ("(%d) about to free message", i);
+    gst_message_unref (msg);
+  }
+
+  for (i = 1; i < 10; i++) {
+    gint64 prev_ts = g_array_index (timestamps, gint64, i - 1);
+    gint64 ts = g_array_index (timestamps, gint64, i);
+    gint64 diff = ts - prev_ts;
+
+    fail_unless (prev_ts < ts);
+    fail_unless (diff >= 20 * GST_MSECOND, "interval between messages being "
+        "posted was just %" G_GINT64_FORMAT "ms", diff / GST_MSECOND);
+  }
+
+  fail_if (gst_bus_have_pending (test_bus), "unexpected messages on bus");
+
+  MAIN_STOP_THREADS ();
+
+  gst_object_unref (test_bus);
+
+  g_array_unref (timestamps);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_bus_suite (void)
 {
@@ -718,11 +823,13 @@
   tcase_add_test (tc_chain, test_watch_with_poll);
   tcase_add_test (tc_chain, test_watch_with_custom_context);
   tcase_add_test (tc_chain, test_add_watch_with_custom_context);
+  tcase_add_test (tc_chain, test_remove_watch);
   tcase_add_test (tc_chain, test_timed_pop);
   tcase_add_test (tc_chain, test_timed_pop_thread);
   tcase_add_test (tc_chain, test_timed_pop_filtered);
   tcase_add_test (tc_chain, test_timed_pop_filtered_with_timeout);
   tcase_add_test (tc_chain, test_custom_main_context);
+  tcase_add_test (tc_chain, test_async_message);
   return s;
 }
 
diff --git a/tests/check/gst/gstcaps.c b/tests/check/gst/gstcaps.c
index e529406..80aa055 100644
--- a/tests/check/gst/gstcaps.c
+++ b/tests/check/gst/gstcaps.c
@@ -39,7 +39,7 @@
     to_str = gst_caps_to_string (caps);
     fail_if (to_str == NULL,
         "Could not convert caps back to string %s\n", caps_list[i]);
-    caps2 = gst_caps_from_string (caps_list[i]);
+    caps2 = gst_caps_from_string (to_str);
     fail_if (caps2 == NULL, "Could not create caps from string %s\n", to_str);
 
     fail_unless (gst_caps_is_equal (caps, caps));
@@ -934,6 +934,105 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_intersect_flagset)
+{
+  GstCaps *c1, *c2, *test;
+  GType test_flagset_type;
+  GstSeekFlags test_flags, test_mask;
+  gchar *test_string;
+
+  /* Test that matching bits inside the mask intersect,
+   * and bits outside the mask don't matter */
+  c1 = gst_caps_from_string ("test/x-caps,field=ffd81d:fffff0");
+  c2 = gst_caps_from_string ("test/x-caps,field=0fd81f:0ffff0");
+
+  test = gst_caps_intersect_full (c1, c2, GST_CAPS_INTERSECT_FIRST);
+  fail_unless_equals_int (gst_caps_get_size (test), 1);
+  fail_unless (gst_caps_is_equal (c1, test));
+  gst_caps_unref (c1);
+  gst_caps_unref (c2);
+  gst_caps_unref (test);
+
+  /* Test that non-matching bits in the mask don't intersect */
+  c1 = gst_caps_from_string ("test/x-caps,field=ff001d:0ffff0");
+  c2 = gst_caps_from_string ("test/x-caps,field=0fd81f:0ffff0");
+
+  test = gst_caps_intersect_full (c1, c2, GST_CAPS_INTERSECT_FIRST);
+  fail_unless (gst_caps_is_empty (test));
+  gst_caps_unref (c1);
+  gst_caps_unref (c2);
+  gst_caps_unref (test);
+
+  /* Check custom flags type serialisation and de-serialisation */
+  test_flagset_type = gst_flagset_register (GST_TYPE_SEEK_FLAGS);
+  fail_unless (g_type_is_a (test_flagset_type, GST_TYPE_FLAG_SET));
+
+  test_flags =
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE |
+      GST_SEEK_FLAG_TRICKMODE_KEY_UNITS;
+  test_mask =
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE |
+      GST_SEEK_FLAG_TRICKMODE_NO_AUDIO;
+
+  c1 = gst_caps_new_simple ("test/x-caps", "field", test_flagset_type,
+      test_flags, test_mask, NULL);
+
+  test_string = gst_caps_to_string (c1);
+  fail_if (test_string == NULL);
+
+  GST_DEBUG ("Serialised caps to %s", test_string);
+  c2 = gst_caps_from_string (test_string);
+  g_free (test_string);
+
+  fail_unless (gst_caps_is_equal (c1, c2));
+
+  gst_caps_unref (c1);
+  gst_caps_unref (c2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_union)
+{
+  GstCaps *c1, *c2, *test, *expect;
+
+  /* Test that matching bits inside the masks union OK, */
+  c1 = gst_caps_from_string ("test/x-caps,field=ffd81d:0ffff0");
+  c2 = gst_caps_from_string ("test/x-caps,field=0fd81f:0ffff0");
+
+  test = gst_caps_merge (c1, c2);
+  test = gst_caps_simplify (test);
+  /* c1, c2 now invalid */
+  fail_unless_equals_int (gst_caps_get_size (test), 1);
+  gst_caps_unref (test);
+
+  /* Test that non-intersecting sets of masked bits are OK */
+  c1 = gst_caps_from_string ("test/x-caps,field=ff001d:0ffff0");
+  c2 = gst_caps_from_string ("test/x-caps,field=4fd81f:f00000");
+  expect = gst_caps_from_string ("test/x-caps,field=4f001d:fffff0");
+  test = gst_caps_simplify (gst_caps_merge (c1, c2));
+  /* c1, c2 now invalid */
+  GST_LOG ("Expected caps %" GST_PTR_FORMAT " got %" GST_PTR_FORMAT "\n",
+      expect, test);
+  fail_unless (gst_caps_is_equal (test, expect));
+  gst_caps_unref (test);
+  gst_caps_unref (expect);
+
+  /* Test that partially-intersecting sets of masked bits that match are OK */
+  c1 = gst_caps_from_string ("test/x-caps,field=ff001d:0ffff0");
+  c2 = gst_caps_from_string ("test/x-caps,field=4fd81f:ff0000");
+  expect = gst_caps_from_string ("test/x-caps,field=4f001d:fffff0");
+  test = gst_caps_simplify (gst_caps_merge (c1, c2));
+  /* c1, c2 now invalid */
+  GST_LOG ("Expected caps %" GST_PTR_FORMAT " got %" GST_PTR_FORMAT "\n",
+      expect, test);
+  fail_unless (gst_caps_is_equal (test, expect));
+  gst_caps_unref (test);
+  gst_caps_unref (expect);
+}
+
+GST_END_TEST;
+
 static gboolean
 _caps_is_fixed_foreach (GQuark field_id, const GValue * value, gpointer unused)
 {
@@ -1122,6 +1221,7 @@
   gst_caps_features_add (f1, "memory:VASurface");
 
   fail_unless (gst_caps_features_is_equal (f1, gst_caps_get_features (c1, 0)));
+  fail_if (gst_caps_can_intersect (c1, c2));
 
   f2 = gst_caps_get_features (c2, 0);
   fail_unless (gst_caps_features_is_equal
@@ -1160,6 +1260,131 @@
 }
 
 GST_END_TEST;
+
+static gboolean
+foreach_append_function (GstCapsFeatures * features, GstStructure * structure,
+    gpointer user_data)
+{
+  GstCaps *caps = user_data;
+
+  gst_caps_append_structure_full (caps, gst_structure_copy (structure),
+      features ? gst_caps_features_copy (features) : NULL);
+
+  return TRUE;
+}
+
+GST_START_TEST (test_foreach)
+{
+  GstCaps *caps, *caps2;
+
+  caps =
+      gst_caps_from_string
+      ("video/x-raw, format=I420; video/x-raw(foo:bar); video/x-h264");
+  caps2 = gst_caps_new_empty ();
+  fail_unless (gst_caps_foreach (caps, foreach_append_function, caps2));
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+
+  caps = gst_caps_new_empty ();
+  caps2 = gst_caps_new_empty ();
+  fail_unless (gst_caps_foreach (caps, foreach_append_function, caps2));
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+}
+
+GST_END_TEST;
+
+static gboolean
+map_function (GstCapsFeatures * features, GstStructure * structure,
+    gpointer user_data)
+{
+  /* Remove caps features if there are any, otherwise add some dummy */
+  if (gst_caps_features_contains (features, "foo:bar")) {
+    gst_caps_features_remove (features, "foo:bar");
+  } else {
+    gst_caps_features_add (features, "foo:bar");
+    gst_caps_features_remove (features, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY);
+  }
+
+  /* Set some dummy integer in the structure */
+  gst_structure_set (structure, "foo", G_TYPE_INT, 123, NULL);
+
+  return TRUE;
+}
+
+GST_START_TEST (test_map_in_place)
+{
+  GstCaps *caps, *caps2;
+
+  caps =
+      gst_caps_from_string
+      ("video/x-raw, format=I420; video/x-raw(foo:bar); video/x-h264");
+  caps2 =
+      gst_caps_from_string
+      ("video/x-raw(foo:bar), foo=(int)123, format=I420; video/x-raw, foo=(int)123; video/x-h264(foo:bar), foo=(int)123");
+  fail_unless (gst_caps_map_in_place (caps, map_function, NULL));
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+
+  caps = gst_caps_new_empty ();
+  caps2 = gst_caps_new_empty ();
+  fail_unless (gst_caps_map_in_place (caps, map_function, NULL));
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+}
+
+GST_END_TEST;
+
+static gboolean
+filter_map_function (GstCapsFeatures * features, GstStructure * structure,
+    gpointer user_data)
+{
+  if (!gst_structure_has_name (structure, "video/x-raw"))
+    return FALSE;
+
+  if (!gst_caps_features_contains (features, "foo:bar"))
+    return FALSE;
+
+  /* Set some dummy integer in the structure */
+  gst_structure_set (structure, "foo", G_TYPE_INT, 123, NULL);
+
+  return TRUE;
+}
+
+GST_START_TEST (test_filter_and_map_in_place)
+{
+  GstCaps *caps, *caps2;
+
+  caps =
+      gst_caps_from_string
+      ("video/x-raw, format=I420; video/x-raw(foo:bar); video/x-h264");
+  caps2 = gst_caps_from_string ("video/x-raw(foo:bar), foo=(int)123");
+  gst_caps_filter_and_map_in_place (caps, filter_map_function, NULL);
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+
+  caps = gst_caps_from_string ("video/x-raw, format=I420; video/x-h264");
+  caps2 = gst_caps_new_empty ();
+  gst_caps_filter_and_map_in_place (caps, filter_map_function, NULL);
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+
+  caps = gst_caps_new_empty ();
+  caps2 = gst_caps_new_empty ();
+  gst_caps_filter_and_map_in_place (caps, filter_map_function, NULL);
+  fail_unless (gst_caps_is_strictly_equal (caps, caps2));
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_caps_suite (void)
 {
@@ -1185,10 +1410,15 @@
   tcase_add_test (tc_chain, test_intersect_first);
   tcase_add_test (tc_chain, test_intersect_first2);
   tcase_add_test (tc_chain, test_intersect_duplication);
+  tcase_add_test (tc_chain, test_intersect_flagset);
+  tcase_add_test (tc_chain, test_union);
   tcase_add_test (tc_chain, test_normalize);
   tcase_add_test (tc_chain, test_broken);
   tcase_add_test (tc_chain, test_features);
   tcase_add_test (tc_chain, test_special_caps);
+  tcase_add_test (tc_chain, test_foreach);
+  tcase_add_test (tc_chain, test_map_in_place);
+  tcase_add_test (tc_chain, test_filter_and_map_in_place);
 
   return s;
 }
diff --git a/tests/check/gst/gstclock.c b/tests/check/gst/gstclock.c
index a394cf8..e72bbc9 100644
--- a/tests/check/gst/gstclock.c
+++ b/tests/check/gst/gstclock.c
@@ -17,6 +17,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
+/* Include the non-public linear regression function */
+#include "../../gst/gstclock-linreg.c"
 #include <gst/check/gstcheck.h>
 
 typedef struct
@@ -76,7 +78,7 @@
 
   /* create master and slave */
   master = g_object_new (TYPE_TEST_CLOCK, "name", "TestClockMaster", NULL);
-  slave = g_object_new (TYPE_TEST_CLOCK, "name", "TestClockMaster", NULL);
+  slave = g_object_new (TYPE_TEST_CLOCK, "name", "TestClockSlave", NULL);
   GST_OBJECT_FLAG_SET (slave, GST_CLOCK_FLAG_CAN_SET_MASTER);
 
   fail_unless_equals_int (GST_OBJECT_REFCOUNT (master), 1);
@@ -109,6 +111,202 @@
 
 GST_END_TEST;
 
+GstClockTime times1[] = {
+  257116899087539, 0, 120632754291904, 0,
+  257117935914250, 0, 120633825367344, 0,
+  257119448289434, 0, 120635306141271, 0,
+  257120493671524, 0, 120636384357825, 0,
+  257121550784861, 0, 120637417438878, 0,
+  257123042669403, 0, 120638895344150, 0,
+  257124089184865, 0, 120639971729651, 0,
+  257125545836474, 0, 120641406788243, 0,
+  257127030618490, 0, 120642885914220, 0,
+  257128033712770, 0, 120643888843907, 0,
+  257129081768074, 0, 120644981892002, 0,
+  257130145383845, 0, 120646016376867, 0,
+  257131532530200, 0, 120647389850987, 0,
+  257132578136034, 0, 120648472767247, 0,
+  257134102475722, 0, 120649953785315, 0,
+  257135142994788, 0, 120651028858556, 0,
+  257136585079868, 0, 120652441303624, 0,
+  257137618260656, 0, 120653491627112, 0,
+  257139108694546, 0, 120654963978184, 0,
+  257140644022048, 0, 120656500233068, 0,
+  257141685671825, 0, 120657578510655, 0,
+  257142741238288, 0, 120658610889805, 0,
+  257144243633074, 0, 120660093098060, 0,
+  257145287962271, 0, 120661172901525, 0,
+  257146740596716, 0, 120662591572179, 0,
+  257147757607150, 0, 120663622822179, 0,
+  257149263992401, 0, 120665135578527, 0,
+  257150303719290, 0, 120666176166905, 0,
+  257151355569906, 0, 120667217304601, 0,
+  257152430578406, 0, 120668326099768, 0,
+  257153490501095, 0, 120669360554111, 0,
+  257154512360784, 0, 120670365497960, 0,
+  257155530610577, 0, 120671399006259, 0,
+  257156562091659, 0, 120672432728185, 0,
+  257157945388742, 0, 120673800312414, 0,
+  257159287547073, 0, 120675142444983, 0,
+  257160324912880, 0, 120676215076817, 0,
+  257345408328042, 0, 120861261738196, 0,
+  257346412270919, 0, 120862265613926, 0,
+  257347420532284, 0, 120863278644933, 0,
+  257348431187638, 0, 120864284412754, 0,
+  257349439018028, 0, 120865293110265, 0,
+  257351796217938, 0, 120867651111973, 0,
+  257352803038092, 0, 120868659107578, 0,
+  257354152688899, 0, 120870008594883, 0,
+  257355157088906, 0, 120871011097327, 0,
+  257356162439182, 0, 120872016346348, 0,
+  257357167872040, 0, 120873021656407, 0,
+  257358182440058, 0, 120874048633945, 0,
+  257359198881356, 0, 120875052265538, 0,
+  257100756525466, 0, 120616619282139, 0,
+  257101789337770, 0, 120617655475988, 0,
+  257102816323472, 0, 120618674000157, 0,
+  257103822485250, 0, 120619679005039, 0,
+  257104840760423, 0, 120620710743321, 0,
+  257105859459496, 0, 120621715351476, 0,
+  257106886662470, 0, 120622764942539, 0,
+  257108387497864, 0, 120624244221106, 0,
+  257109428859191, 0, 120625321461096, 0,
+  257110485892785, 0, 120626356892003, 0,
+  257111869872141, 0, 120627726459874, 0,
+  257112915903774, 0, 120628813190830, 0,
+  257114329982208, 0, 120630187061682, 0,
+  257115376666026, 0, 120631271992101, 0
+};
+
+
+GstClockTime times2[] = {
+  291678579009762, 0, 162107345029507, 0,
+  291679770464405, 0, 162108597684538, 0,
+  291680972924370, 0, 162109745816863, 0,
+  291682278949629, 0, 162111000577605, 0,
+  291683590706117, 0, 162112357724822, 0,
+  291684792322541, 0, 162113613156950, 0,
+  291685931362506, 0, 162114760556854, 0,
+  291687132156589, 0, 162115909238493, 0,
+  291688265012060, 0, 162117120603240, 0,
+  291689372183047, 0, 162118126279508, 0,
+  291705506022294, 0, 162134329373992, 0,
+  291667914301004, 0, 162096795553658, 0,
+  291668119537668, 0, 162096949051905, 0,
+  291668274671455, 0, 162097049238371, 0,
+  291668429435600, 0, 162097256356719, 0,
+  291668586128535, 0, 162097355689763, 0,
+  291668741306233, 0, 162097565678460, 0,
+  291668893789203, 0, 162097661044916, 0,
+  291669100256555, 0, 162097865694145, 0,
+  291669216417563, 0, 162098069214693, 0,
+  291669836394620, 0, 162098677275530, 0,
+  291669990447821, 0, 162098792601263, 0,
+  291670149426086, 0, 162098916899184, 0,
+  291670300232152, 0, 162099114225621, 0,
+  291670411261917, 0, 162099236784112, 0,
+  291670598483507, 0, 162099402158751, 0,
+  291671716582687, 0, 162100558744122, 0,
+  291672600759788, 0, 162101499326359, 0,
+  291673919988307, 0, 162102751981384, 0,
+  291675174441643, 0, 162104005551939, 0,
+  291676271562197, 0, 162105105252898, 0,
+  291677376345374, 0, 162106195737516, 0
+};
+
+GstClockTime times3[] = {
+  291881924291688, 0, 162223997578228, 0,
+  291883318122262, 0, 162224167198360, 0,
+  291884786394838, 0, 162224335172501, 0,
+  291886004374386, 0, 162224503695531, 0,
+  291887224353285, 0, 162224673560021, 0,
+  291888472403367, 0, 162224843760361, 0,
+  291889727977561, 0, 162225014479362, 0,
+  291890989982306, 0, 162225174554558, 0,
+  291892247875763, 0, 162225339753039, 0,
+  291893502163547, 0, 162225673230987, 0,
+  291894711382216, 0, 162225829494101, 0,
+  291895961021506, 0, 162225964530832, 0,
+  291897251690854, 0, 162226127287981, 0,
+  291898508630785, 0, 162226303710406, 0,
+  291899740172868, 0, 162226472478047, 0,
+  291900998878873, 0, 162226637402085, 0,
+  291902334919875, 0, 162226797873245, 0,
+  291903572196610, 0, 162226964352963, 0,
+  291904727342699, 0, 162227125312525, 0,
+  291906071189108, 0, 162228361337153, 0,
+  291907308146005, 0, 162229560625638, 0,
+  291908351925126, 0, 162230604986650, 0,
+  291909396411423, 0, 162231653690543, 0,
+  291910453965348, 0, 162232698550995, 0,
+  291912096870744, 0, 162233475264947, 0,
+  291913234148395, 0, 162233606516855, 0,
+  291915448096576, 0, 162233921145559, 0,
+  291916707748827, 0, 162234047154298, 0,
+  291918737451070, 0, 162234370837425, 0,
+  291919896016205, 0, 162234705504337, 0,
+  291921098663980, 0, 162234872320397, 0,
+  291922315691409, 0, 162235031023366, 0
+};
+
+struct test_entry
+{
+  gint n;
+  GstClockTime *v;
+  GstClockTime expect_internal;
+  GstClockTime expect_external;
+  guint64 expect_num;
+  guint64 expect_denom;
+} times[] = {
+  {
+  32, times1, 257154512360784, 120670380469753, 4052622913376634109,
+        4052799313904261962}, {
+  64, times1, 257359198881356, 120875054227405, 2011895759027682422,
+        2012014931360215503}, {
+  32, times2, 291705506022294, 162134297192792, 2319535707505209857,
+        2321009753483354451}, {
+  32, times3, 291922315691409, 162234934150296, 1370930728180888261,
+        4392719527011673456}
+};
+
+GST_START_TEST (test_regression)
+{
+  GstClockTime m_num, m_den, internal, external;
+  gdouble r_squared, rate, expect_rate;
+  gint i;
+
+  for (i = 0; i < G_N_ELEMENTS (times); i++) {
+    fail_unless (_priv_gst_do_linear_regression (times[i].v, times[i].n,
+            &m_num, &m_den, &external, &internal, &r_squared));
+
+    GST_LOG ("xbase %" G_GUINT64_FORMAT " ybase %" G_GUINT64_FORMAT " rate = %"
+        G_GUINT64_FORMAT " / %" G_GUINT64_FORMAT " = %.10f r_squared %f\n",
+        internal, external, m_num, m_den, (gdouble) (m_num) / (m_den),
+        r_squared);
+
+    /* Require high correlation */
+    fail_unless (r_squared >= 0.9);
+
+    fail_unless (internal == times[i].expect_internal,
+        "Regression params %d fail. internal %" G_GUINT64_FORMAT
+        " != expected %" G_GUINT64_FORMAT, i, internal,
+        times[i].expect_internal);
+    /* Rate must be within 1% tolerance */
+    expect_rate = ((gdouble) (times[i].expect_num) / times[i].expect_denom);
+    rate = ((gdouble) (m_num) / m_den);
+    fail_unless ((expect_rate - rate) >= -0.1 && (expect_rate - rate) <= 0.1,
+        "Regression params %d fail. Rate out of range. Expected %f, got %f",
+        i, expect_rate, rate);
+    fail_unless (external >= times[i].expect_external * 0.99 &&
+        external <= times[i].expect_external * 1.01,
+        "Regression params %d fail. external %" G_GUINT64_FORMAT
+        " != expected %" G_GUINT64_FORMAT, i, external,
+        times[i].expect_external);
+  }
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_clock_suite (void)
 {
@@ -117,6 +315,7 @@
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_set_master_refcount);
+  tcase_add_test (tc_chain, test_regression);
 
   return s;
 }
diff --git a/tests/check/gst/gstdatetime.c b/tests/check/gst/gstdatetime.c
index eb637c4..ae15dc5 100644
--- a/tests/check/gst/gstdatetime.c
+++ b/tests/check/gst/gstdatetime.c
@@ -385,6 +385,7 @@
 {
   GstDateTime *dt, *dt2;
   gchar *str, *str2;
+  GDateTime *gdt, *gdt2;
 
   dt = gst_date_time_new_now_utc ();
   fail_unless (gst_date_time_has_year (dt));
@@ -632,6 +633,75 @@
   fail_unless (!gst_date_time_has_day (dt));
   fail_unless (!gst_date_time_has_time (dt));
   gst_date_time_unref (dt);
+
+
+  /* only time provided - we assume today's date */
+  gdt = g_date_time_new_now_utc ();
+
+  dt = gst_date_time_new_from_iso8601_string ("15:50:33");
+  fail_unless (gst_date_time_get_year (dt) == g_date_time_get_year (gdt));
+  fail_unless (gst_date_time_get_month (dt) == g_date_time_get_month (gdt));
+  fail_unless (gst_date_time_get_day (dt) ==
+      g_date_time_get_day_of_month (gdt));
+  fail_unless (gst_date_time_get_hour (dt) == 15);
+  fail_unless (gst_date_time_get_minute (dt) == 50);
+  fail_unless (gst_date_time_get_second (dt) == 33);
+  gst_date_time_unref (dt);
+
+  dt = gst_date_time_new_from_iso8601_string ("15:50:33Z");
+  fail_unless (gst_date_time_get_year (dt) == g_date_time_get_year (gdt));
+  fail_unless (gst_date_time_get_month (dt) == g_date_time_get_month (gdt));
+  fail_unless (gst_date_time_get_day (dt) ==
+      g_date_time_get_day_of_month (gdt));
+  fail_unless (gst_date_time_get_hour (dt) == 15);
+  fail_unless (gst_date_time_get_minute (dt) == 50);
+  fail_unless (gst_date_time_get_second (dt) == 33);
+  gst_date_time_unref (dt);
+
+  dt = gst_date_time_new_from_iso8601_string ("15:50");
+  fail_unless (gst_date_time_get_year (dt) == g_date_time_get_year (gdt));
+  fail_unless (gst_date_time_get_month (dt) == g_date_time_get_month (gdt));
+  fail_unless (gst_date_time_get_day (dt) ==
+      g_date_time_get_day_of_month (gdt));
+  fail_unless (gst_date_time_get_hour (dt) == 15);
+  fail_unless (gst_date_time_get_minute (dt) == 50);
+  fail_unless (!gst_date_time_has_second (dt));
+  gst_date_time_unref (dt);
+
+  dt = gst_date_time_new_from_iso8601_string ("15:50Z");
+  fail_unless (gst_date_time_get_year (dt) == g_date_time_get_year (gdt));
+  fail_unless (gst_date_time_get_month (dt) == g_date_time_get_month (gdt));
+  fail_unless (gst_date_time_get_day (dt) ==
+      g_date_time_get_day_of_month (gdt));
+  fail_unless (gst_date_time_get_hour (dt) == 15);
+  fail_unless (gst_date_time_get_minute (dt) == 50);
+  fail_unless (!gst_date_time_has_second (dt));
+  gst_date_time_unref (dt);
+
+  gdt2 = g_date_time_add_minutes (gdt, -270);
+  g_date_time_unref (gdt);
+
+  dt = gst_date_time_new_from_iso8601_string ("15:50:33-0430");
+  fail_unless (gst_date_time_get_year (dt) == g_date_time_get_year (gdt2));
+  fail_unless (gst_date_time_get_month (dt) == g_date_time_get_month (gdt2));
+  fail_unless (gst_date_time_get_day (dt) ==
+      g_date_time_get_day_of_month (gdt2));
+  fail_unless (gst_date_time_get_hour (dt) == 15);
+  fail_unless (gst_date_time_get_minute (dt) == 50);
+  fail_unless (gst_date_time_get_second (dt) == 33);
+  gst_date_time_unref (dt);
+
+  dt = gst_date_time_new_from_iso8601_string ("15:50-0430");
+  fail_unless (gst_date_time_get_year (dt) == g_date_time_get_year (gdt2));
+  fail_unless (gst_date_time_get_month (dt) == g_date_time_get_month (gdt2));
+  fail_unless (gst_date_time_get_day (dt) ==
+      g_date_time_get_day_of_month (gdt2));
+  fail_unless (gst_date_time_get_hour (dt) == 15);
+  fail_unless (gst_date_time_get_minute (dt) == 50);
+  fail_unless (!gst_date_time_has_second (dt));
+  gst_date_time_unref (dt);
+
+  g_date_time_unref (gdt2);
 }
 
 GST_END_TEST;
diff --git a/tests/check/gst/gstelement.c b/tests/check/gst/gstelement.c
index faa95a5..8732611 100644
--- a/tests/check/gst/gstelement.c
+++ b/tests/check/gst/gstelement.c
@@ -50,40 +50,6 @@
 
 GST_END_TEST;
 
-
-GST_START_TEST (test_add_remove_readd_pad)
-{
-  GstElement *e;
-  GstPad *p;
-
-  /* getting an existing element class is cheating, but easier */
-  e = gst_element_factory_make ("fakesrc", "source");
-
-  /* create a new floating pad with refcount 1 */
-  p = gst_pad_new ("source", GST_PAD_SRC);
-
-  gst_object_ref (p);
-
-  /* simulate a real scenario where the pad is activated before added */
-  fail_unless (gst_pad_set_active (p, TRUE));
-  gst_element_add_pad (e, p);
-
-  /* now remove and deactivate it */
-  fail_unless (gst_pad_set_active (p, FALSE));
-  gst_element_remove_pad (e, p);
-
-  /* should be able to reuse the same pad */
-  fail_unless (gst_pad_set_active (p, TRUE));
-  fail_unless (gst_element_add_pad (e, p));
-
-  /* clean up our own reference */
-  gst_object_unref (p);
-  gst_object_unref (e);
-}
-
-GST_END_TEST;
-
-
 GST_START_TEST (test_add_pad_unref_element)
 {
   GstElement *e;
@@ -389,7 +355,6 @@
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_add_remove_pad);
-  tcase_add_test (tc_chain, test_add_remove_readd_pad);
   tcase_add_test (tc_chain, test_add_pad_unref_element);
   tcase_add_test (tc_chain, test_error_no_bus);
   tcase_add_test (tc_chain, test_link);
diff --git a/tests/check/gst/gstevent.c b/tests/check/gst/gstevent.c
index 7aae693..387f229 100644
--- a/tests/check/gst/gstevent.c
+++ b/tests/check/gst/gstevent.c
@@ -235,6 +235,43 @@
     gst_event_unref (event);
   }
 
+  /* Protection */
+  {
+    GstBuffer *data;
+    GstMemory *mem;
+    const gchar *parsed_origin;
+    const gchar *parsed_id;
+    GstBuffer *parsed_data;
+    const gchar clearkey_sys_id[] = "78f32170-d883-11e0-9572-0800200c9a66";
+    gsize offset;
+
+    data = gst_buffer_new ();
+    mem = gst_allocator_alloc (NULL, 40, NULL);
+    gst_buffer_insert_memory (data, -1, mem);
+    for (offset = 0; offset < 40; offset += 4) {
+      gst_buffer_fill (data, offset, "pssi", 4);
+    }
+    ASSERT_MINI_OBJECT_REFCOUNT (data, "data", 1);
+    event = gst_event_new_protection (clearkey_sys_id, data, "test");
+    fail_if (event == NULL);
+    ASSERT_MINI_OBJECT_REFCOUNT (data, "data", 2);
+    fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_PROTECTION);
+    fail_unless (GST_EVENT_IS_DOWNSTREAM (event));
+    fail_unless (GST_EVENT_IS_SERIALIZED (event));
+    gst_event_parse_protection (event, &parsed_id, &parsed_data,
+        &parsed_origin);
+    fail_if (parsed_id == NULL);
+    fail_unless (g_strcmp0 (clearkey_sys_id, parsed_id) == 0);
+    fail_if (parsed_data == NULL);
+    fail_if (parsed_data != data);
+    ASSERT_MINI_OBJECT_REFCOUNT (data, "data", 2);
+    fail_if (parsed_origin == NULL);
+    fail_unless (g_strcmp0 ("test", parsed_origin) == 0);
+    gst_event_unref (event);
+    ASSERT_MINI_OBJECT_REFCOUNT (data, "data", 1);
+    gst_buffer_unref (data);
+  }
+
   /* Custom event types */
   {
     structure = gst_structure_new_empty ("application/x-custom");
diff --git a/tests/check/gst/gstinfo.c b/tests/check/gst/gstinfo.c
index cd9b018..f808d8e 100644
--- a/tests/check/gst/gstinfo.c
+++ b/tests/check/gst/gstinfo.c
@@ -39,7 +39,7 @@
   dbg_msg = gst_debug_message_get (message);
   fail_unless (dbg_msg != NULL);
 
-  if (save_messages)
+  if (save_messages && g_str_equal (category->name, "check"))
     messages = g_list_append (messages, g_strdup (dbg_msg));
 
   /* g_print ("%s\n", dbg_msg); */
@@ -330,8 +330,79 @@
 }
 
 GST_END_TEST;
+
+GST_START_TEST (info_set_and_unset_single)
+{
+  GstDebugLevel orig = gst_debug_get_default_threshold ();
+  GstDebugLevel cat1, cat2;
+  GstDebugCategory *states;
+
+  GST_DEBUG_CATEGORY_GET (states, "GST_STATES");
+  fail_unless (states != NULL);
+
+  gst_debug_set_default_threshold (GST_LEVEL_WARNING);
+
+  gst_debug_set_threshold_for_name ("GST_STATES", GST_LEVEL_DEBUG);
+  cat1 = gst_debug_category_get_threshold (states);
+  gst_debug_unset_threshold_for_name ("GST_STATES");
+  cat2 = gst_debug_category_get_threshold (states);
+
+  gst_debug_set_default_threshold (orig);
+  fail_unless (cat1 = GST_LEVEL_DEBUG);
+  fail_unless (cat2 = GST_LEVEL_WARNING);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (info_set_and_unset_multiple)
+{
+  GstDebugLevel orig = gst_debug_get_default_threshold ();
+  GstDebugLevel cat1, cat2, cat3;
+  GstDebugCategory *states;
+  GstDebugCategory *caps;
+
+  GST_DEBUG_CATEGORY_GET (states, "GST_STATES");
+  GST_DEBUG_CATEGORY_GET (caps, "GST_CAPS");
+  fail_unless (states != NULL);
+  fail_unless (caps != NULL);
+
+  gst_debug_set_default_threshold (GST_LEVEL_WARNING);
+
+  gst_debug_set_threshold_for_name ("GST_STATES", GST_LEVEL_DEBUG);
+  gst_debug_set_threshold_for_name ("GST_CAPS", GST_LEVEL_DEBUG);
+  cat1 = gst_debug_category_get_threshold (states);
+  gst_debug_unset_threshold_for_name ("GST_STATES");
+  gst_debug_unset_threshold_for_name ("GST_CAPS");
+  cat2 = gst_debug_category_get_threshold (states);
+  cat3 = gst_debug_category_get_threshold (caps);
+
+  gst_debug_set_default_threshold (orig);
+
+  fail_unless (cat1 = GST_LEVEL_DEBUG);
+  fail_unless (cat2 = GST_LEVEL_WARNING);
+  fail_unless (cat3 = GST_LEVEL_WARNING);
+}
+
+GST_END_TEST;
 #endif
 
+GST_START_TEST (info_fourcc)
+{
+  gchar *res;
+  const gchar *cmp;
+
+  cmp = "abcd";
+  res = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (0x64636261));
+  fail_unless_equals_string (res, cmp);
+  g_free (res);
+
+  cmp = ".bcd";
+  res = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (0x646362a9));
+  fail_unless_equals_string (res, cmp);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_info_suite (void)
 {
@@ -341,6 +412,7 @@
   tcase_set_timeout (tc_chain, 30);
 
   suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, info_fourcc);
 #ifndef GST_DISABLE_GST_DEBUG
   tcase_add_test (tc_chain, info_segment_format_printf_extension);
   tcase_add_test (tc_chain, info_ptr_format_printf_extension);
@@ -349,6 +421,8 @@
   tcase_add_test (tc_chain, info_fixme);
   tcase_add_test (tc_chain, info_old_printf_extensions);
   tcase_add_test (tc_chain, info_register_same_debug_category_twice);
+  tcase_add_test (tc_chain, info_set_and_unset_single);
+  tcase_add_test (tc_chain, info_set_and_unset_multiple);
 #endif
 
   return s;
diff --git a/tests/check/gst/gstmemory.c b/tests/check/gst/gstmemory.c
index 486f6fe..079174d 100644
--- a/tests/check/gst/gstmemory.c
+++ b/tests/check/gst/gstmemory.c
@@ -89,6 +89,13 @@
   gst_memory_unref (sub);
 
   gst_memory_unmap (memory, &info);
+
+  /* test write map + share failure */
+  fail_unless (gst_memory_map (memory, &info, GST_MAP_WRITE));
+  sub = gst_memory_share (memory, 0, 4);
+  fail_unless (sub == NULL, "share with a write map succeeded");
+
+  gst_memory_unmap (memory, &info);
   gst_memory_unref (memory);
 }
 
@@ -508,6 +515,88 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_alloc_params)
+{
+  GstMemory *mem;
+  GstMapInfo info;
+  gsize size, offset, maxalloc;
+  GstAllocationParams params;
+  guint8 arr[10];
+
+  memset (arr, 0, 10);
+
+  gst_allocation_params_init (&params);
+  params.padding = 10;
+  params.prefix = 10;
+  params.flags = GST_MEMORY_FLAG_ZERO_PREFIXED | GST_MEMORY_FLAG_ZERO_PADDED;
+  mem = gst_allocator_alloc (NULL, 100, &params);
+
+  /*Checking size and offset */
+  size = gst_memory_get_sizes (mem, &offset, &maxalloc);
+  fail_unless (size == 100);
+  fail_unless (offset == 10);
+  fail_unless (maxalloc >= 120);
+
+  fail_unless (GST_MEMORY_FLAG_IS_SET (mem, GST_MEMORY_FLAG_ZERO_PREFIXED));
+  fail_unless (GST_MEMORY_FLAG_IS_SET (mem, GST_MEMORY_FLAG_ZERO_PADDED));
+
+  fail_unless (gst_memory_map (mem, &info, GST_MAP_READ));
+  fail_unless (info.data != NULL);
+  fail_unless (info.size == 100);
+
+  /*Checking prefix */
+  fail_unless (memcmp (info.data - 10, arr, 10) == 0);
+
+  /*Checking padding */
+  fail_unless (memcmp (info.data + 100, arr, 10) == 0);
+
+
+  gst_memory_unmap (mem, &info);
+  gst_memory_unref (mem);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_lock)
+{
+  GstMemory *mem;
+
+  mem = gst_allocator_alloc (NULL, 10, NULL);
+  fail_unless (mem != NULL);
+
+  /* test exclusivity */
+  fail_unless (gst_memory_lock (mem,
+          GST_LOCK_FLAG_WRITE | GST_LOCK_FLAG_EXCLUSIVE));
+  fail_if (gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE));
+  fail_unless (gst_memory_lock (mem, GST_LOCK_FLAG_WRITE));
+  gst_memory_unlock (mem, GST_LOCK_FLAG_WRITE | GST_LOCK_FLAG_EXCLUSIVE);
+  gst_memory_unlock (mem, GST_LOCK_FLAG_WRITE);
+
+  /* no lock here */
+
+  fail_unless (gst_memory_lock (mem,
+          GST_LOCK_FLAG_READ | GST_LOCK_FLAG_EXCLUSIVE));
+  fail_unless (gst_memory_lock (mem,
+          GST_LOCK_FLAG_READ | GST_LOCK_FLAG_EXCLUSIVE));
+  gst_memory_unlock (mem, GST_LOCK_FLAG_READ | GST_LOCK_FLAG_EXCLUSIVE);
+  gst_memory_unlock (mem, GST_LOCK_FLAG_READ | GST_LOCK_FLAG_EXCLUSIVE);
+
+  /* no lock here */
+
+  fail_unless (gst_memory_lock (mem,
+          GST_LOCK_FLAG_READWRITE | GST_LOCK_FLAG_EXCLUSIVE));
+  fail_unless (gst_memory_lock (mem, GST_LOCK_FLAG_READ));
+  fail_if (gst_memory_lock (mem, GST_LOCK_FLAG_READ | GST_LOCK_FLAG_EXCLUSIVE));
+  fail_if (gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE));
+  fail_unless (gst_memory_lock (mem, GST_LOCK_FLAG_WRITE));
+  gst_memory_unlock (mem, GST_LOCK_FLAG_WRITE);
+  gst_memory_unlock (mem, GST_LOCK_FLAG_READ);
+  gst_memory_unlock (mem, GST_LOCK_FLAG_READWRITE | GST_LOCK_FLAG_EXCLUSIVE);
+
+  gst_memory_unref (mem);
+}
+
+GST_END_TEST;
 
 static Suite *
 gst_memory_suite (void)
@@ -526,6 +615,8 @@
   tcase_add_test (tc_chain, test_map);
   tcase_add_test (tc_chain, test_map_nested);
   tcase_add_test (tc_chain, test_map_resize);
+  tcase_add_test (tc_chain, test_alloc_params);
+  tcase_add_test (tc_chain, test_lock);
 
   return s;
 }
diff --git a/tests/check/gst/gstmeta.c b/tests/check/gst/gstmeta.c
index 0cb034f..88205fc 100644
--- a/tests/check/gst/gstmeta.c
+++ b/tests/check/gst/gstmeta.c
@@ -117,6 +117,9 @@
       test->duration = -1;
     }
     test->clock_rate = tmeta->clock_rate;
+  } else {
+    /* return FALSE, if transform type is not supported */
+    return FALSE;
   }
   return TRUE;
 }
diff --git a/tests/check/gst/gstobject.c b/tests/check/gst/gstobject.c
index 96f6bcf..289750c 100644
--- a/tests/check/gst/gstobject.c
+++ b/tests/check/gst/gstobject.c
@@ -140,7 +140,7 @@
   g_usleep (100000);
 
   /* write our name repeatedly */
-  g_message ("THREAD %s: starting loop\n", thread_id);
+  g_message ("THREAD %s: starting loop", thread_id);
   while (THREAD_TEST_RUNNING ()) {
     gst_object_set_name (object, thread_id);
     /* a minimal sleep invokes a thread switch */
@@ -148,7 +148,7 @@
   }
 
   /* thread is done, so let's return */
-  g_message ("THREAD %s: set name\n", thread_id);
+  g_message ("THREAD %s: set name", thread_id);
   g_free (thread_id);
 
   return NULL;
@@ -162,7 +162,7 @@
   gint i;
   gboolean expected_failure = FALSE;
 
-  g_message ("\nTEST: set/get without lock\n");
+  g_message ("\nTEST: set/get without lock");
 
   object = g_object_new (gst_fake_object_get_type (), NULL);
   gst_object_set_name (object, "main");
@@ -175,7 +175,7 @@
     THREAD_SWITCH ();
     name = gst_object_get_name (object);
     if (strcmp (name, "main") != 0) {
-      g_message ("MAIN: expected failure during run %d\n", i);
+      g_message ("MAIN: expected failure during run %d", i);
       expected_failure = TRUE;
       g_free (name);
       break;
@@ -202,7 +202,7 @@
   gchar *name;
   gint i;
 
-  g_message ("\nTEST: set/get inside lock\n");
+  g_message ("\nTEST: set/get inside lock");
 
   object = g_object_new (gst_fake_object_get_type (), NULL);
   gst_object_set_name (object, "main");
@@ -248,14 +248,14 @@
   for (j = *i; j < num_objects; j += num_threads) {
     GstObject *o = GST_OBJECT (g_list_nth_data (object_list, j));
 
-    /* g_message ("THREAD %p: setting default name on object %d\n",
+    /* g_message ("THREAD %p: setting default name on object %d",
        g_thread_self (), j); */
     gst_object_set_name (o, NULL);
     THREAD_SWITCH ();
   }
 
   /* thread is done, so let's return */
-  g_message ("THREAD %p: set name\n", g_thread_self ());
+  g_message ("THREAD %p: set name", g_thread_self ());
   g_free (i);
 
   return NULL;
@@ -293,7 +293,7 @@
   gchar *name1, *name2;
   GList *l;
 
-  g_message ("\nTEST: uniqueness of default names\n");
+  g_message ("\nTEST: uniqueness of default names");
 
   for (i = 0; i < num_objects; ++i) {
     object = g_object_new (gst_fake_object_get_type (), NULL);
@@ -321,7 +321,7 @@
 
   name1 = gst_object_get_name (GST_OBJECT (object_list->data));
   for (l = object_list->next; l->next; l = l->next) {
-    g_message ("object with name %s\n", name1);
+    g_message ("object with name %s", name1);
     name2 = gst_object_get_name (GST_OBJECT (l->data));
     fail_if (strcmp (name1, name2) == 0, "Two objects with name %s", name2);
     g_free (name1);
@@ -355,10 +355,15 @@
   fail_if (parent != NULL, "GstFakeObject has parent");
   /* try to set a NULL parent, this should give a warning */
   ASSERT_CRITICAL (result = gst_object_set_parent (object1, NULL));
-  fail_if (result == TRUE, "GstFakeObject accepted NULL parent");
+  fail_if (result, "GstFakeObject accepted NULL parent");
   /* try to set itself as parent, we expect a warning here */
   ASSERT_CRITICAL (result = gst_object_set_parent (object1, object1));
-  fail_if (result == TRUE, "GstFakeObject accepted itself as parent");
+  fail_if (result, "GstFakeObject accepted itself as parent");
+
+  /* _has_parent always returns FALSE if there is no parent */
+  fail_if (gst_object_has_as_parent (object1, NULL));
+  fail_if (gst_object_has_as_parent (NULL, object1));
+  fail_if (gst_object_has_as_parent (object1, object1));
 
   /* should still be floating */
   fail_unless (g_object_is_floating (object1),
@@ -373,10 +378,12 @@
   fail_unless (g_object_is_floating (object1),
       "GstFakeObject instance is not floating");
 
+  result = gst_object_has_as_parent (object1, object2);
+  fail_if (result, "GstFakeObject has a parent");
+
   /* try to set other object as parent */
   result = gst_object_set_parent (object1, object2);
-  fail_if (result == FALSE,
-      "GstFakeObject could not accept other object as parent");
+  fail_unless (result, "GstFakeObject could not accept other object as parent");
 
   /* should not be floating anymore */
   fail_if (g_object_is_floating (object1),
@@ -386,12 +393,20 @@
       "GstFakeObject instance is not floating");
 
   /* check the parent */
-  parent = gst_object_get_parent (object1);
-  fail_if (parent != object2, "GstFakeObject has wrong parent");
-  gst_object_unref (parent);
+  fail_unless (gst_object_has_as_parent (object1, object2));
+
+  /* any other combination is invalid */
+  fail_if (gst_object_has_as_parent (object2, object1));
+  fail_if (gst_object_has_as_parent (object1, NULL));
+  fail_if (gst_object_has_as_parent (object2, NULL));
+  fail_if (gst_object_has_as_parent (NULL, object1));
+  fail_if (gst_object_has_as_parent (NULL, object2));
+  fail_if (gst_object_has_as_parent (object1, object1));
+  fail_if (gst_object_has_as_parent (object2, object2));
+
   /* try to set other object as parent again */
   result = gst_object_set_parent (object1, object2);
-  fail_if (result == TRUE, "GstFakeObject could set parent twice");
+  fail_if (result, "GstFakeObject could set parent twice");
 
   /* ref before unparenting */
   gst_object_ref (object1);
@@ -430,8 +445,7 @@
 
   /* try to set other object as parent */
   result = gst_object_set_parent (object1, object2);
-  fail_if (result == FALSE,
-      "GstFakeObject could not accept other object as parent");
+  fail_unless (result, "GstFakeObject could not accept other object as parent");
 
   /* clear parent of object */
   gst_object_unparent (object1);
@@ -442,7 +456,7 @@
 
 GST_END_TEST;
 
-GST_START_TEST (test_fake_object_has_ancestor)
+GST_START_TEST (test_fake_object_has_as_ancestor)
 {
   GstObject *object1, *object2, *object3, *object4;
   gboolean result;
@@ -461,24 +475,55 @@
 
   /* try to set other object as parent */
   result = gst_object_set_parent (object1, object3);
-  fail_if (result == FALSE,
-      "GstFakeObject could not accept other object as parent");
+  fail_unless (result, "GstFakeObject could not accept other object as parent");
   result = gst_object_set_parent (object2, object3);
-  fail_if (result == FALSE,
-      "GstFakeObject could not accept other object as parent");
+  fail_unless (result, "GstFakeObject could not accept other object as parent");
   result = gst_object_set_parent (object3, object4);
-  fail_if (result == FALSE,
-      "GstFakeObject could not accept other object as parent");
+  fail_unless (result, "GstFakeObject could not accept other object as parent");
 
-  fail_unless (gst_object_has_ancestor (object1, object1));
-  fail_if (gst_object_has_ancestor (object1, object2));
-  fail_unless (gst_object_has_ancestor (object1, object3));
-  fail_unless (gst_object_has_ancestor (object1, object4));
-  fail_if (gst_object_has_ancestor (object3, object1));
-  fail_if (gst_object_has_ancestor (object4, object1));
-  fail_unless (gst_object_has_ancestor (object3, object4));
-  fail_if (gst_object_has_ancestor (object4, object3));
-  fail_unless (gst_object_has_ancestor (object4, object4));
+  /* Hierarchy:
+   *  object4
+   *   `- object3
+   *       |- object2
+   *       `- object1
+   */
+
+  /* An object isn't its own parent, but it is its own ancestor */
+  fail_if (gst_object_has_as_parent (object1, object1));
+  fail_unless (gst_object_has_as_ancestor (object1, object1));
+
+  fail_if (gst_object_has_as_parent (object4, object4));
+  fail_unless (gst_object_has_as_ancestor (object4, object4));
+
+  /* direct parents */
+  fail_unless (gst_object_has_as_parent (object1, object3));
+  fail_unless (gst_object_has_as_ancestor (object1, object3));
+
+  fail_unless (gst_object_has_as_parent (object2, object3));
+  fail_unless (gst_object_has_as_ancestor (object2, object3));
+
+  fail_unless (gst_object_has_as_parent (object3, object4));
+  fail_unless (gst_object_has_as_ancestor (object3, object4));
+
+  /* grandparents */
+  fail_if (gst_object_has_as_parent (object1, object4));
+  fail_unless (gst_object_has_as_ancestor (object1, object4));
+
+  fail_if (gst_object_has_as_parent (object2, object4));
+  fail_unless (gst_object_has_as_ancestor (object2, object4));
+
+  /* not ancestors */
+  fail_if (gst_object_has_as_parent (object1, object2));
+  fail_if (gst_object_has_as_ancestor (object1, object2));
+
+  fail_if (gst_object_has_as_parent (object3, object1));
+  fail_if (gst_object_has_as_ancestor (object3, object1));
+
+  fail_if (gst_object_has_as_parent (object4, object1));
+  fail_if (gst_object_has_as_ancestor (object4, object1));
+
+  fail_if (gst_object_has_as_parent (object4, object3));
+  fail_if (gst_object_has_as_ancestor (object4, object3));
 
   /* unparent everything */
   gst_object_unparent (object3);
@@ -513,7 +558,7 @@
   tcase_add_test (tc_chain, test_fake_object_parentage);
   tcase_add_test (tc_chain, test_fake_object_parentage_dispose);
 
-  tcase_add_test (tc_chain, test_fake_object_has_ancestor);
+  tcase_add_test (tc_chain, test_fake_object_has_as_ancestor);
   //tcase_add_checked_fixture (tc_chain, setup, teardown);
 
   return s;
diff --git a/tests/check/gst/gstpad.c b/tests/check/gst/gstpad.c
index cf4586d..f74318f 100644
--- a/tests/check/gst/gstpad.c
+++ b/tests/check/gst/gstpad.c
@@ -314,6 +314,105 @@
 
 GST_END_TEST;
 
+static gboolean
+check_if_caps_is_accepted (GstPad * sink, const gchar * str)
+{
+  GstCaps *caps;
+  gboolean ret;
+
+  caps = gst_caps_from_string (str);
+  ASSERT_CAPS_REFCOUNT (caps, "caps", 1);
+  ret = gst_pad_query_accept_caps (sink, caps);
+  gst_caps_unref (caps);
+
+  return ret;
+}
+
+static gboolean
+sink_query_caps (GstPad * pad, GstObject * object, GstQuery * q)
+{
+  gboolean ret;
+  GstCaps *caps;
+
+  switch (GST_QUERY_TYPE (q)) {
+    case GST_QUERY_CAPS:
+      ret = TRUE;
+      caps =
+          gst_caps_from_string ("foo/bar, dummy=(int)1,"
+          " query-only-field=(int)1");
+      gst_query_set_caps_result (q, caps);
+      gst_caps_unref (caps);
+    default:
+      ret = gst_pad_query_default (pad, object, q);
+      break;
+  }
+
+  return ret;
+}
+
+/* Tests whether acceptcaps default handler works properly
+   with all 4 possible flag combinations */
+GST_START_TEST (test_default_accept_caps)
+{
+  GstCaps *caps;
+  GstPadTemplate *sink_template;
+  GstPad *sink;
+
+  caps = gst_caps_from_string ("foo/bar, dummy=(int){1, 2}");
+  sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
+      GST_PAD_ALWAYS, caps);
+  gst_caps_unref (caps);
+
+  sink = gst_pad_new_from_template (sink_template, "sink");
+  fail_if (sink == NULL);
+  gst_pad_set_query_function (sink, sink_query_caps);
+
+  gst_object_unref (sink_template);
+
+  gst_pad_set_active (sink, TRUE);
+
+  /* 1. Check with caps query, subset check */
+  GST_PAD_UNSET_ACCEPT_INTERSECT (sink);
+  GST_PAD_UNSET_ACCEPT_TEMPLATE (sink);
+  fail_unless (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)1"));
+  fail_if (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)3"));
+  fail_unless (check_if_caps_is_accepted (sink,
+          "foo/bar, dummy=(int)1, query-only-field=(int)1"));
+  fail_if (check_if_caps_is_accepted (sink, "foo/bar, extra-field=(int)1"));
+
+  /* 2. Check with caps query, intersect check */
+  GST_PAD_SET_ACCEPT_INTERSECT (sink);
+  GST_PAD_UNSET_ACCEPT_TEMPLATE (sink);
+  fail_unless (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)1"));
+  fail_if (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)3"));
+  fail_unless (check_if_caps_is_accepted (sink,
+          "foo/bar, dummy=(int)1, query-only-field=(int)1"));
+  fail_unless (check_if_caps_is_accepted (sink, "foo/bar, extra-field=(int)1"));
+
+  /* 3. Check with template caps, subset check */
+  GST_PAD_UNSET_ACCEPT_INTERSECT (sink);
+  GST_PAD_SET_ACCEPT_TEMPLATE (sink);
+  fail_unless (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)1"));
+  fail_if (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)3"));
+  fail_unless (check_if_caps_is_accepted (sink,
+          "foo/bar, dummy=(int)1, query-only-field=(int)1"));
+  fail_if (check_if_caps_is_accepted (sink, "foo/bar, extra-field=(int)1"));
+
+  /* 3. Check with template caps, intersect check */
+  GST_PAD_SET_ACCEPT_INTERSECT (sink);
+  GST_PAD_SET_ACCEPT_TEMPLATE (sink);
+  fail_unless (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)1"));
+  fail_if (check_if_caps_is_accepted (sink, "foo/bar, dummy=(int)3"));
+  fail_unless (check_if_caps_is_accepted (sink,
+          "foo/bar, dummy=(int)1, query-only-field=(int)1"));
+  fail_unless (check_if_caps_is_accepted (sink, "foo/bar, extra-field=(int)1"));
+
+  ASSERT_OBJECT_REFCOUNT (sink, "sink", 1);
+  gst_object_unref (sink);
+}
+
+GST_END_TEST;
+
 /* Same as test_sticky_caps_unlinked except that the source pad
  * has a template of ANY and we will attempt to push
  * incompatible caps */
@@ -496,20 +595,111 @@
 static GstPadProbeReturn
 _probe_handler (GstPad * pad, GstPadProbeInfo * info, gpointer userdata)
 {
-  gint ret = GPOINTER_TO_INT (userdata);
+  GstPadProbeReturn ret = (GstPadProbeReturn) GPOINTER_TO_INT (userdata);
 
-  if (ret == 1)
-    return GST_PAD_PROBE_OK;
-
-  return GST_PAD_PROBE_DROP;
+  /* If we are handling the data, we unref it */
+  if (ret == GST_PAD_PROBE_HANDLED
+      && !(GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_QUERY_BOTH)) {
+    GST_DEBUG_OBJECT (pad, "Unreffing data");
+    gst_mini_object_unref (info->data);
+  }
+  return ret;
 }
 
+static GstPadProbeReturn
+_handled_probe_handler (GstPad * pad, GstPadProbeInfo * info, gpointer userdata)
+{
+  GstFlowReturn customflow = (GstFlowReturn) GPOINTER_TO_INT (userdata);
+
+  /* We are handling the data, we unref it */
+  if (!(GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_QUERY_BOTH))
+    gst_mini_object_unref (info->data);
+  GST_PAD_PROBE_INFO_FLOW_RETURN (info) = customflow;
+
+  return GST_PAD_PROBE_HANDLED;
+}
+
+
+
+GST_START_TEST (test_events_query_unlinked)
+{
+  GstPad *src;
+  GstCaps *caps;
+  gulong id;
+  GstQuery *query;
+
+  src = gst_pad_new ("src", GST_PAD_SRC);
+  fail_if (src == NULL);
+  caps = gst_pad_get_allowed_caps (src);
+  fail_unless (caps == NULL);
+
+  caps = gst_caps_from_string ("foo/bar");
+
+  gst_pad_set_active (src, TRUE);
+  fail_unless (gst_pad_push_event (src,
+          gst_event_new_stream_start ("test")) == TRUE);
+  gst_pad_set_caps (src, caps);
+  ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
+  fail_unless (gst_pad_push_event (src,
+          gst_event_new_segment (&dummy_segment)) == TRUE);
+  ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
+
+  /* Doing a query on an unlinked pad will return FALSE */
+  query = gst_query_new_duration (GST_FORMAT_TIME);
+  fail_unless (gst_pad_peer_query (src, query) == FALSE);
+  ASSERT_MINI_OBJECT_REFCOUNT (query, "query", 1);
+  gst_query_unref (query);
+
+  /* Add a probe that returns _DROP will make the event push return TRUE
+   * even if not linked */
+  GST_DEBUG ("event/query DROP");
+  id = gst_pad_add_probe (src,
+      GST_PAD_PROBE_TYPE_EVENT_BOTH | GST_PAD_PROBE_TYPE_QUERY_BOTH,
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_DROP), NULL);
+  fail_unless (gst_pad_push_event (src,
+          gst_event_new_segment (&dummy_segment)) == TRUE);
+  /* Queries should stil fail */
+  query = gst_query_new_duration (GST_FORMAT_TIME);
+  fail_unless (gst_pad_peer_query (src, query) == FALSE);
+  ASSERT_MINI_OBJECT_REFCOUNT (query, "query", 1);
+  gst_query_unref (query);
+  gst_pad_remove_probe (src, id);
+
+  /* Add a probe that returns _HANDLED will make the event push return TRUE
+   * even if not linked */
+  GST_DEBUG ("event/query HANDLED");
+  id = gst_pad_add_probe (src,
+      GST_PAD_PROBE_TYPE_EVENT_BOTH | GST_PAD_PROBE_TYPE_QUERY_BOTH,
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_HANDLED), NULL);
+  fail_unless (gst_pad_push_event (src,
+          gst_event_new_segment (&dummy_segment)) == TRUE);
+
+  /* Queries will succeed */
+  query = gst_query_new_duration (GST_FORMAT_TIME);
+  fail_unless (gst_pad_peer_query (src, query) == TRUE);
+  ASSERT_MINI_OBJECT_REFCOUNT (query, "query", 1);
+  gst_query_unref (query);
+  gst_pad_remove_probe (src, id);
+
+  /* cleanup */
+  ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
+  ASSERT_OBJECT_REFCOUNT (src, "src", 1);
+
+  gst_object_unref (src);
+
+  ASSERT_CAPS_REFCOUNT (caps, "caps", 1);
+  gst_caps_unref (caps);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_push_unlinked)
 {
   GstPad *src;
   GstCaps *caps;
   GstBuffer *buffer;
   gulong id;
+  GstFlowReturn fl;
 
   src = gst_pad_new ("src", GST_PAD_SRC);
   fail_if (src == NULL);
@@ -547,7 +737,19 @@
    * to chain */
   GST_DEBUG ("push buffer drop");
   id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
-      _probe_handler, GINT_TO_POINTER (0), NULL);
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_DROP), NULL);
+  buffer = gst_buffer_new ();
+  gst_buffer_ref (buffer);
+  fail_unless (gst_pad_push (src, buffer) == GST_FLOW_OK);
+  ASSERT_MINI_OBJECT_REFCOUNT (buffer, "buffer", 1);
+  gst_buffer_unref (buffer);
+  gst_pad_remove_probe (src, id);
+
+  /* adding a probe that returns _HANDLED will drop the buffer without trying
+   * to chain */
+  GST_DEBUG ("push buffer handled");
+  id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_HANDLED), NULL);
   buffer = gst_buffer_new ();
   gst_buffer_ref (buffer);
   fail_unless (gst_pad_push (src, buffer) == GST_FLOW_OK);
@@ -559,7 +761,7 @@
    * and hence drop because pad is unlinked */
   GST_DEBUG ("push buffer ok");
   id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
-      _probe_handler, GINT_TO_POINTER (1), NULL);
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_OK), NULL);
   buffer = gst_buffer_new ();
   gst_buffer_ref (buffer);
   fail_unless (gst_pad_push (src, buffer) == GST_FLOW_NOT_LINKED);
@@ -567,6 +769,20 @@
   gst_buffer_unref (buffer);
   gst_pad_remove_probe (src, id);
 
+  GST_DEBUG ("push buffer handled and custom return");
+  for (fl = GST_FLOW_NOT_SUPPORTED; fl <= GST_FLOW_OK; fl += 1) {
+    GST_DEBUG ("Testing with %s", gst_flow_get_name (fl));
+    id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
+        _handled_probe_handler, GINT_TO_POINTER (fl), NULL);
+    buffer = gst_buffer_new ();
+    gst_buffer_ref (buffer);
+    fail_unless (gst_pad_push (src, buffer) == fl);
+    ASSERT_MINI_OBJECT_REFCOUNT (buffer, "buffer", 1);
+    gst_buffer_unref (buffer);
+    gst_pad_remove_probe (src, id);
+
+  }
+
 
   /* cleanup */
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
@@ -633,10 +849,10 @@
   g_list_free (buffers);
   buffers = NULL;
 
-  /* adding a probe that returns FALSE will drop the buffer without trying
+  /* adding a probe that returns _DROP will drop the buffer without trying
    * to chain */
   id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
-      _probe_handler, GINT_TO_POINTER (0), NULL);
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_DROP), NULL);
   buffer = gst_buffer_new ();
   gst_buffer_ref (buffer);
   fail_unless (gst_pad_push (src, buffer) == GST_FLOW_OK);
@@ -645,9 +861,9 @@
   gst_pad_remove_probe (src, id);
   fail_unless_equals_int (g_list_length (buffers), 0);
 
-  /* adding a probe that returns TRUE will still chain the buffer */
+  /* adding a probe that returns _OK will still chain the buffer */
   id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
-      _probe_handler, GINT_TO_POINTER (1), NULL);
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_OK), NULL);
   buffer = gst_buffer_new ();
   gst_buffer_ref (buffer);
   fail_unless (gst_pad_push (src, buffer) == GST_FLOW_OK);
@@ -662,6 +878,20 @@
   g_list_free (buffers);
   buffers = NULL;
 
+  /* adding a probe that returns _HANDLED will not chain the buffer */
+  id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER,
+      _probe_handler, GINT_TO_POINTER (GST_PAD_PROBE_HANDLED), NULL);
+  buffer = gst_buffer_new ();
+  gst_buffer_ref (buffer);
+  fail_unless (gst_pad_push (src, buffer) == GST_FLOW_OK);
+  gst_pad_remove_probe (src, id);
+
+  ASSERT_MINI_OBJECT_REFCOUNT (buffer, "buffer", 1);
+  gst_buffer_unref (buffer);
+  fail_unless_equals_int (g_list_length (buffers), 0);
+  g_list_free (buffers);
+  buffers = NULL;
+
   /* teardown */
   gst_pad_unlink (src, sink);
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
@@ -733,10 +963,10 @@
   gst_pad_set_caps (src, caps);
   fail_unless (gst_pad_push_event (src,
           gst_event_new_segment (&dummy_segment)) == TRUE);
-  /* adding a probe that returns FALSE will drop the buffer without trying
+  /* adding a probe that returns _DROP will drop the buffer without trying
    * to chain */
   id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER, _probe_handler,
-      GINT_TO_POINTER (0), NULL);
+      GINT_TO_POINTER (GST_PAD_PROBE_DROP), NULL);
   buffer = gst_buffer_new ();
   gst_buffer_ref (buffer);
   fail_unless (gst_pad_push (src, buffer) == GST_FLOW_FLUSHING);
@@ -745,10 +975,10 @@
   gst_buffer_unref (buffer);
   gst_pad_remove_probe (src, id);
 
-  /* adding a probe that returns TRUE will still chain the buffer,
+  /* adding a probe that returns _OK will still chain the buffer,
    * and hence drop because pad is flushing */
   id = gst_pad_add_probe (src, GST_PAD_PROBE_TYPE_BUFFER, _probe_handler,
-      GINT_TO_POINTER (1), NULL);
+      GINT_TO_POINTER (GST_PAD_PROBE_OK), NULL);
   buffer = gst_buffer_new ();
   gst_buffer_ref (buffer);
   fail_unless (gst_pad_push (src, buffer) == GST_FLOW_FLUSHING);
@@ -791,7 +1021,9 @@
 
   fail_unless (gst_buffer_map (buf, &info, GST_MAP_READ));
   res = memcmp (info.data, str, size) == 0;
-  GST_DEBUG ("%s <-> %s: %d", (gchar *) info.data, str, res);
+  GST_MEMDUMP ("buffer  data", info.data, size);
+  GST_MEMDUMP ("compare data", (guint8 *) str, size);
+  GST_DEBUG ("buffers match: %s", res ? "yes" : "no");
   gst_buffer_unmap (buf, &info);
 
   return res;
@@ -1144,6 +1376,89 @@
 
 GST_END_TEST;
 
+static gboolean idle_probe_running;
+
+static GstFlowReturn
+idletest_sink_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+{
+  if (idle_probe_running)
+    fail ("Should not be reached");
+  gst_buffer_unref (buf);
+  return GST_FLOW_OK;
+}
+
+static GstPadProbeReturn
+idle_probe_wait (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  /* it is ok to have a probe called multiple times but it is not
+   * acceptable in our scenario */
+  fail_if (idle_probe_running);
+
+  idle_probe_running = TRUE;
+  while (idle_probe_running) {
+    g_usleep (10000);
+  }
+
+  return GST_PAD_PROBE_REMOVE;
+}
+
+static gpointer
+add_idle_probe_async (GstPad * pad)
+{
+  gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_IDLE, idle_probe_wait, NULL, NULL);
+
+  return NULL;
+}
+
+GST_START_TEST (test_pad_blocking_with_probe_type_idle)
+{
+  GstPad *srcpad, *sinkpad;
+  GThread *idle_thread, *thread;
+
+  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_chain_function (sinkpad, idletest_sink_pad_chain);
+
+  fail_unless (gst_pad_link (srcpad, sinkpad) == GST_PAD_LINK_OK);
+
+  gst_pad_set_active (sinkpad, TRUE);
+  gst_pad_set_active (srcpad, TRUE);
+
+  fail_unless (gst_pad_push_event (srcpad,
+          gst_event_new_stream_start ("test")) == TRUE);
+  fail_unless (gst_pad_push_event (srcpad,
+          gst_event_new_segment (&dummy_segment)) == TRUE);
+
+  idle_probe_running = FALSE;
+  idle_thread =
+      g_thread_try_new ("gst-check", (GThreadFunc) add_idle_probe_async, srcpad,
+      NULL);
+
+  /* wait for the idle function to signal it is being called */
+  while (!idle_probe_running) {
+    g_usleep (10000);
+  }
+
+  thread = g_thread_try_new ("gst-check", (GThreadFunc) push_buffer_async,
+      srcpad, NULL);
+
+  while (!gst_pad_is_blocking (srcpad)) {
+    g_usleep (10000);
+  }
+
+  idle_probe_running = FALSE;
+
+  g_thread_join (idle_thread);
+  g_thread_join (thread);
+  gst_object_unref (srcpad);
+  gst_object_unref (sinkpad);
+}
+
+GST_END_TEST;
+
 static gboolean pad_probe_remove_notifiy_called = FALSE;
 
 static GstPadProbeReturn
@@ -1191,6 +1506,83 @@
 
 GST_END_TEST;
 
+typedef struct
+{
+  gulong probe_id;
+  GstPad *probe_pad;
+  GThread *thread;
+} BlockReplaceProbeHelper;
+
+static gpointer
+unblock_probe_thread (gpointer user_data)
+{
+  BlockReplaceProbeHelper *helper = user_data;
+
+  GST_INFO_OBJECT (helper->probe_pad, "removing probe to unblock pad");
+  gst_pad_remove_probe (helper->probe_pad, helper->probe_id);
+  return NULL;
+}
+
+static GstPadProbeReturn
+block_and_replace_buffer_probe_cb (GstPad * pad, GstPadProbeInfo * info,
+    gpointer user_data)
+{
+  BlockReplaceProbeHelper *helper = user_data;
+
+  GST_INFO_OBJECT (pad, "about to block pad, replacing buffer");
+
+  /* we want to block, but also drop this buffer */
+  gst_buffer_unref (GST_BUFFER (info->data));
+  info->data = NULL;
+
+  helper->thread =
+      g_thread_new ("gst-pad-test-thread", unblock_probe_thread, helper);
+
+  return GST_PAD_PROBE_OK;
+}
+
+GST_START_TEST (test_pad_probe_block_and_drop_buffer)
+{
+  BlockReplaceProbeHelper helper;
+  GstFlowReturn flow;
+  GstPad *src, *sink;
+
+  src = gst_pad_new ("src", GST_PAD_SRC);
+  gst_pad_set_active (src, TRUE);
+  sink = gst_pad_new ("sink", GST_PAD_SINK);
+  gst_pad_set_chain_function (sink, gst_check_chain_func);
+  gst_pad_set_active (sink, TRUE);
+
+  fail_unless (gst_pad_push_event (src,
+          gst_event_new_stream_start ("test")) == TRUE);
+  fail_unless (gst_pad_push_event (src,
+          gst_event_new_segment (&dummy_segment)) == TRUE);
+
+  fail_unless_equals_int (gst_pad_link (src, sink), GST_PAD_LINK_OK);
+
+  helper.probe_id = gst_pad_add_probe (src,
+      GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_BUFFER,
+      block_and_replace_buffer_probe_cb, &helper, NULL);
+  helper.probe_pad = src;
+
+  /* push a buffer so the events are propagated downstream */
+  flow = gst_pad_push (src, gst_buffer_new ());
+
+  g_thread_join (helper.thread);
+
+  fail_unless_equals_int (flow, GST_FLOW_OK);
+
+  /* no buffer should have made it through to the sink pad, and especially
+   * not a NULL pointer buffer */
+  fail_if (buffers && buffers->data == NULL);
+  fail_unless (buffers == NULL);
+
+  gst_object_unref (src);
+  gst_object_unref (sink);
+}
+
+GST_END_TEST;
+
 static GstPadProbeReturn
 probe_block_a (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
 {
@@ -1976,6 +2368,82 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_flush_stop_inactive)
+{
+  GstPad *sinkpad, *srcpad;
+
+  sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+  fail_unless (sinkpad != NULL);
+
+  /* new pads are inactive and flushing */
+  fail_if (GST_PAD_IS_ACTIVE (sinkpad));
+  fail_unless (GST_PAD_IS_FLUSHING (sinkpad));
+
+  /* this should fail, pad is inactive */
+  fail_if (gst_pad_send_event (sinkpad, gst_event_new_flush_stop (FALSE)));
+
+  /* nothing should have changed */
+  fail_if (GST_PAD_IS_ACTIVE (sinkpad));
+  fail_unless (GST_PAD_IS_FLUSHING (sinkpad));
+
+  gst_pad_set_active (sinkpad, TRUE);
+
+  /* pad is now active an not flushing anymore */
+  fail_unless (GST_PAD_IS_ACTIVE (sinkpad));
+  fail_if (GST_PAD_IS_FLUSHING (sinkpad));
+
+  /* do flush, does not deactivate the pad */
+  fail_unless (gst_pad_send_event (sinkpad, gst_event_new_flush_start ()));
+  fail_unless (GST_PAD_IS_ACTIVE (sinkpad));
+  fail_unless (GST_PAD_IS_FLUSHING (sinkpad));
+
+  fail_unless (gst_pad_send_event (sinkpad, gst_event_new_flush_stop (FALSE)));
+  fail_unless (GST_PAD_IS_ACTIVE (sinkpad));
+  fail_if (GST_PAD_IS_FLUSHING (sinkpad));
+
+  gst_pad_set_active (sinkpad, FALSE);
+  fail_if (GST_PAD_IS_ACTIVE (sinkpad));
+  fail_unless (GST_PAD_IS_FLUSHING (sinkpad));
+
+  gst_object_unref (sinkpad);
+
+  /* we should not be able to push on an inactive srcpad */
+  srcpad = gst_pad_new ("src", GST_PAD_SRC);
+  fail_unless (srcpad != NULL);
+
+  fail_if (GST_PAD_IS_ACTIVE (srcpad));
+  fail_unless (GST_PAD_IS_FLUSHING (srcpad));
+
+  fail_if (gst_pad_push_event (srcpad, gst_event_new_flush_stop (FALSE)));
+
+  /* should still be inactive and flushing */
+  fail_if (GST_PAD_IS_ACTIVE (srcpad));
+  fail_unless (GST_PAD_IS_FLUSHING (srcpad));
+
+  gst_pad_set_active (srcpad, TRUE);
+
+  /* pad is now active an not flushing anymore */
+  fail_unless (GST_PAD_IS_ACTIVE (srcpad));
+  fail_if (GST_PAD_IS_FLUSHING (srcpad));
+
+  /* do flush, does not deactivate the pad */
+  fail_if (gst_pad_push_event (srcpad, gst_event_new_flush_start ()));
+  fail_unless (GST_PAD_IS_ACTIVE (srcpad));
+  fail_unless (GST_PAD_IS_FLUSHING (srcpad));
+
+  fail_if (gst_pad_push_event (srcpad, gst_event_new_flush_stop (FALSE)));
+  fail_unless (GST_PAD_IS_ACTIVE (srcpad));
+  fail_if (GST_PAD_IS_FLUSHING (srcpad));
+
+  gst_pad_set_active (srcpad, FALSE);
+  fail_if (GST_PAD_IS_ACTIVE (srcpad));
+  fail_unless (GST_PAD_IS_FLUSHING (srcpad));
+
+  gst_object_unref (srcpad);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_pad_suite (void)
 {
@@ -1994,6 +2462,7 @@
   tcase_add_test (tc_chain, test_sticky_caps_unlinked);
   tcase_add_test (tc_chain, test_sticky_caps_unlinked_incompatible);
   tcase_add_test (tc_chain, test_sticky_caps_flushing);
+  tcase_add_test (tc_chain, test_default_accept_caps);
   tcase_add_test (tc_chain, test_link_unlink_threaded);
   tcase_add_test (tc_chain, test_name_is_valid);
   tcase_add_test (tc_chain, test_push_unlinked);
@@ -2007,9 +2476,12 @@
   tcase_add_test (tc_chain, test_block_async);
   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_remove);
   tcase_add_test (tc_chain, test_pad_probe_block_add_remove);
+  tcase_add_test (tc_chain, test_pad_probe_block_and_drop_buffer);
   tcase_add_test (tc_chain, test_pad_probe_flush_events);
+  tcase_add_test (tc_chain, test_events_query_unlinked);
   tcase_add_test (tc_chain, test_queue_src_caps_notify_linked);
   tcase_add_test (tc_chain, test_queue_src_caps_notify_not_linked);
 #if 0
@@ -2021,6 +2493,7 @@
   tcase_add_test (tc_chain, test_sticky_events);
   tcase_add_test (tc_chain, test_last_flow_return_push);
   tcase_add_test (tc_chain, test_last_flow_return_pull);
+  tcase_add_test (tc_chain, test_flush_stop_inactive);
 
   return s;
 }
diff --git a/tests/check/gst/gstpipeline.c b/tests/check/gst/gstpipeline.c
index e1b4670..d186bc7 100644
--- a/tests/check/gst/gstpipeline.c
+++ b/tests/check/gst/gstpipeline.c
@@ -574,6 +574,89 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_pipeline_reset_start_time)
+{
+  GstElement *pipeline, *fakesrc, *fakesink;
+  GstState state;
+  GstClock *clock;
+  GstClockID id;
+  gint64 position;
+
+  pipeline = gst_element_factory_make ("pipeline", "pipeline");
+  fakesrc = gst_element_factory_make ("fakesrc", "fakesrc");
+  fakesink = gst_element_factory_make ("fakesink", "fakesink");
+
+  g_object_set (fakesrc, "do-timestamp", TRUE, "format", GST_FORMAT_TIME, NULL);
+
+  fail_unless (pipeline && fakesrc && fakesink);
+
+  gst_bin_add_many (GST_BIN (pipeline), fakesrc, fakesink, NULL);
+  gst_element_link (fakesrc, fakesink);
+
+  fail_unless (gst_element_get_start_time (fakesink) == 0);
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_PLAYING),
+      GST_STATE_CHANGE_ASYNC);
+  fail_unless_equals_int (gst_element_get_state (pipeline, &state, NULL, -1),
+      GST_STATE_CHANGE_SUCCESS);
+  fail_unless_equals_int (state, GST_STATE_PLAYING);
+
+  /* We just started and never paused, start time must be 0 */
+  fail_unless (gst_element_get_start_time (fakesink) == 0);
+
+  clock = gst_pipeline_get_clock (GST_PIPELINE (pipeline));
+  fail_unless (clock != NULL);
+  id = gst_clock_new_single_shot_id (clock,
+      gst_element_get_base_time (pipeline) + 55 * GST_MSECOND);
+  gst_clock_id_wait (id, NULL);
+  gst_clock_id_unref (id);
+  gst_object_unref (clock);
+
+  /* We waited 50ms, so the position should be now >= 50ms */
+  fail_unless (gst_element_query_position (fakesink, GST_FORMAT_TIME,
+          &position));
+  fail_unless (position >= 50 * GST_MSECOND);
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_PAUSED),
+      GST_STATE_CHANGE_ASYNC);
+  fail_unless_equals_int (gst_element_get_state (pipeline, &state, NULL, -1),
+      GST_STATE_CHANGE_SUCCESS);
+  fail_unless_equals_int (state, GST_STATE_PAUSED);
+
+  /* And now after pausing the start time should be bigger than the last
+   * position */
+  fail_unless (gst_element_get_start_time (fakesink) >= 50 * GST_MSECOND);
+  fail_unless (gst_element_query_position (fakesink, GST_FORMAT_TIME,
+          &position));
+  fail_unless (position >= 50 * GST_MSECOND);
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_READY),
+      GST_STATE_CHANGE_SUCCESS);
+
+  /* When going back to ready the start time should be reset everywhere */
+  fail_unless (gst_element_get_start_time (fakesink) == 0);
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_PAUSED),
+      GST_STATE_CHANGE_ASYNC);
+  fail_unless_equals_int (gst_element_get_state (pipeline, &state, NULL, -1),
+      GST_STATE_CHANGE_SUCCESS);
+  fail_unless_equals_int (state, GST_STATE_PAUSED);
+
+  /* And the start time should still be set to 0 when we go to paused for the
+   * first time. Same goes for the position */
+  fail_unless (gst_element_query_position (fakesink, GST_FORMAT_TIME,
+          &position));
+  fail_unless (position < 50 * GST_MSECOND);
+
+  fail_unless (gst_element_get_start_time (fakesink) == 0);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+
+  gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_pipeline_suite (void)
 {
@@ -591,6 +674,7 @@
   tcase_add_test (tc_chain, test_base_time);
   tcase_add_test (tc_chain, test_concurrent_create);
   tcase_add_test (tc_chain, test_pipeline_in_pipeline);
+  tcase_add_test (tc_chain, test_pipeline_reset_start_time);
 
   return s;
 }
diff --git a/tests/check/gst/gstprintf.c b/tests/check/gst/gstprintf.c
new file mode 100644
index 0000000..7fca649
--- /dev/null
+++ b/tests/check/gst/gstprintf.c
@@ -0,0 +1,148 @@
+/* GStreamer unit tests for the custom printf
+ * Copyright (C) 2015 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/check/gstcheck.h>
+
+#include <string.h>
+
+#ifdef GST_DISABLE_GST_DEBUG
+#error "Something wrong with the build system setup"
+#endif
+
+#include "gst/printf/printf.h"
+/*
+#include "gst/printf/printf-extension.h"
+*/
+
+static char *
+test_printf (const char *format, ...)
+{
+  va_list varargs;
+  char *str = NULL;
+  int len;
+
+  va_start (varargs, format);
+  len = __gst_vasprintf (&str, format, varargs);
+  va_end (varargs);
+
+  if (len <= 0)
+    return NULL;
+
+  GST_INFO ("[%s]", str);
+  return str;
+}
+
+GST_START_TEST (printf_I32_I64)
+{
+  guint64 v64 = 0xf1e2d3c4b5a6978f;
+  guint32 v32 = 0xf1e2d3cf;
+  guint vu = 0xf1e2d3cf;
+  gchar *str;
+
+  /* standard int/uint */
+  str = test_printf ("x = %x", vu);
+  fail_unless_equals_string (str, "x = f1e2d3cf");
+  g_free (str);
+  str = test_printf ("u = %u", vu);
+  fail_unless_equals_string (str, "u = 4058174415");
+  g_free (str);
+  str = test_printf ("d = %d", vu);
+  fail_unless_equals_string (str, "d = -236792881");
+  g_free (str);
+
+  /* 32 bit GLib */
+  str = test_printf ("32-bit x value = %" G_GINT32_MODIFIER "x", v32);
+  fail_unless_equals_string (str, "32-bit x value = f1e2d3cf");
+  g_free (str);
+  str = test_printf ("32-bit u value = %" G_GUINT32_FORMAT, v32);
+  fail_unless_equals_string (str, "32-bit u value = 4058174415");
+  g_free (str);
+  str = test_printf ("32-bit d value = %" G_GINT32_FORMAT, v32);
+  fail_unless_equals_string (str, "32-bit d value = -236792881");
+  g_free (str);
+
+  /* 64 bit Glib */
+  str = test_printf ("64-bit x value = %" G_GINT64_MODIFIER "x", v64);
+  fail_unless_equals_string (str, "64-bit x value = f1e2d3c4b5a6978f");
+  g_free (str);
+  str = test_printf ("64-bit u value = %" G_GUINT64_FORMAT, v64);
+  fail_unless_equals_string (str, "64-bit u value = 17429726349691885455");
+  g_free (str);
+  str = test_printf ("64-bit d value = %" G_GINT64_FORMAT, v64);
+  fail_unless_equals_string (str, "64-bit d value = -1017017724017666161");
+  g_free (str);
+
+  /* 32 bit Windows */
+  str = test_printf ("I32x value = %I32x", v32);
+  fail_unless_equals_string (str, "I32x value = f1e2d3cf");
+  g_free (str);
+  str = test_printf ("I32u value = %I32u", v32);
+  fail_unless_equals_string (str, "I32u value = 4058174415");
+  g_free (str);
+  str = test_printf ("I32d value = %I32d", v32);
+  fail_unless_equals_string (str, "I32d value = -236792881");
+  g_free (str);
+
+  /* needs testing first */
+#if 0
+#ifdef G_OS_WIN32
+  /* 64 bit Windows */
+  str = test_printf ("I64x value = %I64x", v64);
+  fail_unless_equals_string (str, "I64x value = f1e2d3c4b5a6978f");
+  g_free (str);
+  str = test_printf ("I64u value = %I64u", v64);
+  fail_unless_equals_string (str, "I64u value = 17429726349691885455");
+  g_free (str);
+  str = test_printf ("I64d value = %I64d", v64);
+  fail_unless_equals_string (str, "I64d value = -1017017724017666161");
+  g_free (str);
+#endif
+#endif
+}
+
+GST_END_TEST;
+
+GST_START_TEST (printf_percent)
+{
+  gchar *str;
+
+  /* standard int/uint */
+  str = test_printf ("%u%%", 99);
+  fail_unless_equals_string (str, "99%");
+  g_free (str);
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_printf_suite (void)
+{
+  Suite *s = suite_create ("GstPrintf");
+  TCase *tc_chain = tcase_create ("gstprintf");
+
+  tcase_set_timeout (tc_chain, 30);
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, printf_I32_I64);
+  tcase_add_test (tc_chain, printf_percent);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_printf);
diff --git a/tests/check/gst/gstprotection.c b/tests/check/gst/gstprotection.c
new file mode 100644
index 0000000..89181f8
--- /dev/null
+++ b/tests/check/gst/gstprotection.c
@@ -0,0 +1,291 @@
+/* GStreamer
+ *
+ * Unit tests for protection library.
+ *
+ * Copyright (C) <2015> YouView TV Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/check/gstcheck.h>
+#include <gst/gstprotection.h>
+
+#ifndef GST_PACKAGE_NAME
+#define GST_PACKAGE_NAME "gstreamer"
+#endif
+
+#ifndef GST_PACKAGE_ORIGIN
+#define GST_PACKAGE_ORIGIN "https://developer.gnome.org/gstreamer/"
+#endif
+
+static GType gst_protection_test_get_type (void);
+
+#define GST_TYPE_PROTECTION_TEST            (gst_protection_test_get_type ())
+#define GST_PROTECTION_TEST(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PROTECTION_TEST, GstProtectionTest))
+#define GST_PROTECTION_TEST_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PROTECTION_TEST, GstProtectionTestClass))
+#define GST_IS_PROTECTION_TEST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PROTECTION_TEST))
+#define GST_IS_PROTECTION_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PROTECTION_TEST))
+#define GST_PROTECTION_TEST_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PROTECTION_TEST, GstProtectionTestClass))
+#define GST_PROTECTION_TEST_NAME            "protection-test"
+
+#define CLEARKEY_SYSTEM_ID "78f32170-d883-11e0-9572-0800200c9a66"
+
+typedef struct _GstProtectionTest
+{
+  GstElement parent;
+
+  gint test;
+} GstProtectionTest;
+
+typedef struct _GstProtectionTestClass
+{
+  GstElementClass parent_class;
+} GstProtectionTestClass;
+
+typedef struct _PluginInitContext
+{
+  const gchar *name;
+  guint rank;
+  GType type;
+} PluginInitContext;
+
+static GstStaticPadTemplate gst_decrypt_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS
+    ("application/x-cenc, original-media-type=(string)video/x-h264, "
+        GST_PROTECTION_SYSTEM_ID_CAPS_FIELD "=(string)" CLEARKEY_SYSTEM_ID)
+    );
+
+static void
+gst_protection_test_class_init (GObjectClass * klass)
+{
+}
+
+static void
+gst_protection_test_base_init (GstProtectionTestClass * klass)
+{
+  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_set_metadata (element_class,
+      "Decryptor element for unit tests",
+      GST_ELEMENT_FACTORY_KLASS_DECRYPTOR,
+      "Use in unit tests", "Alex Ashley <alex.ashley@youview.com>");
+}
+
+static GType
+gst_protection_test_get_type (void)
+{
+  static volatile gsize protection_test_type = 0;
+
+  if (g_once_init_enter (&protection_test_type)) {
+    GType type;
+    const GTypeInfo info = {
+      sizeof (GstProtectionTestClass),
+      (GBaseInitFunc) gst_protection_test_base_init,    /* base_init */
+      NULL,                     /* base_finalize */
+      (GClassInitFunc) gst_protection_test_class_init,  /* class_init */
+      NULL,                     /* class_finalize */
+      NULL,                     /* class_data */
+      sizeof (GstProtectionTest),
+      0,                        /* n_preallocs */
+      NULL,                     /* instance_init */
+      NULL                      /* value_table */
+    };
+    type =
+        g_type_register_static (GST_TYPE_ELEMENT, "GstProtectionTest", &info,
+        0);
+    g_once_init_leave (&protection_test_type, type);
+  }
+  return protection_test_type;
+}
+
+static gboolean
+protection_plugin_init_func (GstPlugin * plugin, gpointer user_data)
+{
+  PluginInitContext *context = (PluginInitContext *) user_data;
+  gboolean ret;
+
+  ret =
+      gst_element_register (plugin, context->name, context->rank,
+      context->type);
+  return ret;
+}
+
+static gboolean
+protection_create_plugin (GstRegistry * registry, const gchar * name,
+    GType type)
+{
+  gboolean ret;
+  PluginInitContext context;
+
+  context.name = name;
+  context.rank = GST_RANK_MARGINAL;
+  context.type = type;
+  ret = gst_plugin_register_static_full (GST_VERSION_MAJOR,     /* version */
+      GST_VERSION_MINOR,        /* version */
+      name,                     /* name */
+      "Protection unit test",   /* description */
+      protection_plugin_init_func,      /* init function */
+      "0.0.0",                  /* version string */
+      GST_LICENSE_UNKNOWN,      /* license */
+      __FILE__,                 /* source */
+      GST_PACKAGE_NAME,         /* package */
+      GST_PACKAGE_ORIGIN,       /* origin */
+      &context                  /* user_data */
+      );
+  return ret;
+}
+
+static void
+test_setup (void)
+{
+  GstRegistry *registry;
+
+  registry = gst_registry_get ();
+  protection_create_plugin (registry, GST_PROTECTION_TEST_NAME,
+      GST_TYPE_PROTECTION_TEST);
+}
+
+static void
+test_teardown (void)
+{
+}
+
+
+GST_START_TEST (test_decryptor_element_class)
+{
+  GstElement *elem;
+  const gchar *selected_id;
+  const gchar *sys_ids[] = {
+    CLEARKEY_SYSTEM_ID,
+    "69f908af-4816-46ea-910c-cd5dcccb0a3a",
+    "5e629af5-38da-4063-8977-97ffbd9902d4",
+    NULL
+  };
+
+#ifdef DEBUG_PLUGINS
+  GList *list, *walk;
+
+  list = gst_registry_get_plugin_list (gst_registry_get ());
+  for (walk = list; walk; walk = g_list_next (walk)) {
+    GstPlugin *plugin = (GstPlugin *) walk->data;
+    g_print ("Element %s\n", gst_plugin_get_name (plugin));
+  }
+#endif
+
+  elem = gst_element_factory_make (GST_PROTECTION_TEST_NAME, NULL);
+  fail_unless (GST_IS_ELEMENT (elem));
+
+  selected_id = gst_protection_select_system (sys_ids);
+  fail_if (selected_id == NULL);
+
+  selected_id = gst_protection_select_system (&sys_ids[1]);
+  fail_unless (selected_id == NULL);
+
+  selected_id = gst_protection_select_system (&sys_ids[3]);
+  fail_unless (selected_id == NULL);
+
+  gst_object_unref (elem);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_protection_metadata)
+{
+  GstBuffer *buf = NULL;
+  GstBuffer *iv, *kid;
+  GstBuffer *fetched_iv = NULL, *fetched_key_id = NULL;
+  GstStructure *meta_info;
+  GstProtectionMeta *meta = NULL;
+  const GstMetaInfo *info = NULL;
+  const GValue *value;
+
+  /* Check correct type info is returned */
+  info = gst_protection_meta_get_info ();
+  fail_unless (info != NULL);
+  fail_unless (info->api == GST_PROTECTION_META_API_TYPE);
+
+  iv = gst_buffer_new_allocate (NULL, 16, NULL);
+  gst_buffer_memset (iv, 0, 'i', 16);
+  ASSERT_MINI_OBJECT_REFCOUNT (iv, "iv", 1);
+  kid = gst_buffer_new_allocate (NULL, 16, NULL);
+  gst_buffer_memset (kid, 0, 'k', 16);
+  ASSERT_MINI_OBJECT_REFCOUNT (kid, "kid", 1);
+  meta_info = gst_structure_new ("application/x-cenc",
+      "encrypted", G_TYPE_BOOLEAN, TRUE,
+      "iv", GST_TYPE_BUFFER, iv,
+      "iv_size", G_TYPE_UINT, 16, "kid", GST_TYPE_BUFFER, kid, NULL);
+  ASSERT_MINI_OBJECT_REFCOUNT (kid, "kid", 2);
+  ASSERT_MINI_OBJECT_REFCOUNT (iv, "iv", 2);
+
+  buf = gst_buffer_new_allocate (NULL, 1024, NULL);
+  /* Test attaching protection metadata to buffer */
+  meta = gst_buffer_add_protection_meta (buf, meta_info);
+  fail_unless (meta != NULL);
+  /* gst_buffer_new_allocate takes ownership of info GstStructure */
+  ASSERT_MINI_OBJECT_REFCOUNT (buf, "Buffer", 1);
+
+  /* Test detaching protection metadata from buffer, and check that
+   * contained data is correct */
+  meta = NULL;
+  meta = gst_buffer_get_protection_meta (buf);
+  fail_unless (meta != NULL);
+  ASSERT_MINI_OBJECT_REFCOUNT (buf, "Buffer", 1);
+  value = gst_structure_get_value (meta->info, "iv");
+  fail_unless (value != NULL);
+  fetched_iv = gst_value_get_buffer (value);
+  fail_unless (fetched_iv != NULL);
+  fail_unless (gst_buffer_get_size (fetched_iv) == 16);
+  value = gst_structure_get_value (meta->info, "kid");
+  fail_unless (value != NULL);
+  fetched_key_id = gst_value_get_buffer (value);
+  fail_unless (fetched_key_id != NULL);
+  fail_unless (gst_buffer_get_size (fetched_key_id) == 16);
+
+  gst_buffer_remove_meta (buf, (GstMeta *) meta);
+
+  /* Check that refcounts are decremented after metadata is freed */
+  ASSERT_MINI_OBJECT_REFCOUNT (buf, "Buffer", 1);
+  ASSERT_MINI_OBJECT_REFCOUNT (iv, "IV", 1);
+  ASSERT_MINI_OBJECT_REFCOUNT (kid, "KID", 1);
+
+  gst_buffer_unref (buf);
+  gst_buffer_unref (iv);
+  gst_buffer_unref (kid);
+}
+
+GST_END_TEST;
+
+static Suite *
+protection_suite (void)
+{
+  Suite *s = suite_create ("protection library");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_decryptor_element_class);
+  tcase_add_test (tc_chain, test_protection_metadata);
+  tcase_add_unchecked_fixture (tc_chain, test_setup, test_teardown);
+
+  return s;
+}
+
+GST_CHECK_MAIN (protection);
diff --git a/tests/check/gst/gstsegment.c b/tests/check/gst/gstsegment.c
index 94eb2b2..8678915 100644
--- a/tests/check/gst/gstsegment.c
+++ b/tests/check/gst/gstsegment.c
@@ -30,6 +30,8 @@
 
   st = gst_segment_to_stream_time (segment, segment->format, position);
   rt = gst_segment_to_running_time (segment, segment->format, position);
+  GST_DEBUG ("position %" G_GUINT64_FORMAT ", st %" G_GUINT64_FORMAT ", rt %"
+      G_GUINT64_FORMAT, position, stream_time, running_time);
 
   fail_unless_equals_int64 (st, stream_time);
   fail_unless_equals_int64 (rt, running_time);
@@ -689,10 +691,106 @@
   fail_unless (segment.base == 0);
   fail_unless (segment.offset == 200);
   check_times (&segment, 200, 200, 0);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+
+  segment.start = 20;
+  segment.position = 50;
+  segment.stop = 220;
+  segment.time = 0;
+
+  check_times (&segment, 40, 20, 20);
+  check_times (&segment, 240, -1, -1);
+
+  fail_unless (gst_segment_offset_running_time (&segment, GST_FORMAT_TIME,
+          0) == TRUE);
+  fail_unless (segment.start == 20);
+  fail_unless (segment.stop == 220);
+  fail_unless (segment.time == 0);
+  fail_unless (segment.position == 50);
+  fail_unless (segment.base == 0);
+  fail_unless (segment.offset == 0);
+  check_times (&segment, 40, 20, 20);
+
+  fail_unless (gst_segment_offset_running_time (&segment, GST_FORMAT_TIME,
+          100) == TRUE);
+  fail_unless (segment.start == 20);
+  fail_unless (segment.stop == 220);
+  fail_unless (segment.time == 0);
+  fail_unless (segment.position == 50);
+  fail_unless (segment.base == 100);
+  fail_unless (segment.offset == 0);
+  check_times (&segment, 40, 20, 120);
+
+  fail_unless (gst_segment_offset_running_time (&segment, GST_FORMAT_TIME,
+          -50) == TRUE);
+  fail_unless (segment.start == 20);
+  fail_unless (segment.stop == 220);
+  fail_unless (segment.time == 0);
+  fail_unless (segment.position == 50);
+  fail_unless (segment.base == 50);
+  fail_unless (segment.offset == 0);
+  check_times (&segment, 40, 20, 70);
+
+  fail_unless (gst_segment_offset_running_time (&segment, GST_FORMAT_TIME,
+          -100) == TRUE);
+  fail_unless (segment.start == 20);
+  fail_unless (segment.stop == 220);
+  fail_unless (segment.time == 0);
+  fail_unless (segment.position == 50);
+  fail_unless (segment.base == 0);
+  fail_unless (segment.offset == 50);
+  check_times (&segment, 40, 20, -1);
+  check_times (&segment, 220, 200, 150);
 }
 
 GST_END_TEST;
 
+GST_START_TEST (segment_full)
+{
+  GstSegment segment;
+  guint64 rt;
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+
+  segment.start = 50;
+  segment.position = 150;
+  segment.stop = 200;
+  segment.time = 0;
+
+  check_times (&segment, 100, 50, 50);
+  check_times (&segment, 220, -1, -1);
+
+  fail_unless (gst_segment_to_running_time_full (&segment, GST_FORMAT_TIME,
+          50, &rt) == 1);
+  fail_unless (rt == 0);
+  fail_unless (gst_segment_to_running_time_full (&segment, GST_FORMAT_TIME,
+          200, &rt) == 1);
+  fail_unless (rt == 150);
+  fail_unless (!gst_segment_clip (&segment, GST_FORMAT_TIME, 40, 40, NULL,
+          NULL));
+  fail_unless (gst_segment_to_running_time_full (&segment, GST_FORMAT_TIME, 40,
+          &rt) == -1);
+  fail_unless (!gst_segment_clip (&segment, GST_FORMAT_TIME, 49, 49, NULL,
+          NULL));
+  fail_unless (gst_segment_to_running_time_full (&segment, GST_FORMAT_TIME, 49,
+          &rt) == -1);
+  fail_unless (!gst_segment_clip (&segment, GST_FORMAT_TIME, 201, 201, NULL,
+          NULL));
+  fail_unless (gst_segment_to_running_time_full (&segment, GST_FORMAT_TIME, 201,
+          &rt) == 1);
+
+  fail_unless (gst_segment_offset_running_time (&segment, GST_FORMAT_TIME,
+          -50) == TRUE);
+  fail_unless (segment.offset == 50);
+
+  fail_unless (gst_segment_to_running_time_full (&segment, GST_FORMAT_TIME,
+          50, &rt) == -1);
+  GST_DEBUG ("%" G_GUINT64_FORMAT, rt);
+  fail_unless (rt == 50);
+}
+
+GST_END_TEST;
 
 static Suite *
 gst_segment_suite (void)
@@ -710,6 +808,7 @@
   tcase_add_test (tc_chain, segment_copy);
   tcase_add_test (tc_chain, segment_seek_noupdate);
   tcase_add_test (tc_chain, segment_offset);
+  tcase_add_test (tc_chain, segment_full);
 
   return s;
 }
diff --git a/tests/check/gst/gststructure.c b/tests/check/gst/gststructure.c
index d1fb801..54e9830 100644
--- a/tests/check/gst/gststructure.c
+++ b/tests/check/gst/gststructure.c
@@ -242,6 +242,48 @@
 
 GST_END_TEST;
 
+/* Added to make sure taglists are properly serialized/deserialized after bug
+ * https://bugzilla.gnome.org/show_bug.cgi?id=733131 */
+GST_START_TEST (test_to_from_string_tag_event)
+{
+  GstEvent *tagevent;
+  GstTagList *taglist;
+  GstStructure *st1, *st2;
+  gchar *str;
+
+  /* empty taglist */
+  taglist = gst_tag_list_new_empty ();
+  tagevent = gst_event_new_tag (taglist);
+
+  st1 = (GstStructure *) gst_event_get_structure (tagevent);
+  str = gst_structure_to_string (st1);
+  fail_unless (str != NULL);
+
+  st2 = gst_structure_new_from_string (str);
+  fail_unless (st2 != NULL);
+  fail_unless (gst_structure_is_equal (st1, st2));
+  gst_event_unref (tagevent);
+  gst_structure_free (st2);
+  g_free (str);
+
+  /* taglist with data */
+  taglist = gst_tag_list_new ("title", "TEST TITLE", NULL);
+  tagevent = gst_event_new_tag (taglist);
+
+  st1 = (GstStructure *) gst_event_get_structure (tagevent);
+  str = gst_structure_to_string (st1);
+  fail_unless (str != NULL);
+
+  st2 = gst_structure_new_from_string (str);
+  fail_unless (st2 != NULL);
+  fail_unless (gst_structure_is_equal (st1, st2));
+  gst_event_unref (tagevent);
+  gst_structure_free (st2);
+  g_free (str);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_complete_structure)
 {
   GstStructure *structure;
@@ -626,6 +668,112 @@
 
 GST_END_TEST;
 
+static gboolean
+foreach_func (GQuark field_id, const GValue * value, gpointer user_data)
+{
+  gint *sum = user_data;
+  gint v = 0;
+
+  if (G_VALUE_HOLDS_INT (value))
+    v = g_value_get_int (value);
+  *sum += v;
+
+  return TRUE;
+}
+
+GST_START_TEST (test_foreach)
+{
+  GstStructure *s;
+  gint sum = 0;
+
+  s = gst_structure_new ("foo/bar", "baz", G_TYPE_INT, 1, "bla", G_TYPE_INT, 3,
+      NULL);
+  fail_unless (gst_structure_foreach (s, foreach_func, &sum));
+  fail_unless_equals_int (sum, 4);
+  gst_structure_free (s);
+
+}
+
+GST_END_TEST;
+
+static gboolean
+map_func (GQuark field_id, GValue * value, gpointer user_data)
+{
+  if (G_VALUE_HOLDS_INT (value))
+    g_value_set_int (value, 123);
+
+  return TRUE;
+}
+
+GST_START_TEST (test_map_in_place)
+{
+  GstStructure *s, *s2;
+
+  s = gst_structure_new ("foo/bar", "baz", G_TYPE_INT, 1, "bla", G_TYPE_INT, 3,
+      NULL);
+  s2 = gst_structure_new ("foo/bar", "baz", G_TYPE_INT, 123, "bla", G_TYPE_INT,
+      123, NULL);
+  fail_unless (gst_structure_map_in_place (s, map_func, NULL));
+  fail_unless (gst_structure_is_equal (s, s2));
+  gst_structure_free (s);
+  gst_structure_free (s2);
+
+}
+
+GST_END_TEST;
+
+static gboolean
+filter_map_func (GQuark field_id, GValue * value, gpointer user_data)
+{
+  if (strcmp (g_quark_to_string (field_id), "bla") == 0)
+    return FALSE;
+
+  if (G_VALUE_HOLDS_INT (value))
+    g_value_set_int (value, 2);
+
+  return TRUE;
+}
+
+GST_START_TEST (test_filter_and_map_in_place)
+{
+  GstStructure *s, *s2;
+
+  s = gst_structure_new ("foo/bar", "baz", G_TYPE_INT, 1, "bla", G_TYPE_INT, 3,
+      NULL);
+  s2 = gst_structure_new ("foo/bar", "baz", G_TYPE_INT, 2, NULL);
+  gst_structure_filter_and_map_in_place (s, filter_map_func, NULL);
+  fail_unless (gst_structure_is_equal (s, s2));
+  gst_structure_free (s);
+  gst_structure_free (s2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_flagset)
+{
+  GstStructure *s;
+  GType test_flagset_type;
+  guint test_flags =
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SKIP | GST_SEEK_FLAG_SNAP_AFTER;
+  guint test_mask = GST_FLAG_SET_MASK_EXACT;
+  guint out_flags, out_mask;
+
+  test_flagset_type = gst_flagset_register (GST_TYPE_SEEK_FLAGS);
+  fail_unless (g_type_is_a (test_flagset_type, GST_TYPE_FLAG_SET));
+
+  /* Check that we can retrieve a non-standard flagset from the structure */
+  s = gst_structure_new ("test-struct", "test-flagset", test_flagset_type,
+      test_flags, test_mask, NULL);
+  fail_unless (gst_structure_get_flagset (s, "test-flagset", &out_flags,
+          &out_mask));
+
+  fail_unless (out_flags == test_flags);
+  fail_unless (out_mask == test_mask);
+  gst_structure_free (s);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_structure_suite (void)
 {
@@ -638,6 +786,7 @@
   tcase_add_test (tc_chain, test_from_string);
   tcase_add_test (tc_chain, test_to_string);
   tcase_add_test (tc_chain, test_to_from_string);
+  tcase_add_test (tc_chain, test_to_from_string_tag_event);
   tcase_add_test (tc_chain, test_string_properties);
   tcase_add_test (tc_chain, test_complete_structure);
   tcase_add_test (tc_chain, test_structure_new);
@@ -647,6 +796,10 @@
   tcase_add_test (tc_chain, test_structure_nested);
   tcase_add_test (tc_chain, test_structure_nested_from_and_to_string);
   tcase_add_test (tc_chain, test_vararg_getters);
+  tcase_add_test (tc_chain, test_foreach);
+  tcase_add_test (tc_chain, test_map_in_place);
+  tcase_add_test (tc_chain, test_filter_and_map_in_place);
+  tcase_add_test (tc_chain, test_flagset);
   return s;
 }
 
diff --git a/tests/check/gst/gsttag.c b/tests/check/gst/gsttag.c
index fe770a0..7a5e5ca 100644
--- a/tests/check/gst/gsttag.c
+++ b/tests/check/gst/gsttag.c
@@ -608,6 +608,25 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_empty_taglist_serialization)
+{
+  GstTagList *taglist, *taglist2;
+  gchar *str;
+
+  taglist = gst_tag_list_new_empty ();
+  str = gst_tag_list_to_string (taglist);
+  taglist2 = gst_tag_list_new_from_string (str);
+  fail_if (taglist2 == NULL);
+  fail_unless (gst_tag_list_is_equal (taglist, taglist2));
+
+  gst_tag_list_unref (taglist);
+  gst_tag_list_unref (taglist2);
+  g_free (str);
+}
+
+GST_END_TEST;
+
+
 static Suite *
 gst_tag_suite (void)
 {
@@ -628,6 +647,7 @@
   tcase_add_test (tc_chain, test_equal);
   tcase_add_test (tc_chain, test_writability);
   tcase_add_test (tc_chain, test_serialization);
+  tcase_add_test (tc_chain, test_empty_taglist_serialization);
 
   return s;
 }
diff --git a/tests/check/gst/gsturi.c b/tests/check/gst/gsturi.c
index 1d53265..3d80098 100644
--- a/tests/check/gst/gsturi.c
+++ b/tests/check/gst/gsturi.c
@@ -164,6 +164,790 @@
 
 GST_END_TEST;
 
+/* Taken from the GNet unit test and extended with other URIs:
+ * https://git.gnome.org/browse/archive/gnet/plain/tests/check/gnet/gneturi.c
+ */
+struct QueryValue
+{
+  const gchar *key;
+  const gchar *value;
+};
+
+struct URITest
+{
+  const gchar *str;
+  struct
+  {
+    const gchar *scheme;
+    const gchar *userinfo;
+    const gchar *host;
+    gint port;
+    const gchar *path;
+    /* needs to be updated if more than 10 */
+    struct QueryValue query[10];
+    const gchar *fragment;
+  } uri;
+};
+
+static const struct URITest tests[] = {
+  /* VALID URIS.  PARSING AND PRINTING OF THESE SHOULD NOT CHANGE */
+
+  /* scheme/path */
+  {"scheme:",
+      {"scheme", NULL, NULL, GST_URI_NO_PORT, NULL, {{NULL, NULL}}, NULL}},
+
+  {"scheme:path",
+      {"scheme", NULL, NULL, GST_URI_NO_PORT, "path", {{NULL, NULL}}, NULL}},
+
+  {"path",
+      {NULL, NULL, NULL, GST_URI_NO_PORT, "path", {{NULL, NULL}}, NULL}},
+
+  {"/path",
+      {NULL, NULL, NULL, GST_URI_NO_PORT, "/path", {{NULL, NULL}}, NULL}},
+
+  /* hostname/port */
+  {"scheme://hostname/path",
+        {"scheme", NULL, "hostname", GST_URI_NO_PORT, "/path", {{NULL, NULL}},
+          NULL}},
+
+  {"scheme://hostname:123/path",
+      {"scheme", NULL, "hostname", 123, "/path", {{NULL, NULL}}, NULL}},
+
+  /* ipv6 hostname/port */
+  {"scheme://[01:23:45:67:89:ab:cd:ef]/path",
+        {"scheme", NULL, "01:23:45:67:89:ab:cd:ef", GST_URI_NO_PORT, "/path",
+          {{NULL, NULL}}, NULL}},
+
+  {"scheme://[01:23:45:67:89:ab:cd:ef]:123/path",
+        {"scheme", NULL, "01:23:45:67:89:ab:cd:ef", 123, "/path", {{NULL,
+                  NULL}}, NULL}},
+
+  /* query/fragment */
+  {"path?query",
+        {NULL, NULL, NULL, GST_URI_NO_PORT, "path", {{"query", NULL}, {NULL,
+                  NULL}}, NULL}},
+  {"path?query=value",
+        {NULL, NULL, NULL, GST_URI_NO_PORT, "path", {{"query", "value"}, {NULL,
+                  NULL}}, NULL}},
+
+  {"path?query#fragment",
+        {NULL, NULL, NULL, GST_URI_NO_PORT, "path", {{"query", NULL}, {NULL,
+                  NULL}}, "fragment"}},
+
+  {"path?query=value#fragment",
+        {NULL, NULL, NULL, GST_URI_NO_PORT, "path", {{"query", "value"}, {NULL,
+                  NULL}}, "fragment"}},
+
+  {"scheme:path?query#fragment",
+        {"scheme", NULL, NULL, GST_URI_NO_PORT, "path", {{"query", NULL}, {NULL,
+                  NULL}}, "fragment"}},
+
+  /* full */
+  {"scheme://hostname:123/path?query#fragment",
+        {"scheme", NULL, "hostname", 123, "/path", {{"query", NULL}, {NULL,
+                  NULL}}, "fragment"}},
+
+  {"scheme://hostname:123/path?query=value#fragment",
+        {"scheme", NULL, "hostname", 123, "/path", {{"query", "value"}, {NULL,
+                  NULL}}, "fragment"}},
+
+  {"scheme://hostname:123?query",
+        {"scheme", NULL, "hostname", 123, NULL, {{"query", NULL}, {NULL,
+                  NULL}}, NULL}},
+
+  {"scheme://hostname:123?query=value",
+        {"scheme", NULL, "hostname", 123, NULL, {{"query", "value"}, {NULL,
+                  NULL}}, NULL}},
+
+  {"scheme://hostname:123?query#fragment",
+        {"scheme", NULL, "hostname", 123, NULL, {{"query", NULL}, {NULL,
+                  NULL}}, "fragment"}},
+
+  {"scheme://hostname:123?query=value#fragment",
+        {"scheme", NULL, "hostname", 123, NULL, {{"query", "value"}, {NULL,
+                  NULL}}, "fragment"}},
+
+  /* user/pass */
+  {"scheme://userinfo@hostname",
+        {"scheme", "userinfo", "hostname", GST_URI_NO_PORT, NULL, {{NULL,
+                  NULL}}, NULL}},
+
+  {"scheme://userinfo@hostname:123/path?query#fragment",
+        {"scheme", "userinfo", "hostname", 123, "/path", {{"query", NULL},
+              {NULL, NULL}}, "fragment"}},
+
+  {"scheme://user:pass@hostname",
+        {"scheme", "user:pass", "hostname", GST_URI_NO_PORT, NULL, {{NULL,
+                  NULL}}, NULL}},
+
+  {"scheme://user:pass@hostname:123/path?query#fragment",
+        {"scheme", "user:pass", "hostname", 123, "/path", {{"query", NULL},
+              {NULL, NULL}}, "fragment"}},
+
+  /* FUNNY URIS.  PARSING AND PRINTING OF THESE MAY CHANGE */
+
+  {"scheme:hostname:123/path?query#fragment",
+        {"scheme", NULL, NULL, GST_URI_NO_PORT, "hostname:123/path", {{"query",
+                  NULL}, {NULL, NULL}}, "fragment"}},
+
+  {"scheme://:pass@hostname:123/path?query#fragment",
+        {"scheme", ":pass", "hostname", 123, "/path", {{"query", NULL}, {NULL,
+                  NULL}}, "fragment"}},
+
+  /* Skip initial white space */
+  {" \f\n\r\t\vscheme:",
+      {"scheme", NULL, NULL, GST_URI_NO_PORT, NULL, {{NULL, NULL}}, NULL}},
+
+  {" \f\n\r\t\vpath",
+      {NULL, NULL, NULL, GST_URI_NO_PORT, "path", {{NULL, NULL}}, NULL}},
+
+  /* file URI */
+  {"file://host/home/joe/foo.txt",
+        {"file", NULL, "host", GST_URI_NO_PORT, "/home/joe/foo.txt", {{NULL,
+                  NULL}}, NULL}},
+  {"file:///home/joe/foo.txt",
+        {"file", NULL, NULL, GST_URI_NO_PORT, "/home/joe/foo.txt", {{NULL,
+                  NULL}}, NULL}},
+};
+
+static const gchar *unparsable_uri_tests[] = {
+  /* Path not started correctly */
+  "scheme://hostname:123path?query#fragment",
+
+  /* Brackets that don't close */
+  "scheme://[01:23:45:67:89:ab:cd:ef:123/path",
+
+  /* IPv6 hostname without brackets */
+  "scheme://01:23:45:67:89:ab:cd:ef:123/path",
+};
+
+GST_START_TEST (test_url_parsing)
+{
+  GstUri *uri;
+  GList *list;
+  gchar *tmp_str;
+  guint i, j;
+
+  for (i = 0; i < G_N_ELEMENTS (tests); i++) {
+    GST_DEBUG ("Testing URI '%s'", tests[i].str);
+
+    uri = gst_uri_from_string (tests[i].str);
+    fail_unless (uri != NULL);
+    fail_unless_equals_string (gst_uri_get_scheme (uri), tests[i].uri.scheme);
+    fail_unless_equals_string (gst_uri_get_userinfo (uri),
+        tests[i].uri.userinfo);
+    fail_unless_equals_string (gst_uri_get_host (uri), tests[i].uri.host);
+    fail_unless_equals_int (gst_uri_get_port (uri), tests[i].uri.port);
+    tmp_str = gst_uri_get_path (uri);
+    fail_unless_equals_string (tmp_str, tests[i].uri.path);
+    g_free (tmp_str);
+
+    for (j = 0; j < 10; j++) {
+      if (!tests[i].uri.query[j].key)
+        break;
+
+      if (tests[i].uri.query[j].value) {
+        fail_unless_equals_string (gst_uri_get_query_value (uri,
+                tests[i].uri.query[j].key), tests[i].uri.query[j].value);
+      } else {
+        fail_unless (gst_uri_query_has_key (uri, tests[i].uri.query[j].key));
+      }
+    }
+    list = gst_uri_get_query_keys (uri);
+    fail_unless_equals_int (j, g_list_length (list));
+    g_list_free (list);
+    gst_uri_unref (uri);
+  }
+
+  for (i = 0; i < G_N_ELEMENTS (unparsable_uri_tests); i++) {
+    GST_DEBUG ("Testing unparsable URI '%s'", unparsable_uri_tests[i]);
+
+    uri = gst_uri_from_string (unparsable_uri_tests[i]);
+    fail_unless (uri == NULL);
+  }
+}
+
+GST_END_TEST;
+
+static const struct URITest url_presenting_tests[] = {
+  /* check all URI elements present */
+  {.uri = {"scheme", "user:pass", "host", 1234, "/path/to/dir",
+          {{"query", NULL}, {"key", "value"}}, "fragment"},
+      .str =
+      "scheme://user:pass@host:1234/path/to/dir?query&key=value#fragment"},
+
+  /* IPv6 literal should render in square brackets */
+  {.uri = {"scheme", "user:pass", "12:34:56:78:9a:bc:de:f0", 1234,
+          "/path/to/dir", {{"query", "value"}}, "fragment"},
+      .str =
+      "scheme://user:pass@[12:34:56:78:9a:bc:de:f0]:1234/path/to/dir?query=value#fragment"},
+};
+
+GST_START_TEST (test_url_presenting)
+{
+  GstUri *uri;
+  gchar *result;
+  guint i, j;
+
+  for (i = 0; i < G_N_ELEMENTS (url_presenting_tests); i++) {
+    uri = gst_uri_new (url_presenting_tests[i].uri.scheme,
+        url_presenting_tests[i].uri.userinfo,
+        url_presenting_tests[i].uri.host,
+        url_presenting_tests[i].uri.port,
+        url_presenting_tests[i].uri.path,
+        NULL, url_presenting_tests[i].uri.fragment);
+    fail_unless (uri != NULL);
+    for (j = 0; j < 10; j++) {
+      if (!url_presenting_tests[i].uri.query[j].key)
+        break;
+
+      fail_unless (gst_uri_set_query_value (uri,
+              url_presenting_tests[i].uri.query[j].key,
+              url_presenting_tests[i].uri.query[j].value));
+    }
+
+    result = gst_uri_to_string (uri);
+    fail_unless_equals_string (result, url_presenting_tests[i].str);
+    g_free (result);
+    gst_uri_unref (uri);
+  }
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_url_normalization)
+{
+  GstUri *url;
+  gchar *tmp_str;
+
+  url =
+      gst_uri_from_string
+      ("ScHeMe://User:P%61ss@HOST.%63om:1234/path/./from/../to%7d/item%2dobj?qu%65ry=something#fr%61gment");
+  fail_unless (gst_uri_normalize (url));
+  fail_unless_equals_string (gst_uri_get_scheme (url), "scheme");
+  fail_unless_equals_string (gst_uri_get_userinfo (url), "User:Pass");
+  fail_unless_equals_string (gst_uri_get_host (url), "host.com");
+  tmp_str = gst_uri_get_path (url);
+  fail_unless_equals_string (tmp_str, "/path/to}/item-obj");
+  g_free (tmp_str);
+  fail_unless (gst_uri_query_has_key (url, "query"));
+  fail_unless_equals_string (gst_uri_get_query_value (url, "query"),
+      "something");
+  fail_unless_equals_string (gst_uri_get_fragment (url), "fragment");
+  gst_uri_unref (url);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_url_joining)
+{
+  GstUri *base, *rel, *joined;
+  gchar *l;
+
+  base =
+      gst_uri_from_string
+      ("http://example.com/path/to/dir/filename.html#fragment");
+
+  /* test change of fragment only */
+  rel = gst_uri_from_string ("#new_frag");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/filename.html#new_frag");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test addition of new query string */
+  rel = gst_uri_from_string ("?key=val");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/filename.html?key=val");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test new base filename */
+  rel = gst_uri_from_string ("new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test relative file same directory */
+  rel = gst_uri_from_string ("./new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test relative file parent directory */
+  rel = gst_uri_from_string ("../new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l, "http://example.com/path/to/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test relative file grandparent directory */
+  rel = gst_uri_from_string ("../../new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l, "http://example.com/path/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test relative file root directory */
+  rel = gst_uri_from_string ("../../../new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l, "http://example.com/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test relative file beyond root directory */
+  rel = gst_uri_from_string ("../../../../new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l, "http://example.com/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test add subdirectory */
+  rel = gst_uri_from_string ("subdir/new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/subdir/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test change directory */
+  rel = gst_uri_from_string ("../subdir/new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/subdir/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  gst_uri_unref (base);
+
+  /* change base for path ending in directory */
+  base = gst_uri_from_string ("http://example.com/path/to/dir/");
+
+  /* test adding file to directory */
+  rel = gst_uri_from_string ("new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test adding file to directory using relative path */
+  rel = gst_uri_from_string ("./new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l,
+      "http://example.com/path/to/dir/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test filename in parent directory */
+  rel = gst_uri_from_string ("../new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l, "http://example.com/path/to/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  /* test replace with absolute */
+  rel = gst_uri_from_string ("https://ssl.example.com/new_filename.xml");
+  joined = gst_uri_join (base, rel);
+  l = gst_uri_to_string (joined);
+  fail_unless_equals_string (l, "https://ssl.example.com/new_filename.xml");
+  g_free (l);
+  gst_uri_unref (joined);
+  gst_uri_unref (rel);
+
+  gst_uri_unref (base);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_url_equality)
+{
+  GstUri *url1, *url2;
+
+  url1 =
+      gst_uri_from_string
+      ("ScHeMe://User:Pass@HOST.com:1234/path/./from/../to%7d/item%2dobj?query=something#fragment");
+
+  /* equal */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (gst_uri_equal (url1, url2));
+  fail_unless (gst_uri_equal (url2, url1));
+  gst_uri_unref (url2);
+
+  /* different fragment */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234/path/to%7D/item-obj?query=something#different-fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different query */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234/path/to%7D/item-obj?query=different-something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different path */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234/path/to%7D/different-item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different port */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:4321/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different host */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@different-host.com:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different userinfo */
+  url2 =
+      gst_uri_from_string
+      ("scheme://Different-User:Pass@host.com:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different scheme */
+  url2 =
+      gst_uri_from_string
+      ("different+scheme://User:Pass@host.com:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no scheme) */
+  url2 =
+      gst_uri_from_string
+      ("//User:Pass@host.com:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no userinfo) */
+  url2 =
+      gst_uri_from_string
+      ("scheme://host.com:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no host) */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@:1234/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no port) */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com/path/to%7D/item-obj?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no path) */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234?query=something#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no query) */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234/path/to%7D/item-obj#fragment");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* different (no fragment) */
+  url2 =
+      gst_uri_from_string
+      ("scheme://User:Pass@host.com:1234/path/to%7D/item-obj?query=something");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  /* compare two NULL uris */
+  fail_unless (gst_uri_equal (NULL, NULL));
+
+  /* compare same object */
+  fail_unless (gst_uri_equal (url1, url1));
+
+  /* compare one NULL and one non-NULL uri */
+  fail_unless (!gst_uri_equal (url1, NULL));
+  fail_unless (!gst_uri_equal (NULL, url1));
+
+  gst_uri_unref (url1);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_url_constructors)
+{
+  GstUri *url1, *url2;
+  gchar *tmp_str;
+  GHashTable *tmp_table;
+
+  url1 =
+      gst_uri_new ("scheme", "userinfo", "hostname", 1234, "/path/to/file",
+      "query", "fragment");
+  fail_unless_equals_string (gst_uri_get_scheme (url1), "scheme");
+  fail_unless_equals_string (gst_uri_get_userinfo (url1), "userinfo");
+  fail_unless_equals_string (gst_uri_get_host (url1), "hostname");
+  fail_unless (gst_uri_get_port (url1) == 1234);
+  tmp_str = gst_uri_get_path (url1);
+  fail_unless_equals_string (tmp_str, "/path/to/file");
+  g_free (tmp_str);
+  tmp_table = gst_uri_get_query_table (url1);
+  fail_unless (g_hash_table_size (tmp_table) == 1);
+  fail_unless (g_hash_table_contains (tmp_table, "query"));
+  fail_unless (g_hash_table_lookup (tmp_table, "query") == NULL);
+  g_hash_table_unref (tmp_table);
+  fail_unless_equals_string (gst_uri_get_fragment (url1), "fragment");
+  tmp_str = gst_uri_to_string (url1);
+  fail_unless_equals_string (tmp_str,
+      "scheme://userinfo@hostname:1234/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  url2 =
+      gst_uri_new_with_base (url1, NULL, NULL, NULL, GST_URI_NO_PORT,
+      "new_file", NULL, NULL);
+  fail_unless_equals_string (gst_uri_get_scheme (url2), "scheme");
+  fail_unless_equals_string (gst_uri_get_userinfo (url2), "userinfo");
+  fail_unless_equals_string (gst_uri_get_host (url2), "hostname");
+  fail_unless (gst_uri_get_port (url2) == 1234);
+  tmp_str = gst_uri_get_path (url2);
+  fail_unless_equals_string (tmp_str, "/path/to/new_file");
+  g_free (tmp_str);
+  fail_unless (gst_uri_get_query_table (url2) == NULL);
+  fail_unless (gst_uri_get_fragment (url2) == NULL);
+  tmp_str = gst_uri_to_string (url2);
+  fail_unless_equals_string (tmp_str,
+      "scheme://userinfo@hostname:1234/path/to/new_file");
+  g_free (tmp_str);
+  gst_uri_unref (url2);
+
+  url2 = gst_uri_from_string_with_base (url1, "/a/new/path/to/file");
+  fail_unless_equals_string (gst_uri_get_scheme (url2), "scheme");
+  fail_unless_equals_string (gst_uri_get_userinfo (url2), "userinfo");
+  fail_unless_equals_string (gst_uri_get_host (url2), "hostname");
+  fail_unless (gst_uri_get_port (url2) == 1234);
+  tmp_str = gst_uri_get_path (url2);
+  fail_unless_equals_string (tmp_str, "/a/new/path/to/file");
+  g_free (tmp_str);
+  fail_unless (gst_uri_get_query_table (url2) == NULL);
+  fail_unless (gst_uri_get_fragment (url2) == NULL);
+  tmp_str = gst_uri_to_string (url2);
+  fail_unless_equals_string (tmp_str,
+      "scheme://userinfo@hostname:1234/a/new/path/to/file");
+  g_free (tmp_str);
+  gst_uri_unref (url2);
+
+  url2 = gst_uri_copy (url1);
+  fail_unless (gst_uri_equal (url1, url2));
+  gst_uri_set_query_value (url2, "key", "value");
+  fail_unless (!gst_uri_equal (url1, url2));
+  gst_uri_unref (url2);
+
+  gst_uri_unref (url1);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_url_get_set)
+{
+  GstUri *url;
+  gchar *tmp_str;
+  GList *tmp_list;
+
+  url = gst_uri_from_string ("scheme://hostname/path/to/file?query#fragment");
+
+  fail_unless (gst_uri_set_scheme (url, "new+scheme"));
+  fail_unless_equals_string (gst_uri_get_scheme (url), "new+scheme");
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "new+scheme://hostname/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (gst_uri_set_scheme (url, NULL));
+  fail_unless (gst_uri_get_scheme (url) == NULL);
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str, "//hostname/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_set_scheme (NULL, "fail"));
+  fail_unless (gst_uri_set_scheme (NULL, NULL));
+
+  fail_unless (gst_uri_set_userinfo (url, "username:password"));
+  fail_unless_equals_string (gst_uri_get_userinfo (url), "username:password");
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//username:password@hostname/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (gst_uri_set_userinfo (url, NULL));
+  fail_unless (gst_uri_get_userinfo (url) == NULL);
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str, "//hostname/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_set_userinfo (NULL, "fail"));
+  fail_unless (gst_uri_set_userinfo (NULL, NULL));
+
+  fail_unless (gst_uri_set_host (url, NULL));
+  fail_unless (gst_uri_get_host (url) == NULL);
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str, "/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (gst_uri_set_host (url, "example.com"));
+  fail_unless_equals_string (gst_uri_get_host (url), "example.com");
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_set_host (NULL, "fail"));
+  fail_unless (gst_uri_set_host (NULL, NULL));
+
+  fail_unless (gst_uri_set_port (url, 12345));
+  fail_unless (gst_uri_get_port (url) == 12345);
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com:12345/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (gst_uri_set_port (url, GST_URI_NO_PORT));
+  fail_unless (gst_uri_get_port (url) == GST_URI_NO_PORT);
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_set_port (NULL, 1234));
+  fail_unless (gst_uri_set_port (NULL, GST_URI_NO_PORT));
+
+  fail_unless (gst_uri_append_path_segment (url, "here"));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/here?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_append_path_segment (NULL, "fail"));
+  fail_unless (gst_uri_append_path_segment (NULL, NULL));
+
+  fail_unless (gst_uri_append_path (url, "../there"));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/here/../there?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_append_path (NULL, "fail"));
+  fail_unless (gst_uri_append_path (NULL, NULL));
+
+  gst_uri_normalize (url);
+
+  tmp_list = gst_uri_get_path_segments (url);
+  fail_unless (tmp_list != NULL);
+  tmp_list = g_list_append (tmp_list, g_strdup ("segment"));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there?query#fragment");
+  g_free (tmp_str);
+  fail_unless (gst_uri_set_path_segments (url, tmp_list));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there/segment?query#fragment");
+  g_free (tmp_str);
+
+  tmp_list = g_list_append (NULL, g_strdup ("test"));
+  fail_unless (!gst_uri_set_path_segments (NULL, tmp_list));
+  fail_unless (gst_uri_set_path_segments (NULL, NULL));
+
+  fail_unless (gst_uri_set_query_value (url, "key", "value"));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there/segment?query&key=value#fragment");
+  g_free (tmp_str);
+
+  fail_unless (gst_uri_set_query_value (url, "key", NULL));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there/segment?query&key#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_set_query_value (NULL, "key", "value"));
+
+  fail_unless (gst_uri_remove_query_key (url, "key"));
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there/segment?query#fragment");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_remove_query_key (url, "key"));
+  fail_unless (!gst_uri_remove_query_key (NULL, "key"));
+
+  fail_unless (gst_uri_set_fragment (url, NULL));
+  fail_unless (gst_uri_get_fragment (url) == NULL);
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there/segment?query");
+  g_free (tmp_str);
+
+  fail_unless (gst_uri_set_fragment (url, "tag"));
+  fail_unless_equals_string (gst_uri_get_fragment (url), "tag");
+  tmp_str = gst_uri_to_string (url);
+  fail_unless_equals_string (tmp_str,
+      "//example.com/path/to/file/there/segment?query#tag");
+  g_free (tmp_str);
+
+  fail_unless (!gst_uri_set_fragment (NULL, "can't set if no URI"));
+  fail_unless (gst_uri_set_fragment (NULL, NULL));
+
+  gst_uri_unref (url);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_uri_suite (void)
 {
@@ -180,6 +964,13 @@
 #ifdef G_OS_WIN32
   tcase_add_test (tc_chain, test_win32_uri);
 #endif
+  tcase_add_test (tc_chain, test_url_parsing);
+  tcase_add_test (tc_chain, test_url_presenting);
+  tcase_add_test (tc_chain, test_url_normalization);
+  tcase_add_test (tc_chain, test_url_joining);
+  tcase_add_test (tc_chain, test_url_equality);
+  tcase_add_test (tc_chain, test_url_constructors);
+  tcase_add_test (tc_chain, test_url_get_set);
 
   return s;
 }
diff --git a/tests/check/gst/gstutils.c b/tests/check/gst/gstutils.c
index b1daf39..012a69a 100644
--- a/tests/check/gst/gstutils.c
+++ b/tests/check/gst/gstutils.c
@@ -1304,6 +1304,403 @@
 }
 
 GST_END_TEST;
+
+static void
+count_request_pad (const GValue * item, gpointer user_data)
+{
+  GstPad *pad = GST_PAD (g_value_get_object (item));
+  guint *count = (guint *) user_data;
+
+  if (GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (pad)) == GST_PAD_REQUEST)
+    (*count)++;
+}
+
+static guint
+request_pads (GstElement * element)
+{
+  GstIterator *iter;
+  guint pads = 0;
+
+  iter = gst_element_iterate_pads (element);
+  fail_unless (gst_iterator_foreach (iter, count_request_pad, &pads) ==
+      GST_ITERATOR_DONE);
+  gst_iterator_free (iter);
+
+  return pads;
+}
+
+static GstPadLinkReturn
+refuse_to_link (GstPad * pad, GstObject * parent, GstPad * peer)
+{
+  return GST_PAD_LINK_REFUSED;
+}
+
+typedef struct _GstFakeReqSink GstFakeReqSink;
+typedef struct _GstFakeReqSinkClass GstFakeReqSinkClass;
+
+struct _GstFakeReqSink
+{
+  GstElement element;
+};
+
+struct _GstFakeReqSinkClass
+{
+  GstElementClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_fakereqsink_get_type (void);
+
+static GstStaticPadTemplate fakereqsink_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink_%u",
+    GST_PAD_SINK,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS_ANY);
+
+G_DEFINE_TYPE (GstFakeReqSink, gst_fakereqsink, GST_TYPE_ELEMENT);
+
+static GstPad *
+gst_fakereqsink_request_new_pad (GstElement * element, GstPadTemplate * templ,
+    const gchar * name, const GstCaps * caps)
+{
+  GstPad *pad;
+  pad = gst_pad_new_from_static_template (&fakereqsink_sink_template, name);
+  gst_pad_set_link_function (pad, refuse_to_link);
+  gst_element_add_pad (GST_ELEMENT_CAST (element), pad);
+  return pad;
+}
+
+static void
+gst_fakereqsink_release_pad (GstElement * element, GstPad * pad)
+{
+  gst_pad_set_active (pad, FALSE);
+  gst_element_remove_pad (element, pad);
+}
+
+static void
+gst_fakereqsink_class_init (GstFakeReqSinkClass * klass)
+{
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_set_static_metadata (gstelement_class,
+      "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));
+
+  gstelement_class->request_new_pad = gst_fakereqsink_request_new_pad;
+  gstelement_class->release_pad = gst_fakereqsink_release_pad;
+}
+
+static void
+gst_fakereqsink_init (GstFakeReqSink * fakereqsink)
+{
+}
+
+static void
+test_link (const gchar * expectation, const gchar * srcname,
+    const gchar * srcpad, const gchar * srcstate, const gchar * sinkname,
+    const gchar * sinkpad, const gchar * sinkstate)
+{
+  GstElement *src, *sink, *othersrc, *othersink;
+  guint src_pads, sink_pads;
+
+  if (g_strcmp0 (srcname, "requestsrc") == 0)
+    src = gst_element_factory_make ("tee", NULL);
+  else if (g_strcmp0 (srcname, "requestsink") == 0)
+    src = gst_element_factory_make ("funnel", NULL);
+  else if (g_strcmp0 (srcname, "staticsrc") == 0)
+    src = gst_element_factory_make ("fakesrc", NULL);
+  else if (g_strcmp0 (srcname, "staticsink") == 0)
+    src = gst_element_factory_make ("fakesink", NULL);
+  else
+    g_assert_not_reached ();
+
+  if (g_strcmp0 (sinkname, "requestsink") == 0)
+    sink = gst_element_factory_make ("funnel", NULL);
+  else if (g_strcmp0 (sinkname, "requestsrc") == 0)
+    sink = gst_element_factory_make ("tee", NULL);
+  else if (g_strcmp0 (sinkname, "staticsink") == 0)
+    sink = gst_element_factory_make ("fakesink", NULL);
+  else if (g_strcmp0 (sinkname, "staticsrc") == 0)
+    sink = gst_element_factory_make ("fakesrc", NULL);
+  else if (g_strcmp0 (sinkname, "fakerequestsink") == 0)
+    sink = gst_element_factory_make ("fakereqsink", NULL);
+  else
+    g_assert_not_reached ();
+
+  othersrc = gst_element_factory_make ("fakesrc", NULL);
+  othersink = gst_element_factory_make ("fakesink", NULL);
+
+  if (g_strcmp0 (srcstate, "linked") == 0)
+    fail_unless (gst_element_link_pads (src, srcpad, othersink, NULL));
+  if (g_strcmp0 (sinkstate, "linked") == 0)
+    fail_unless (gst_element_link_pads (othersrc, NULL, sink, sinkpad));
+  if (g_strcmp0 (srcstate, "unlinkable") == 0) {
+    GstPad *pad = gst_element_get_static_pad (src, srcpad ? srcpad : "src");
+    gst_pad_set_link_function (pad, refuse_to_link);
+    gst_object_unref (pad);
+  }
+  if (g_strcmp0 (sinkstate, "unlinkable") == 0) {
+    GstPad *pad = gst_element_get_static_pad (sink, sinkpad ? sinkpad : "sink");
+    gst_pad_set_link_function (pad, refuse_to_link);
+    gst_object_unref (pad);
+  }
+
+  src_pads = request_pads (src);
+  sink_pads = request_pads (sink);
+  if (g_strcmp0 (expectation, "OK") == 0) {
+    fail_unless (gst_element_link_pads (src, srcpad, sink, sinkpad));
+    if (g_str_has_prefix (srcname, "request")) {
+      fail_unless_equals_int (request_pads (src), src_pads + 1);
+    } else {
+      fail_unless_equals_int (request_pads (src), src_pads);
+    }
+    if (g_str_has_prefix (sinkname, "request")) {
+      fail_unless_equals_int (request_pads (sink), sink_pads + 1);
+    } else {
+      fail_unless_equals_int (request_pads (sink), sink_pads);
+    }
+  } else {
+    fail_if (gst_element_link_pads (src, srcpad, sink, sinkpad));
+    fail_unless_equals_int (request_pads (src), src_pads);
+    fail_unless_equals_int (request_pads (sink), sink_pads);
+  }
+
+  gst_object_unref (othersrc);
+  gst_object_unref (othersink);
+
+  gst_object_unref (src);
+  gst_object_unref (sink);
+}
+
+GST_START_TEST (test_element_link)
+{
+  /* Successful cases */
+
+  gst_element_register (NULL, "fakereqsink", GST_RANK_NONE,
+      gst_fakereqsink_get_type ());
+
+  test_link ("OK", "staticsrc", "src", "", "staticsink", "sink", "");
+  test_link ("OK", "staticsrc", "src", "", "requestsink", "sink_0", "");
+  test_link ("OK", "staticsrc", "src", "", "staticsink", NULL, "");
+  test_link ("OK", "staticsrc", "src", "", "requestsink", NULL, "");
+  test_link ("OK", "requestsrc", "src_0", "", "staticsink", "sink", "");
+  test_link ("OK", "requestsrc", "src_0", "", "requestsink", "sink_0", "");
+  test_link ("OK", "requestsrc", "src_0", "", "staticsink", NULL, "");
+  test_link ("OK", "requestsrc", "src_0", "", "requestsink", NULL, "");
+  test_link ("OK", "staticsrc", NULL, "", "staticsink", "sink", "");
+  test_link ("OK", "staticsrc", NULL, "", "requestsink", "sink_0", "");
+  test_link ("OK", "staticsrc", NULL, "", "staticsink", NULL, "");
+  test_link ("OK", "staticsrc", NULL, "", "requestsink", NULL, "");
+  test_link ("OK", "requestsrc", NULL, "", "staticsink", "sink", "");
+  test_link ("OK", "requestsrc", NULL, "", "requestsink", "sink_0", "");
+  test_link ("OK", "requestsrc", NULL, "", "staticsink", NULL, "");
+  test_link ("OK", "requestsrc", NULL, "", "requestsink", NULL, "");
+
+  /* Failure cases */
+
+  test_link ("NOK", "staticsrc", "missing", "", "staticsink", "sink", "");
+  test_link ("NOK", "staticsink", "sink", "", "staticsink", "sink", "");
+  test_link ("NOK", "staticsrc", "src", "linked", "staticsink", "sink", "");
+  test_link ("NOK", "staticsrc", "src", "", "staticsink", "missing", "");
+  test_link ("NOK", "staticsrc", "src", "", "staticsrc", "src", "");
+  test_link ("NOK", "staticsrc", "src", "", "staticsink", "sink", "linked");
+  test_link ("NOK", "staticsrc", "src", "", "staticsink", "sink", "unlinkable");
+  test_link ("NOK", "staticsrc", NULL, "", "staticsink", "sink", "unlinkable");
+  test_link ("NOK", "staticsrc", NULL, "", "staticsink", NULL, "unlinkable");
+  test_link ("NOK", "requestsrc", "missing", "", "staticsink", "sink", "");
+  test_link ("NOK", "requestsink", "sink_0", "", "staticsink", "sink", "");
+  test_link ("NOK", "requestsrc", "src_0", "linked", "staticsink", "sink", "");
+  test_link ("NOK", "requestsrc", "src_0", "", "staticsink", "missing", "");
+  test_link ("NOK", "requestsrc", "src_0", "", "staticsrc", "src", "");
+  test_link ("NOK", "requestsrc", "src_0", "", "staticsink", "sink", "linked");
+  test_link ("NOK", "requestsrc", "src_0", "", "staticsink", "sink",
+      "unlinkable");
+  test_link ("NOK", "requestsrc", NULL, "", "staticsink", "sink", "unlinkable");
+  test_link ("NOK", "requestsrc", NULL, "", "staticsink", NULL, "unlinkable");
+  test_link ("NOK", "staticsrc", "missing", "", "requestsink", "sink_0", "");
+  test_link ("NOK", "staticsink", "sink", "", "requestsink", "sink_0", "");
+  test_link ("NOK", "staticsrc", "src", "linked", "requestsink", "sink_0", "");
+  test_link ("NOK", "staticsrc", "src", "", "requestsink", "missing", "");
+  test_link ("NOK", "staticsrc", "src", "", "requestsrc", "src_0", "");
+  test_link ("NOK", "staticsrc", "src", "", "requestsink", "sink_0", "linked");
+  test_link ("NOK", "staticsrc", "src", "unlinkable", "requestsink",
+      "sink_0", "");
+  test_link ("NOK", "staticsrc", NULL, "unlinkable", "requestsink",
+      "sink_0", "");
+  test_link ("NOK", "staticsrc", NULL, "unlinkable", "requestsink", NULL, "");
+  test_link ("NOK", "requestsrc", "src_0", "", "staticsink", NULL,
+      "unlinkable");
+  test_link ("NOK", "requestsrc", NULL, "", "fakerequestsink", NULL, "");
+}
+
+GST_END_TEST;
+
+typedef struct _GstTestPadReqSink GstTestPadReqSink;
+typedef struct _GstTestPadReqSinkClass GstTestPadReqSinkClass;
+
+struct _GstTestPadReqSink
+{
+  GstElement element;
+};
+
+struct _GstTestPadReqSinkClass
+{
+  GstElementClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_testpadreqsink_get_type (void);
+
+static GstStaticPadTemplate testpadreqsink_video_template =
+GST_STATIC_PAD_TEMPLATE ("video_%u",
+    GST_PAD_SINK,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS ("video/x-raw"));
+
+static GstStaticPadTemplate testpadreqsink_audio_template =
+GST_STATIC_PAD_TEMPLATE ("audio_%u",
+    GST_PAD_SINK,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS ("audio/x-raw"));
+
+G_DEFINE_TYPE (GstTestPadReqSink, gst_testpadreqsink, GST_TYPE_ELEMENT);
+
+static GstPad *
+gst_testpadreqsink_request_new_pad (GstElement * element,
+    GstPadTemplate * templ, const gchar * name, const GstCaps * caps)
+{
+  GstPad *pad;
+  pad = gst_pad_new_from_template (templ, name);
+  gst_pad_set_active (pad, TRUE);
+  gst_element_add_pad (GST_ELEMENT_CAST (element), pad);
+  return pad;
+}
+
+static void
+gst_testpadreqsink_release_pad (GstElement * element, GstPad * pad)
+{
+  gst_pad_set_active (pad, FALSE);
+  gst_element_remove_pad (element, pad);
+}
+
+static void
+gst_testpadreqsink_class_init (GstTestPadReqSinkClass * klass)
+{
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_set_static_metadata (gstelement_class,
+      "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));
+
+  gstelement_class->request_new_pad = gst_testpadreqsink_request_new_pad;
+  gstelement_class->release_pad = gst_testpadreqsink_release_pad;
+}
+
+static void
+gst_testpadreqsink_init (GstTestPadReqSink * testpadeqsink)
+{
+}
+
+static GstCaps *padreqsink_query_caps = NULL;
+
+static gboolean
+testpadreqsink_peer_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  gboolean res;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CAPS:
+      if (padreqsink_query_caps) {
+        gst_query_set_caps_result (query, padreqsink_query_caps);
+        res = TRUE;
+        break;
+      }
+    default:
+      res = gst_pad_query_default (pad, parent, query);
+      break;
+  }
+
+  return res;
+}
+
+static void
+check_get_compatible_pad_request (GstElement * element, GstCaps * peer_caps,
+    GstCaps * filter, gboolean should_get_pad, const gchar * pad_tmpl_name)
+{
+  GstPad *peer, *requested;
+  GstPadTemplate *tmpl;
+
+  gst_caps_replace (&padreqsink_query_caps, peer_caps);
+  peer = gst_pad_new ("src", GST_PAD_SRC);
+  gst_pad_set_query_function (peer, testpadreqsink_peer_query);
+  requested = gst_element_get_compatible_pad (element, peer, filter);
+
+  if (should_get_pad) {
+    fail_unless (requested != NULL);
+    if (pad_tmpl_name) {
+      tmpl = gst_pad_get_pad_template (requested);
+      fail_unless (strcmp (GST_PAD_TEMPLATE_NAME_TEMPLATE (tmpl),
+              pad_tmpl_name) == 0);
+      gst_object_unref (tmpl);
+    }
+    gst_element_release_request_pad (element, requested);
+    gst_object_unref (requested);
+  } else {
+    fail_unless (requested == NULL);
+  }
+
+  if (peer_caps)
+    gst_caps_unref (peer_caps);
+  if (filter)
+    gst_caps_unref (filter);
+  gst_object_unref (peer);
+}
+
+GST_START_TEST (test_element_get_compatible_pad_request)
+{
+  GstElement *element;
+
+  gst_element_register (NULL, "testpadreqsink", GST_RANK_NONE,
+      gst_testpadreqsink_get_type ());
+
+  element = gst_element_factory_make ("testpadreqsink", NULL);
+
+  /* Try with a peer pad with any caps and no filter,
+   * returning any pad is ok */
+  check_get_compatible_pad_request (element, NULL, NULL, TRUE, NULL);
+  /* Try with a peer pad with any caps and video as filter */
+  check_get_compatible_pad_request (element, NULL,
+      gst_caps_from_string ("video/x-raw"), TRUE, "video_%u");
+  /* Try with a peer pad with any caps and audio as filter */
+  check_get_compatible_pad_request (element, NULL,
+      gst_caps_from_string ("audio/x-raw"), TRUE, "audio_%u");
+  /* Try with a peer pad with any caps and fake caps as filter */
+  check_get_compatible_pad_request (element, NULL,
+      gst_caps_from_string ("foo/bar"), FALSE, NULL);
+
+  /* Try with a peer pad with video caps and no caps as filter */
+  check_get_compatible_pad_request (element,
+      gst_caps_from_string ("video/x-raw"), NULL, TRUE, "video_%u");
+  /* Try with a peer pad with audio caps and no caps as filter */
+  check_get_compatible_pad_request (element,
+      gst_caps_from_string ("audio/x-raw"), NULL, TRUE, "audio_%u");
+  /* Try with a peer pad with video caps and foo caps as filter */
+  check_get_compatible_pad_request (element,
+      gst_caps_from_string ("video/x-raw"), gst_caps_from_string ("foo/bar"),
+      FALSE, NULL);
+
+  gst_caps_replace (&padreqsink_query_caps, NULL);
+  gst_object_unref (element);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_utils_suite (void)
 {
@@ -1331,7 +1728,9 @@
   tcase_add_test (tc_chain, test_parse_bin_from_description);
 #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_unlink);
+  tcase_add_test (tc_chain, test_element_get_compatible_pad_request);
   tcase_add_test (tc_chain, test_set_value_from_string);
   tcase_add_test (tc_chain, test_binary_search);
 
diff --git a/tests/check/gst/gstvalue.c b/tests/check/gst/gstvalue.c
index 7b913f5..18ce2f5 100644
--- a/tests/check/gst/gstvalue.c
+++ b/tests/check/gst/gstvalue.c
@@ -497,6 +497,190 @@
 
 GST_END_TEST;
 
+static void
+check_flagset_mask_serialisation (GValue * value, guint test_flags,
+    guint test_mask)
+{
+  gchar *string;
+  gst_value_set_flagset (value, test_flags, test_mask);
+
+  /* Normalise our test flags against the mask now for easier testing,
+   * as that's what we expect to get back from the flagset after it
+   * normalises internally */
+  test_flags &= test_mask;
+
+  /* Check the values got stored correctly */
+  fail_unless (gst_value_get_flagset_flags (value) == test_flags,
+      "resulting flags value is 0x%u, not 0x%x",
+      gst_value_get_flagset_flags (value), test_flags);
+  fail_unless (gst_value_get_flagset_mask (value) == test_mask,
+      "resulting mask is 0x%u, not 0x%x",
+      gst_value_get_flagset_mask (value), test_mask);
+
+  string = gst_value_serialize (value);
+  fail_if (string == NULL, "could not serialize flagset");
+
+  GST_DEBUG ("Serialized flagset to: %s", string);
+
+  fail_unless (gst_value_deserialize (value, string),
+      "could not deserialize %s", string);
+
+  fail_unless (gst_value_get_flagset_flags (value) == test_flags,
+      "resulting flags value is 0x%u, not 0x%x, for string %s",
+      gst_value_get_flagset_flags (value), test_flags, string);
+
+  fail_unless (gst_value_get_flagset_mask (value) == test_mask,
+      "resulting mask is 0x%u, not 0x%x, for string %s",
+      gst_value_get_flagset_mask (value), test_mask, string);
+
+  g_free (string);
+}
+
+GST_START_TEST (test_flagset)
+{
+  GValue value = G_VALUE_INIT;
+  GValue value2 = G_VALUE_INIT;
+  GValue dest = G_VALUE_INIT;
+  gchar *string;
+  GType test_flagset_type;
+  guint test_flags, test_mask;
+
+  /* Test serialisation of abstract type */
+  g_value_init (&value, GST_TYPE_FLAG_SET);
+
+  test_flags = 0xf1f1;
+  test_mask = 0xffff;
+
+  gst_value_set_flagset (&value, test_flags, test_mask);
+  string = gst_value_serialize (&value);
+  fail_if (string == NULL, "could not serialize flagset");
+
+  fail_unless (gst_value_deserialize (&value, string),
+      "could not deserialize %s", string);
+
+  fail_unless (gst_value_get_flagset_flags (&value) == test_flags,
+      "resulting value is 0x%u, not 0x%x, for string %s",
+      gst_value_get_flagset_flags (&value), test_flags, string);
+
+  fail_unless (gst_value_get_flagset_mask (&value) == test_mask,
+      "resulting value is 0x%u, not 0x%x, for string %s",
+      gst_value_get_flagset_mask (&value), test_mask, string);
+
+  g_free (string);
+  g_value_unset (&value);
+
+  /* Check we can't wrap a random non-flags type */
+  ASSERT_CRITICAL (gst_flagset_register (GST_TYPE_OBJECT));
+
+  test_flagset_type = gst_flagset_register (GST_TYPE_SEEK_FLAGS);
+
+  fail_unless (g_type_is_a (test_flagset_type, GST_TYPE_FLAG_SET));
+
+  g_value_init (&value, test_flagset_type);
+
+  test_flags =
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE |
+      GST_SEEK_FLAG_TRICKMODE_KEY_UNITS;
+  test_mask =
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE |
+      GST_SEEK_FLAG_TRICKMODE_NO_AUDIO;
+
+  check_flagset_mask_serialisation (&value, test_flags, test_mask);
+  /* Check serialisation works with the generic 'exact' flag */
+  check_flagset_mask_serialisation (&value, test_flags,
+      GST_FLAG_SET_MASK_EXACT);
+
+  /* Check deserialisation of flagset in 'flags' form, without
+   * the hex strings at the start */
+  test_flags = GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE;
+  test_mask = GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE |
+      GST_SEEK_FLAG_TRICKMODE_NO_AUDIO;
+  string = g_strdup ("+flush+trickmode/trickmode-no-audio");
+
+  fail_unless (gst_value_deserialize (&value, string),
+      "could not deserialize %s", string);
+
+  GST_DEBUG ("Deserialized %s to 0x%x:0x%x", string,
+      gst_value_get_flagset_flags (&value),
+      gst_value_get_flagset_mask (&value));
+
+  fail_unless (gst_value_get_flagset_flags (&value) == test_flags,
+      "resulting flags value is 0x%u, not 0x%x, for string %s",
+      gst_value_get_flagset_flags (&value), (test_flags & test_mask), string);
+
+  fail_unless (gst_value_get_flagset_mask (&value) == test_mask,
+      "resulting mask is 0x%u, not 0x%x, for string %s",
+      gst_value_get_flagset_mask (&value), test_mask, string);
+
+  g_free (string);
+  g_value_unset (&value);
+
+  /* Test that fixating don't-care fields works, using our
+   * sub-type flagset for good measure  */
+  g_value_init (&value, test_flagset_type);
+  gst_value_set_flagset (&value, test_flags, test_mask);
+
+  fail_unless (gst_value_fixate (&dest, &value));
+  fail_unless (gst_value_get_flagset_flags (&dest) == test_flags);
+  fail_unless (gst_value_get_flagset_mask (&dest) == GST_FLAG_SET_MASK_EXACT);
+
+  g_value_unset (&value);
+
+  /* Intersection tests */
+  g_value_init (&value, GST_TYPE_FLAG_SET);
+  g_value_init (&value2, test_flagset_type);
+
+  /* We want Accurate, but not Snap-Before */
+  gst_value_set_flagset (&value, GST_SEEK_FLAG_ACCURATE,
+      GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_SNAP_BEFORE);
+
+  /* This only cares that things are flushing */
+  gst_value_set_flagset (&value2, GST_SEEK_FLAG_FLUSH, GST_SEEK_FLAG_FLUSH);
+
+  test_flags = GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_FLUSH;
+  test_mask =
+      GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE;
+
+  /* GstFlagSet should always intersect with itself */
+  g_value_unset (&dest);
+  fail_unless (gst_value_intersect (&dest, &value, &value));
+
+  /* GstFlagSet subtype should intersect with itself */
+  g_value_unset (&dest);
+  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_intersect (&dest, &value2, &value));
+
+  g_value_unset (&dest);
+  fail_unless (gst_value_intersect (&dest, &value, &value2));
+
+  fail_unless (gst_value_get_flagset_flags (&dest) == test_flags,
+      "resulting flags value is 0x%u, not 0x%x",
+      gst_value_get_flagset_flags (&dest), test_flags);
+
+  fail_unless (gst_value_get_flagset_mask (&dest) == test_mask,
+      "resulting mask is 0x%u, not 0x%x",
+      gst_value_get_flagset_mask (&dest), test_mask);
+
+  gst_value_set_flagset (&value,
+      GST_SEEK_FLAG_ACCURATE, GST_SEEK_FLAG_ACCURATE);
+  gst_value_set_flagset (&value2, GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_FLUSH,
+      GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_SNAP_BEFORE | GST_SEEK_FLAG_FLUSH);
+  /* Check that accurate alone is a subset of accurate+!snap_before+flush,
+   * but not vice-versa */
+  fail_unless (gst_value_is_subset (&value, &value2));
+  fail_if (gst_value_is_subset (&value2, &value));
+
+  g_value_unset (&dest);
+  g_value_unset (&value);
+  g_value_unset (&value2);
+}
+
+GST_END_TEST;
+
+
 GST_START_TEST (test_string)
 {
   const gchar *try[] = {
@@ -542,21 +726,18 @@
     "\"foo\\%\"", "foo%"}, {
     "\"0123456789_-+/:.\"", "0123456789_-+/:."}, {
     "\"Hello\\ World\"", "Hello World"}, {
+    "\"Hello\\ World", "\"Hello\\ World"}, {
+    "\"\\", "\"\\"}, {
+    "\"\\0", "\"\\0"}, {
     "", ""},                    /* empty strings */
     {
     "\"\"", ""},                /* quoted empty string -> empty string */
         /* Expected FAILURES: */
     {
-    "\"", NULL},                /* missing second quote */
-    {
-    "\"Hello\\ World", NULL},   /* missing second quote */
-    {
-    "\"\\", NULL},              /* quote at end, missing second quote */
-    {
-    "\"\\0", NULL},             /* missing second quote */
-    {
     "\"\\0\"", NULL},           /* unfinished escaped character */
     {
+    "\"", NULL},                /* solitary quote */
+    {
     "\" \"", NULL},             /* spaces must be escaped */
 #if 0
         /* FIXME 0.9: this test should fail, but it doesn't */
@@ -2907,6 +3088,7 @@
   tcase_add_test (tc_chain, test_stepped_range_collection);
   tcase_add_test (tc_chain, test_stepped_int_range_parsing);
   tcase_add_test (tc_chain, test_stepped_int_range_ops);
+  tcase_add_test (tc_chain, test_flagset);
 
   return s;
 }
diff --git a/tests/check/libs/adapter.c b/tests/check/libs/adapter.c
index a99c8e0..95d2952 100644
--- a/tests/check/libs/adapter.c
+++ b/tests/check/libs/adapter.c
@@ -807,6 +807,149 @@
 
 GST_END_TEST;
 
+/* Fill a buffer with a sequence of 32 bit ints and read a couple of front
+ * buffers using get_buffer, checking that they're still in the right order */
+GST_START_TEST (test_get_list)
+{
+  GstAdapter *adapter;
+  int i = 0;
+  gsize size = 0;
+  GList *list, *walk;
+  GstBuffer *buf;
+  gsize left;
+  GstMapInfo info;
+  guint8 *ptr;
+
+  adapter = create_and_fill_adapter ();
+  size = gst_adapter_available (adapter);
+
+  list = gst_adapter_get_list (adapter, sizeof (guint32) * 5);
+  fail_unless (list != NULL);
+
+  for (walk = list; walk; walk = g_list_next (walk)) {
+    buf = walk->data;
+
+    fail_unless (gst_buffer_map (buf, &info, GST_MAP_READ));
+
+    ptr = info.data;
+    left = info.size;
+
+    while (left > 0) {
+      fail_unless (GST_READ_UINT32_LE (ptr) == i);
+      i++;
+      ptr += sizeof (guint32);
+      left -= sizeof (guint32);
+    }
+    gst_buffer_unmap (buf, &info);
+
+    gst_buffer_unref (buf);
+  }
+  g_list_free (list);
+
+  fail_unless (gst_adapter_available (adapter) == size,
+      "All data should remain in the adapter");
+
+  g_object_unref (adapter);
+}
+
+GST_END_TEST;
+
+/* Fill a buffer with a sequence of 32 bit ints and read them back out
+ * using take_buffer, checking that they're still in the right order */
+GST_START_TEST (test_take_buffer_list)
+{
+  GstAdapter *adapter;
+  int i = 0;
+
+  adapter = create_and_fill_adapter ();
+  while (gst_adapter_available (adapter) >= sizeof (guint32)) {
+    GstBufferList *buffer_list;
+    GstBuffer *buf;
+    gsize left;
+    GstMapInfo info;
+    guint8 *ptr;
+    guint n, num;
+
+    buffer_list = gst_adapter_take_buffer_list (adapter, sizeof (guint32) * 5);
+    fail_unless (buffer_list != NULL);
+    num = gst_buffer_list_length (buffer_list);
+    fail_unless (num > 0);
+
+    for (n = 0; n < num; ++n) {
+      buf = gst_buffer_list_get (buffer_list, n);
+
+      fail_unless (gst_buffer_map (buf, &info, GST_MAP_READ));
+
+      ptr = info.data;
+      left = info.size;
+
+      while (left > 0) {
+        fail_unless (GST_READ_UINT32_LE (ptr) == i);
+        i++;
+        ptr += sizeof (guint32);
+        left -= sizeof (guint32);
+      }
+      gst_buffer_unmap (buf, &info);
+    }
+    gst_buffer_list_unref (buffer_list);
+  }
+  fail_unless (gst_adapter_available (adapter) == 0,
+      "Data was left in the adapter");
+
+  g_object_unref (adapter);
+}
+
+GST_END_TEST;
+
+/* Fill a buffer with a sequence of 32 bit ints and read a couple of front
+ * buffers using get_buffer, checking that they're still in the right order */
+GST_START_TEST (test_get_buffer_list)
+{
+  GstAdapter *adapter;
+  int i = 0;
+  gsize size = 0;
+  GstBufferList *buffer_list;
+  GstBuffer *buf;
+  gsize left;
+  GstMapInfo info;
+  guint8 *ptr;
+  guint n, num;
+
+  adapter = create_and_fill_adapter ();
+  size = gst_adapter_available (adapter);
+
+  buffer_list = gst_adapter_get_buffer_list (adapter, sizeof (guint32) * 5);
+  fail_unless (buffer_list != NULL);
+
+  num = gst_buffer_list_length (buffer_list);
+  fail_unless (num > 0);
+
+  for (n = 0; n < num; ++n) {
+    buf = gst_buffer_list_get (buffer_list, n);
+
+    fail_unless (gst_buffer_map (buf, &info, GST_MAP_READ));
+
+    ptr = info.data;
+    left = info.size;
+
+    while (left > 0) {
+      fail_unless (GST_READ_UINT32_LE (ptr) == i);
+      i++;
+      ptr += sizeof (guint32);
+      left -= sizeof (guint32);
+    }
+    gst_buffer_unmap (buf, &info);
+  }
+  gst_buffer_list_unref (buffer_list);
+
+  fail_unless (gst_adapter_available (adapter) == size,
+      "All data should remain in the adapter");
+
+  g_object_unref (adapter);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_merge)
 {
   GstAdapter *adapter;
@@ -916,6 +1059,9 @@
   tcase_add_test (tc_chain, test_timestamp);
   tcase_add_test (tc_chain, test_scan);
   tcase_add_test (tc_chain, test_take_list);
+  tcase_add_test (tc_chain, test_get_list);
+  tcase_add_test (tc_chain, test_take_buffer_list);
+  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);
 
diff --git a/tests/check/libs/baseparse.c b/tests/check/libs/baseparse.c
index 4491c41..8113e30 100644
--- a/tests/check/libs/baseparse.c
+++ b/tests/check/libs/baseparse.c
@@ -28,6 +28,12 @@
 
 static GstPad *mysrcpad, *mysinkpad;
 static GstElement *parsetest;
+static GstBus *bus;
+static GMainLoop *loop = NULL;
+static gboolean have_eos = FALSE;
+static gboolean have_data = FALSE;
+static gint buffer_count = 0;
+static gboolean caps_set = FALSE;
 
 #define TEST_VIDEO_WIDTH 640
 #define TEST_VIDEO_HEIGHT 480
@@ -75,13 +81,27 @@
 gst_parser_tester_handle_frame (GstBaseParse * parse,
     GstBaseParseFrame * frame, gint * skipsize)
 {
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  if (caps_set == FALSE) {
+    GstCaps *caps;
+    /* push caps */
+    caps =
+        gst_caps_new_simple ("video/x-test-custom", "width", G_TYPE_INT,
+        TEST_VIDEO_WIDTH, "height", G_TYPE_INT, TEST_VIDEO_HEIGHT, "framerate",
+        GST_TYPE_FRACTION, TEST_VIDEO_FPS_N, TEST_VIDEO_FPS_D, NULL);
+    gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), caps);
+    gst_caps_unref (caps);
+    caps_set = TRUE;
+  }
+
   while (frame->buffer && gst_buffer_get_size (frame->buffer) >= 8) {
     GST_BUFFER_DURATION (frame->buffer) =
         gst_util_uint64_scale_round (GST_SECOND, TEST_VIDEO_FPS_D,
         TEST_VIDEO_FPS_N);
-    gst_base_parse_finish_frame (parse, frame, 8);
+    ret = gst_base_parse_finish_frame (parse, frame, 8);
   }
-  return GST_FLOW_OK;
+  return ret;
 }
 
 static void
@@ -134,11 +154,17 @@
   parsetest = g_object_new (GST_PARSER_TESTER_TYPE, NULL);
   mysrcpad = gst_check_setup_src_pad (parsetest, &srctemplate);
   mysinkpad = gst_check_setup_sink_pad (parsetest, &sinktemplate);
+  bus = gst_bus_new ();
+  gst_element_set_bus (parsetest, bus);
 }
 
 static void
 cleanup_parsertest (void)
 {
+  /* release the bus first to get rid of all refcounts */
+  gst_element_set_bus (parsetest, NULL);
+  gst_object_unref (bus);
+
   gst_pad_set_active (mysrcpad, FALSE);
   gst_pad_set_active (mysinkpad, FALSE);
   gst_check_teardown_src_pad (parsetest);
@@ -184,6 +210,17 @@
 }
 
 static void
+check_no_error_received (void)
+{
+  GstMessage *msg;
+
+  msg = gst_bus_pop_filtered (bus, GST_MESSAGE_ERROR);
+  fail_unless (msg == NULL);
+  if (msg)
+    gst_message_unref (msg);
+}
+
+static void
 run_parser_playback_test (GList * input, gint expected_output, gdouble rate)
 {
   GstBuffer *buffer;
@@ -238,6 +275,8 @@
   g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
   buffers = NULL;
 
+  check_no_error_received ();
+
   cleanup_parsertest ();
 }
 
@@ -287,6 +326,134 @@
 
 GST_END_TEST;
 
+GST_START_TEST (parser_empty_stream)
+{
+  setup_parsertester ();
+
+  run_parser_playback_test (NULL, 0, 1.0);
+}
+
+GST_END_TEST;
+
+static GstFlowReturn
+_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstMapInfo map;
+  guint64 num;
+
+  gst_buffer_map (buffer, &map, GST_MAP_READ);
+
+  num = *(guint64 *) map.data;
+
+  fail_unless (buffer_count == num);
+  fail_unless (GST_BUFFER_PTS (buffer) ==
+      gst_util_uint64_scale_round (buffer_count, GST_SECOND * TEST_VIDEO_FPS_D,
+          TEST_VIDEO_FPS_N));
+  fail_unless (GST_BUFFER_DURATION (buffer) ==
+      gst_util_uint64_scale_round (GST_SECOND, TEST_VIDEO_FPS_D,
+          TEST_VIDEO_FPS_N));
+  gst_buffer_unmap (buffer, &map);
+  gst_buffer_unref (buffer);
+  buffer_count++;
+
+  have_data = TRUE;
+  return GST_FLOW_OK;
+}
+
+static gboolean
+_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GST_INFO_OBJECT (pad, "got %s event %p: %" GST_PTR_FORMAT,
+      GST_EVENT_TYPE_NAME (event), event, event);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_EOS:
+      if (loop) {
+        while (!g_main_loop_is_running (loop)) {
+          /* nothing */
+        };
+      }
+      have_eos = TRUE;
+      if (loop)
+        g_main_loop_quit (loop);
+      break;
+    default:
+      break;
+  }
+  gst_event_unref (event);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+_src_getrange (GstPad * pad, GstObject * parent, guint64 offset, guint length,
+    GstBuffer ** buffer)
+{
+  gboolean ret = FALSE;
+  if (offset >= 80 && have_eos == FALSE) {
+    ret = gst_element_seek (parsetest, -1.0, GST_FORMAT_TIME,
+        GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_FLUSH,
+        GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, gst_util_uint64_scale_round (5,
+            GST_SECOND * TEST_VIDEO_FPS_D, TEST_VIDEO_FPS_N));
+    fail_unless (ret == TRUE);
+    buffer_count = 0;
+  }
+
+  *buffer = create_test_buffer (offset / 8);
+
+  return GST_FLOW_OK;
+}
+
+static gboolean
+_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  gboolean res = FALSE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_SCHEDULING:{
+      gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEEKABLE, 1, -1, 0);
+      gst_query_add_scheduling_mode (query, GST_PAD_MODE_PULL);
+      res = TRUE;
+      break;
+    }
+    default:
+      GST_DEBUG_OBJECT (pad, "unhandled %s query", GST_QUERY_TYPE_NAME (query));
+      break;
+  }
+
+  return res;
+}
+
+GST_START_TEST (parser_reverse_playback)
+{
+  have_eos = FALSE;
+  have_data = FALSE;
+  loop = g_main_loop_new (NULL, FALSE);
+
+  setup_parsertester ();
+  gst_pad_set_getrange_function (mysrcpad, _src_getrange);
+  gst_pad_set_query_function (mysrcpad, _src_query);
+  gst_pad_set_chain_function (mysinkpad, _sink_chain);
+  gst_pad_set_event_function (mysinkpad, _sink_event);
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (parsetest, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  g_main_loop_run (loop);
+  fail_unless (have_eos == TRUE);
+  fail_unless (have_data == TRUE);
+
+  gst_element_set_state (parsetest, GST_STATE_NULL);
+
+  check_no_error_received ();
+  cleanup_parsertest ();
+
+  g_main_loop_unref (loop);
+  loop = NULL;
+}
+
+GST_END_TEST;
 
 static Suite *
 gst_baseparse_suite (void)
@@ -296,7 +463,9 @@
 
   suite_add_tcase (s, tc);
   tcase_add_test (tc, parser_playback);
+  tcase_add_test (tc, parser_empty_stream);
   tcase_add_test (tc, parser_reverse_playback_on_passthrough);
+  tcase_add_test (tc, parser_reverse_playback);
 
   return s;
 }
diff --git a/tests/check/libs/basesrc.c b/tests/check/libs/basesrc.c
index 9602b4c..82c6589 100644
--- a/tests/check/libs/basesrc.c
+++ b/tests/check/libs/basesrc.c
@@ -510,9 +510,11 @@
   fail_unless (user_data != NULL);
 
   if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
-    if (*last_event)
-      gst_event_unref (*last_event);
+    g_mutex_lock (&check_mutex);
+    fail_unless (*last_event == NULL);
     *last_event = gst_event_copy (event);
+    g_cond_signal (&check_cond);
+    g_mutex_unlock (&check_mutex);
   }
 
   return GST_PAD_PROBE_OK;
@@ -568,14 +570,26 @@
   state_ret = gst_element_get_state (pipe, NULL, NULL, -1);
   fail_unless (state_ret == GST_STATE_CHANGE_SUCCESS);
 
+  /* wait for the first segment to be posted, and flush it ... */
+  g_mutex_lock (&check_mutex);
+  while (seg_event == NULL)
+    g_cond_wait (&check_cond, &check_mutex);
+  gst_event_unref (seg_event);
+  seg_event = NULL;
+  g_mutex_unlock (&check_mutex);
+
   GST_INFO ("seeking");
 
   /* seek */
   event_ret = gst_element_send_event (pipe, rate_seek);
   fail_unless (event_ret == TRUE);
 
-  /* wait a second, then do controlled shutdown */
-  g_usleep (GST_USECOND * 1);
+  /* wait for the updated segment to be posted, posting EOS make the loop
+   * thread exit before the updated segment is posted ... */
+  g_mutex_lock (&check_mutex);
+  while (seg_event == NULL)
+    g_cond_wait (&check_cond, &check_mutex);
+  g_mutex_unlock (&check_mutex);
 
   /* shut down pipeline only (should send EOS message) ... */
   gst_element_send_event (pipe, gst_event_new_eos ());
diff --git a/tests/check/libs/bytereader.c b/tests/check/libs/bytereader.c
index ecb3ddb..fd4f95d 100644
--- a/tests/check/libs/bytereader.c
+++ b/tests/check/libs/bytereader.c
@@ -467,7 +467,17 @@
 GST_END_TEST;
 
 #define do_scan(r,m,p,o,s,x) \
-    fail_unless_equals_int (gst_byte_reader_masked_scan_uint32 (r,m,p,o,s), x);
+G_STMT_START {								\
+    fail_unless_equals_int (gst_byte_reader_masked_scan_uint32 (r,m,p,o,s), x); \
+    if (x != -1) { \
+      guint32 v, res_v; \
+      const guint8 *rdata = NULL; \
+      fail_unless (gst_byte_reader_peek_data (r, x + 4, &rdata)); \
+      res_v = GST_READ_UINT32_BE (rdata + x); \
+      fail_unless_equals_int (gst_byte_reader_masked_scan_uint32_peek (r,m,p,o,s,&v), x); \
+      fail_unless_equals_int (v, res_v); \
+    } \
+} G_STMT_END;
 
 GST_START_TEST (test_scan)
 {
@@ -686,6 +696,88 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_sub_reader)
+{
+  const guint8 memdata[] = {
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
+  };
+  GstByteReader reader = GST_BYTE_READER_INIT (memdata, sizeof (memdata));
+  GstByteReader sub;
+  const guint8 *data = NULL, *sub_data = NULL;
+  guint16 v = 0;
+
+  /* init sub reader */
+  fail_if (gst_byte_reader_peek_sub_reader (&reader, &sub, 17));
+  fail_unless (gst_byte_reader_peek_sub_reader (&reader, &sub, 16));
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&sub), 16);
+  fail_unless (gst_byte_reader_peek_data (&reader, 16, &data));
+  fail_unless (gst_byte_reader_peek_data (&sub, 16, &sub_data));
+  fail_unless (memcmp (data, sub_data, 16) == 0);
+
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&reader), 16);
+  fail_unless (gst_byte_reader_skip (&reader, 3));
+  fail_if (gst_byte_reader_peek_sub_reader (&reader, &sub, 14));
+  fail_unless (gst_byte_reader_peek_sub_reader (&reader, &sub, 13));
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&sub), 13);
+  fail_unless (gst_byte_reader_peek_data (&reader, 13, &data));
+  fail_unless (gst_byte_reader_peek_data (&sub, 13, &sub_data));
+  fail_unless (memcmp (data, sub_data, 13) == 0);
+  fail_unless (memcmp (memdata + 3, sub_data, 13) == 0);
+
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&reader), 13);
+  fail_unless (gst_byte_reader_peek_sub_reader (&reader, &sub, 3));
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&sub), 3);
+  fail_if (gst_byte_reader_peek_data (&sub, 10, &sub_data));
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0304);
+  fail_if (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&sub), 1);
+
+  fail_unless (gst_byte_reader_get_uint16_be (&reader, &v));
+  fail_unless_equals_int (v, 0x0304);
+  fail_unless (gst_byte_reader_get_uint16_be (&reader, &v));
+  fail_unless_equals_int (v, 0x0506);
+  fail_unless_equals_int (gst_byte_reader_get_remaining (&reader), 9);
+
+  /* get sub reader */
+  gst_byte_reader_init (&reader, memdata, sizeof (memdata));
+  fail_if (gst_byte_reader_get_sub_reader (&reader, &sub, 17));
+  fail_unless (gst_byte_reader_get_sub_reader (&reader, &sub, 16));
+  fail_if (gst_byte_reader_get_sub_reader (&reader, &sub, 1));
+  fail_unless (gst_byte_reader_get_sub_reader (&reader, &sub, 0));
+
+  gst_byte_reader_init (&reader, memdata, sizeof (memdata));
+  fail_unless (gst_byte_reader_get_sub_reader (&reader, &sub, 2));
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0001);
+  fail_if (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless (gst_byte_reader_get_sub_reader (&reader, &sub, 3));
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0203);
+  fail_if (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (gst_byte_reader_get_uint8_unchecked (&sub), 0x04);
+  fail_unless (gst_byte_reader_get_sub_reader (&reader, &sub, 9));
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0506);
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0708);
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x090a);
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0b0c);
+  fail_if (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (gst_byte_reader_get_uint8_unchecked (&sub), 0x0d);
+  fail_if (gst_byte_reader_get_sub_reader (&reader, &sub, 3));
+  fail_unless (gst_byte_reader_get_sub_reader (&reader, &sub, 2));
+  fail_unless (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_unless_equals_int (v, 0x0e0f);
+  fail_if (gst_byte_reader_get_uint16_be (&sub, &v));
+  fail_if (gst_byte_reader_get_uint16_be (&reader, &v));
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_byte_reader_suite (void)
 {
@@ -705,6 +797,7 @@
   tcase_add_test (tc_chain, test_scan);
   tcase_add_test (tc_chain, test_string_funcs);
   tcase_add_test (tc_chain, test_dup_string);
+  tcase_add_test (tc_chain, test_sub_reader);
 
   return s;
 }
diff --git a/tests/check/libs/collectpads.c b/tests/check/libs/collectpads.c
index 9a3cb5d..4ad0c2a 100644
--- a/tests/check/libs/collectpads.c
+++ b/tests/check/libs/collectpads.c
@@ -1005,6 +1005,58 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_clip_running_time)
+{
+  GstBuffer *buf;
+  GstCollectData data = { 0 };
+
+  buf = gst_buffer_new ();
+  data.pad = gst_pad_new ("clip_test", GST_PAD_SRC);
+
+  GST_BUFFER_PTS (buf) = 0;
+  GST_BUFFER_DTS (buf) = 0;
+  gst_segment_init (&data.segment, GST_FORMAT_TIME);
+
+  gst_collect_pads_clip_running_time (NULL, &data, buf, &buf, NULL);
+
+  fail_unless (buf != NULL);
+  fail_unless_equals_uint64 (GST_BUFFER_PTS (buf), 0);
+  fail_unless_equals_uint64 (GST_BUFFER_DTS (buf), 0);
+  fail_unless_equals_int64 (GST_COLLECT_PADS_DTS (&data), 0);
+
+  GST_BUFFER_PTS (buf) = 1000;
+  GST_BUFFER_DTS (buf) = 0;
+  data.segment.start = 1000;
+
+  gst_collect_pads_clip_running_time (NULL, &data, buf, &buf, NULL);
+
+  fail_unless (buf != NULL);
+  fail_unless_equals_uint64 (GST_BUFFER_PTS (buf), 0);
+  fail_unless_equals_uint64 (GST_BUFFER_DTS (buf), GST_CLOCK_TIME_NONE);
+  fail_unless_equals_int64 (GST_COLLECT_PADS_DTS (&data), -1000);
+
+  GST_BUFFER_PTS (buf) = 1000;
+  GST_BUFFER_DTS (buf) = GST_CLOCK_TIME_NONE;
+
+  gst_collect_pads_clip_running_time (NULL, &data, buf, &buf, NULL);
+
+  fail_unless (buf != NULL);
+  fail_unless_equals_uint64 (GST_BUFFER_PTS (buf), 0);
+  fail_unless_equals_uint64 (GST_BUFFER_DTS (buf), GST_CLOCK_TIME_NONE);
+  fail_if (GST_COLLECT_PADS_DTS_IS_VALID (&data));
+
+  GST_BUFFER_PTS (buf) = 0;
+  GST_BUFFER_DTS (buf) = 0;
+
+  gst_collect_pads_clip_running_time (NULL, &data, buf, &buf, NULL);
+
+  fail_unless (buf == NULL);
+  gst_object_unref (data.pad);
+}
+
+GST_END_TEST;
+
+
 static Suite *
 gst_collect_pads_suite (void)
 {
@@ -1022,6 +1074,7 @@
   tcase_add_test (general, test_collect);
   tcase_add_test (general, test_collect_eos);
   tcase_add_test (general, test_collect_twice);
+  tcase_add_test (general, test_clip_running_time);
 
   buffers = tcase_create ("buffers");
   suite_add_tcase (suite, buffers);
diff --git a/tests/check/libs/controller.c b/tests/check/libs/controller.c
index f385c6b..3a736cd 100644
--- a/tests/check/libs/controller.c
+++ b/tests/check/libs/controller.c
@@ -598,6 +598,72 @@
 GST_END_TEST;
 
 /* test retrieval of an array of values with get_value_array() */
+GST_START_TEST (controller_interpolation_linear_absolute_value_array)
+{
+  GstControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstElement *elem;
+  gdouble *raw_values;
+  GValue *g_values;
+  gint *values;
+
+  elem = gst_element_factory_make ("testobj", NULL);
+
+  /* new interpolation control source */
+  cs = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) cs;
+
+  fail_unless (gst_object_add_control_binding (GST_OBJECT (elem),
+          gst_direct_control_binding_new_absolute (GST_OBJECT (elem), "int",
+              cs)));
+
+  /* set interpolation mode */
+  g_object_set (cs, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
+
+  /* set control values */
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 100));
+
+  /* now pull in raw-values for some timestamps */
+  raw_values = g_new (gdouble, 3);
+
+  fail_unless (gst_control_source_get_value_array (cs,
+          0, GST_SECOND / 2, 3, raw_values));
+  fail_unless_equals_float ((raw_values)[0], 0);
+  fail_unless_equals_float ((raw_values)[1], 50);
+  fail_unless_equals_float ((raw_values)[2], 100);
+
+  g_free (raw_values);
+
+  /* now pull in mapped GValues for some timestamps */
+  g_values = g_new0 (GValue, 3);
+
+  fail_unless (gst_object_get_g_value_array (GST_OBJECT (elem), "int",
+          0, GST_SECOND / 2, 3, g_values));
+  fail_unless_equals_int (g_value_get_int (&g_values[0]), 0);
+  fail_unless_equals_int (g_value_get_int (&g_values[1]), 50);
+  fail_unless_equals_int (g_value_get_int (&g_values[2]), 100);
+
+  g_free (g_values);
+
+  /* now pull in mapped values for some timestamps */
+  values = g_new0 (gint, 3);
+
+  fail_unless (gst_object_get_value_array (GST_OBJECT (elem), "int",
+          0, GST_SECOND / 2, 3, values));
+  fail_unless_equals_int (values[0], 0);
+  fail_unless_equals_int (values[1], 50);
+  fail_unless_equals_int (values[2], 100);
+
+  g_free (values);
+
+  gst_object_unref (cs);
+  gst_object_unref (elem);
+}
+
+GST_END_TEST;
+
+/* test retrieval of an array of values with get_value_array() */
 GST_START_TEST (controller_interpolation_linear_value_array)
 {
   GstControlSource *cs;
@@ -1477,6 +1543,7 @@
   tcase_add_test (tc, controller_interpolation_cubic_too_few_cp);
   tcase_add_test (tc, controller_interpolation_unset);
   tcase_add_test (tc, controller_interpolation_unset_all);
+  tcase_add_test (tc, controller_interpolation_linear_absolute_value_array);
   tcase_add_test (tc, controller_interpolation_linear_value_array);
   tcase_add_test (tc, controller_interpolation_linear_invalid_values);
   tcase_add_test (tc, controller_interpolation_linear_default_values);
diff --git a/tests/check/libs/flowcombiner.c b/tests/check/libs/flowcombiner.c
index 372a7fc..6c634c1 100644
--- a/tests/check/libs/flowcombiner.c
+++ b/tests/check/libs/flowcombiner.c
@@ -152,6 +152,86 @@
 }
 
 GST_END_TEST;
+
+GST_START_TEST (test_clear)
+{
+  GstFlowCombiner *combiner;
+  GstPad *pad;
+  GstPad *peer;
+  GstSegment segment;
+  GstFlowReturn ret;
+
+  combiner = gst_flow_combiner_new ();
+
+  /* add a pad and make it return _FLUSHING */
+  pad = gst_pad_new ("src1", GST_PAD_SRC);
+  peer = gst_pad_new ("sink1", GST_PAD_SINK);
+  gst_pad_set_chain_function (peer, _sink_chain);
+  gst_pad_link (pad, peer);
+  gst_pad_set_active (peer, TRUE);
+  gst_pad_set_active (pad, TRUE);
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  gst_pad_push_event (pad, gst_event_new_stream_start ("test1"));
+  gst_pad_push_event (pad, gst_event_new_segment (&segment));
+  gst_flow_combiner_add_pad (combiner, pad);
+  sink_flowret = GST_FLOW_FLUSHING;
+  fail_unless_equals_int (gst_pad_push (pad, gst_buffer_new ()),
+      GST_FLOW_FLUSHING);
+
+  /* the combined flow is _FLUSHING */
+  ret = gst_flow_combiner_update_flow (combiner, GST_FLOW_FLUSHING);
+  fail_unless_equals_int (ret, GST_FLOW_FLUSHING);
+  gst_object_unref (pad);
+  gst_object_unref (peer);
+
+  /* add one more pad and make it return _OK */
+  pad = gst_pad_new ("src2", GST_PAD_SRC);
+  peer = gst_pad_new ("sink2", GST_PAD_SINK);
+  gst_pad_set_chain_function (peer, _sink_chain);
+  gst_pad_link (pad, peer);
+  gst_pad_set_active (peer, TRUE);
+  gst_pad_set_active (pad, TRUE);
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  gst_pad_push_event (pad, gst_event_new_stream_start ("test2"));
+  gst_pad_push_event (pad, gst_event_new_segment (&segment));
+  gst_flow_combiner_add_pad (combiner, pad);
+  sink_flowret = GST_FLOW_OK;
+  fail_unless_equals_int (gst_pad_push (pad, gst_buffer_new ()), GST_FLOW_OK);
+
+  /* the combined flow is _FLUSHING because of the first pad */
+  ret = gst_flow_combiner_update_flow (combiner, GST_FLOW_OK);
+  fail_unless_equals_int (ret, GST_FLOW_FLUSHING);
+  gst_object_unref (pad);
+  gst_object_unref (peer);
+
+  /* clear the combiner */
+  gst_flow_combiner_clear (combiner);
+
+  /* add a pad and make it return _OK */
+  pad = gst_pad_new ("src3", GST_PAD_SRC);
+  peer = gst_pad_new ("sink3", GST_PAD_SINK);
+  gst_pad_set_chain_function (peer, _sink_chain);
+  gst_pad_link (pad, peer);
+  gst_pad_set_active (peer, TRUE);
+  gst_pad_set_active (pad, TRUE);
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  gst_pad_push_event (pad, gst_event_new_stream_start ("test3"));
+  gst_pad_push_event (pad, gst_event_new_segment (&segment));
+  gst_flow_combiner_add_pad (combiner, pad);
+  sink_flowret = GST_FLOW_OK;
+  fail_unless_equals_int (gst_pad_push (pad, gst_buffer_new ()), GST_FLOW_OK);
+
+  /* the combined flow is _OK since the other pads have been removed */
+  ret = gst_flow_combiner_update_flow (combiner, GST_FLOW_OK);
+  fail_unless_equals_int (ret, GST_FLOW_OK);
+  gst_object_unref (pad);
+  gst_object_unref (peer);
+
+  gst_flow_combiner_free (combiner);
+}
+
+GST_END_TEST;
+
 static Suite *
 flow_combiner_suite (void)
 {
@@ -160,6 +240,7 @@
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_combined_flows);
+  tcase_add_test (tc_chain, test_clear);
 
   return s;
 }
diff --git a/tests/check/libs/gstharness.c b/tests/check/libs/gstharness.c
new file mode 100644
index 0000000..ef55afc
--- /dev/null
+++ b/tests/check/libs/gstharness.c
@@ -0,0 +1,125 @@
+/*
+ * Tests and examples of GstHarness
+ *
+ * Copyright (C) 2015 Havard Graff <havard@pexip.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gst/check/gstcheck.h>
+#include <gst/check/gstharness.h>
+
+static void
+create_destroy_element_harness (gpointer data, gpointer user_data)
+{
+  GstElement * element = user_data;
+  GstHarness * h = gst_harness_new_with_element (element, NULL, NULL);
+  gst_harness_teardown (h);
+}
+
+GST_START_TEST(test_harness_element_ref)
+{
+  GstHarness * h = gst_harness_new ("identity");
+  GstHarnessThread * threads[100];
+  gint i;
+
+  for (i = 0; i < G_N_ELEMENTS (threads); i++)
+    threads[i] = gst_harness_stress_custom_start (h, NULL,
+        create_destroy_element_harness, h->element, 0);
+  for (i = 0; i < G_N_ELEMENTS (threads); i++)
+    gst_harness_stress_thread_stop (threads[i]);
+
+  fail_unless_equals_int (G_OBJECT (h->element)->ref_count, 1);
+
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
+
+GST_START_TEST(test_src_harness)
+{
+  GstHarness * h = gst_harness_new ("identity");
+
+  /* add a fakesrc that syncs to the clock and a
+     capsfilter that adds some caps to it */
+  gst_harness_add_src_parse (h,
+      "fakesrc sync=1 ! capsfilter caps=\"mycaps\"", TRUE);
+
+  /* this cranks the clock and transfers the resulting buffer
+     from the src-harness into the identity element */
+  gst_harness_push_from_src (h);
+
+  /* verify that identity outputs a buffer by pulling and unreffing */
+  gst_buffer_unref (gst_harness_pull (h));
+
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
+GST_START_TEST(test_src_harness_no_forwarding)
+{
+  GstHarness * h = gst_harness_new ("identity");
+
+  /* turn of forwarding of necessary events */
+  gst_harness_set_forwarding (h, FALSE);
+
+  /* add a fakesrc that syncs to the clock and a
+     capsfilter that adds some caps to it */
+  gst_harness_add_src_parse (h,
+      "fakesrc sync=1 ! capsfilter caps=\"mycaps\"", TRUE);
+
+  /* start the fakesrc to produce the first events */
+  gst_harness_play (h->src_harness);
+
+  /* transfer STREAM_START event */
+  gst_harness_src_push_event (h);
+
+  /* crank the clock to produce the CAPS and SEGMENT events */
+  gst_harness_crank_single_clock_wait (h->src_harness);
+
+  /* transfer CAPS event */
+  gst_harness_src_push_event (h);
+
+  /* transfer SEGMENT event */
+  gst_harness_src_push_event (h);
+
+  /* now transfer the buffer produced by exploiting
+     the ability to say 0 cranks but 1 push */
+  gst_harness_src_crank_and_push_many (h, 0, 1);
+
+  /* and verify that the identity element outputs it */
+  gst_buffer_unref (gst_harness_pull (h));
+
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
+static Suite *
+gst_harness_suite (void)
+{
+  Suite *s = suite_create ("GstHarness");
+  TCase *tc_chain = tcase_create ("harness");
+
+  suite_add_tcase (s, tc_chain);
+
+  tcase_add_test (tc_chain, test_harness_element_ref);
+  tcase_add_test (tc_chain, test_src_harness);
+  tcase_add_test (tc_chain, test_src_harness_no_forwarding);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_harness);
diff --git a/tests/check/libs/test_transform.c b/tests/check/libs/test_transform.c
index 403f701..dc45be0 100644
--- a/tests/check/libs/test_transform.c
+++ b/tests/check/libs/test_transform.c
@@ -69,6 +69,10 @@
     GstPadDirection direction, GstCaps * caps, gsize size, GstCaps * othercaps,
     gsize * othersize) = NULL;
 static gboolean klass_passthrough_on_same_caps = FALSE;
+GstFlowReturn (*klass_submit_input_buffer) (GstBaseTransform * trans,
+    gboolean is_discont, GstBuffer * input) = NULL;
+GstFlowReturn (*klass_generate_output) (GstBaseTransform * trans,
+    GstBuffer ** outbuf) = NULL;
 
 static GstStaticPadTemplate *sink_template = &gst_test_trans_sink_template;
 static GstStaticPadTemplate *src_template = &gst_test_trans_src_template;
@@ -101,6 +105,10 @@
     trans_class->transform_size = klass_transform_size;
   if (klass_set_caps != NULL)
     trans_class->set_caps = klass_set_caps;
+  if (klass_submit_input_buffer != NULL)
+    trans_class->submit_input_buffer = klass_submit_input_buffer;
+  if (klass_generate_output)
+    trans_class->generate_output = klass_generate_output;
 }
 
 static void
diff --git a/tests/check/libs/transform2.c b/tests/check/libs/transform2.c
new file mode 100644
index 0000000..e8e746f
--- /dev/null
+++ b/tests/check/libs/transform2.c
@@ -0,0 +1,162 @@
+/* GStreamer
+ *
+ * Unit tests for basetransform collation/separation
+ *
+ * Copyright (C) 2008 Wim Taymans <wim.taymans@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+#include <gst/base/gstbasetransform.h>
+
+#include "test_transform.c"
+
+GstBuffer *buf1, *buf2;
+
+/* Output buffers are twice the size as input */
+static gboolean
+transform_size_collate (GstBaseTransform * trans, GstPadDirection direction,
+    GstCaps * caps, gsize size, GstCaps * othercaps, gsize * othersize)
+{
+  if (direction == GST_PAD_SINK) {
+    *othersize = size * 2;
+  } else {
+    *othersize = size / 2;
+  }
+
+  return TRUE;
+}
+
+static GstFlowReturn
+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);
+
+  if (ret != GST_FLOW_OK)
+    return ret;
+
+  fail_unless (buf1 == NULL || buf2 == NULL);
+
+  if (buf1 == NULL) {
+    buf1 = trans->queued_buf;
+    trans->queued_buf = NULL;
+  } else if (buf2 == NULL) {
+    buf2 = trans->queued_buf;
+    trans->queued_buf = NULL;
+  }
+
+  return ret;
+}
+
+static GstFlowReturn
+collate_generate_output (GstBaseTransform * trans, GstBuffer ** outbuf)
+{
+  /* Not ready to generate output unless we've collected 2 buffers */
+  if (buf1 == NULL || buf2 == NULL)
+    return GST_BASE_TRANSFORM_FLOW_DROPPED;
+
+  fail_unless (buf1 != NULL && buf2 != NULL);
+  *outbuf = gst_buffer_new_and_alloc (40);
+
+  gst_buffer_unref (buf1);
+  gst_buffer_unref (buf2);
+  buf1 = NULL;
+  buf2 = NULL;
+
+  return GST_FLOW_OK;
+}
+
+/* Take 2 input buffers, generate 1 output
+ * buffer with twice the size
+ */
+GST_START_TEST (basetransform_chain_collate)
+{
+  TestTransData *trans;
+  GstBuffer *buffer;
+  GstFlowReturn res;
+  GstCaps *incaps, *outcaps;
+
+  src_template = &gst_test_trans_src_template;
+  klass_passthrough_on_same_caps = FALSE;
+  klass_transform_size = transform_size_collate;
+  klass_submit_input_buffer = collate_submit_input_buffer;
+  klass_generate_output = collate_generate_output;
+
+  trans = gst_test_trans_new ();
+
+  incaps = gst_caps_new_empty_simple ("foo/x-bar");
+  outcaps = gst_caps_new_empty_simple ("foo/x-bar");
+
+  gst_test_trans_push_segment (trans);
+
+  gst_pad_push_event (trans->srcpad, gst_event_new_flush_start ());
+  gst_pad_push_event (trans->srcpad, gst_event_new_flush_stop (TRUE));
+
+  GST_DEBUG_OBJECT (trans, "buffer with caps %" GST_PTR_FORMAT, incaps);
+  gst_test_trans_setcaps (trans, incaps);
+  gst_test_trans_push_segment (trans);
+
+  buffer = gst_buffer_new_and_alloc (20);
+  res = gst_test_trans_push (trans, buffer);
+  fail_unless (res == GST_FLOW_OK);
+
+  /* We do not expect an output buffer after only pushing one input */
+  buffer = gst_test_trans_pop (trans);
+  fail_unless (buffer == NULL);
+
+  buffer = gst_buffer_new_and_alloc (20);
+  res = gst_test_trans_push (trans, buffer);
+  fail_unless (res == GST_FLOW_OK);
+
+  buffer = gst_test_trans_pop (trans);
+  fail_unless (buffer != NULL);
+  fail_unless (gst_buffer_get_size (buffer) == 40);
+
+  /* output buffer has refcount 1 */
+  fail_unless (GST_MINI_OBJECT_REFCOUNT_VALUE (buffer) == 1);
+  gst_buffer_unref (buffer);
+
+  gst_caps_unref (incaps);
+  gst_caps_unref (outcaps);
+
+  gst_test_trans_free (trans);
+}
+
+GST_END_TEST;
+
+
+static Suite *
+gst_basetransform_collate_suite (void)
+{
+  Suite *s = suite_create ("GstBaseTransformCollate");
+  TCase *tc = tcase_create ("general");
+
+  suite_add_tcase (s, tc);
+  tcase_add_test (tc, basetransform_chain_collate);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_basetransform_collate);
diff --git a/tests/check/pipelines/parse-launch.c b/tests/check/pipelines/parse-launch.c
index 8b6a6bc..78a2ba4 100644
--- a/tests/check/pipelines/parse-launch.c
+++ b/tests/check/pipelines/parse-launch.c
@@ -467,6 +467,7 @@
     fail_if (peer_elem == NULL, "Could not retrieve peer %s", peer);
 
     sinkpad = gst_element_get_static_pad (peer_elem, "sink");
+    gst_object_unref (peer_elem);
     fail_if (sinkpad == NULL, "Peer element did not have a 'sink' pad");
 
     fail_unless (peerpad == sinkpad,
diff --git a/tests/check/pipelines/queue-error.c b/tests/check/pipelines/queue-error.c
index 81e9d25..a8408bd 100644
--- a/tests/check/pipelines/queue-error.c
+++ b/tests/check/pipelines/queue-error.c
@@ -80,7 +80,7 @@
   fail_unless (state_ret != GST_STATE_CHANGE_FAILURE);
 
   msg = gst_bus_poll (bus, GST_MESSAGE_ERROR | GST_MESSAGE_EOS, 5 * GST_SECOND);
-  fail_unless (msg != NULL, "timeout waiting for error or eos message");;
+  fail_unless (msg != NULL, "timeout waiting for error or eos message");
 
   gst_message_unref (msg);
   gst_object_unref (bus);
diff --git a/tests/check/tools/gstinspect.c b/tests/check/tools/gstinspect.c
index 1d3d8cc..72e23a4 100644
--- a/tests/check/tools/gstinspect.c
+++ b/tests/check/tools/gstinspect.c
@@ -17,7 +17,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/* FIXME 0.11: suppress warnings for deprecated API such as GValueArray
+/* FIXME 2.0: suppress warnings for deprecated API such as GValueArray
  * with newer GLib versions (>= 2.31.0) */
 #define GLIB_DISABLE_DEPRECATION_WARNINGS
 
@@ -32,56 +32,82 @@
 
 GST_START_TEST (test_exists)
 {
-  gchar **argv;
+#define ARGV_LEN (G_N_ELEMENTS (argv) - 1)
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists foo", " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1);
-  g_strfreev (argv);
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists", "foo", NULL };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists bin", " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 1);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists", "bin", NULL };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=" VERSION " "
-      "bin", " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 0);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=" VERSION, "bin", NULL
+    };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.0 bin", " ",
-      -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 0);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=1.0", "bin", NULL
+    };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.0.0 bin",
-      " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 0);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=1.0.0", "bin", NULL
+    };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=2.0 bin",
-      " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 0);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=1.2.0", "bin", NULL
+    };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=2.0.0 bin",
-      " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 0);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=2.0", "bin", NULL
+    };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.44 bin",
-      " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 1);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=2.0.0", "bin", NULL
+    };
 
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.60.4 bin",
-      " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 1);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=1.44", "bin", NULL
+    };
 
-  /* check for plugin should fail like this */
-  argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.0 "
-      "coreelements", " ", -1);
-  fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1);
-  g_strfreev (argv);
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 1);
+  }
+  {
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=1.60.4", "bin", NULL
+    };
+
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 1);
+  }
+  {
+    /* check for plugin should fail like this */
+    const gchar *argv[] = { "gst-inspect-1.0", "--exists",
+      "--atleast-version=1.0", "coreelements", NULL
+    };
+
+    fail_unless_equals_int (gst_inspect_main (ARGV_LEN, (gchar **) argv), 1);
+  }
 }
 
 GST_END_TEST;
diff --git a/tests/examples/Makefile.am b/tests/examples/Makefile.am
index 7454b5c..6918f90 100644
--- a/tests/examples/Makefile.am
+++ b/tests/examples/Makefile.am
@@ -1,9 +1,3 @@
-if GST_DISABLE_PARSE
-GST_PARSE_DIRS = 
-else
-GST_PARSE_DIRS = launch
-endif
-
 # adapter test needs sys/times.h and unistd.h
 if HAVE_SYS_TIMES_H_AND_UNISTD_H
   ADAPTER_TEST_DIR = adapter
@@ -16,33 +10,16 @@
 	helloworld \
 	manual     \
 	memory   \
-	metadata   \
-	queue      \
+	netclock \
+	ptp \
 	stepping \
-	streams \
-	typefind
-
-#appreader
-#cutter
-#events
-#helloworld2
-#launch
-#manual
-#mixer
-#pingpong
-#plugins
-#pwg
-#queue2
-#queue3
-#queue4
-#retag
-#thread
+	streamiddemux \
+	streams
 
 SUBDIRS = 				\
 	$(always_dirs)			\
-	$(ADAPTER_TEST_DIR)		\
-	$(GST_PARSE_DIRS)
+	$(ADAPTER_TEST_DIR)
 
-DIST_SUBDIRS = $(always_dirs) adapter launch
+DIST_SUBDIRS = $(always_dirs) adapter
 
 include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index f351470..5c47f83 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -19,7 +19,17 @@
 # descending into all subdirectories a second time, but only after the first
 # (parallel) run has finished, so it should go right through the second time.
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,8 +93,6 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = $(top_srcdir)/common/parallel-subdirs.mak \
-	$(srcdir)/Makefile.in $(srcdir)/Makefile.am
 subdir = tests/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -94,6 +102,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -111,7 +120,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -124,6 +133,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -182,6 +192,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/common/parallel-subdirs.mak
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -218,7 +230,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -309,6 +326,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -320,9 +338,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -344,6 +364,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -405,8 +426,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -472,6 +495,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -484,8 +508,6 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-@GST_DISABLE_PARSE_FALSE@GST_PARSE_DIRS = launch
-@GST_DISABLE_PARSE_TRUE@GST_PARSE_DIRS = 
 @HAVE_SYS_TIMES_H_AND_UNISTD_H_FALSE@ADAPTER_TEST_DIR = 
 
 # adapter test needs sys/times.h and unistd.h
@@ -495,34 +517,17 @@
 	helloworld \
 	manual     \
 	memory   \
-	metadata   \
-	queue      \
+	netclock \
+	ptp \
 	stepping \
-	streams \
-	typefind
+	streamiddemux \
+	streams
 
-
-#appreader
-#cutter
-#events
-#helloworld2
-#launch
-#manual
-#mixer
-#pingpong
-#plugins
-#pwg
-#queue2
-#queue3
-#queue4
-#retag
-#thread
 SUBDIRS = \
 	$(always_dirs)			\
-	$(ADAPTER_TEST_DIR)		\
-	$(GST_PARSE_DIRS)
+	$(ADAPTER_TEST_DIR)
 
-DIST_SUBDIRS = $(always_dirs) adapter launch
+DIST_SUBDIRS = $(always_dirs) adapter
 all: all-recursive
 
 .SUFFIXES:
@@ -538,7 +543,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -547,7 +551,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/parallel-subdirs.mak:
+$(top_srcdir)/common/parallel-subdirs.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -834,6 +838,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 .PHONY: independent-subdirs $(SUBDIRS)
 
diff --git a/tests/examples/adapter/Makefile.in b/tests/examples/adapter/Makefile.in
index 6995a53..e074dc4 100644
--- a/tests/examples/adapter/Makefile.in
+++ b/tests/examples/adapter/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = adapter_test$(EXEEXT)
 subdir = tests/examples/adapter
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,6 +130,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -198,6 +208,7 @@
   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@
@@ -209,7 +220,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -300,6 +316,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -311,9 +328,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -335,6 +354,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -396,8 +416,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -463,6 +485,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -493,7 +516,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/adapter/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/adapter/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -780,6 +802,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/controller/Makefile.am b/tests/examples/controller/Makefile.am
index 06d39ed..6ead70c 100644
--- a/tests/examples/controller/Makefile.am
+++ b/tests/examples/controller/Makefile.am
@@ -1,19 +1,7 @@
-noinst_PROGRAMS = audio-example control-sources text-color-example
+noinst_PROGRAMS = audio-example control-sources text-color-example absolute-example
 
 AM_CFLAGS  = $(GST_OBJ_CFLAGS) -I$(top_builddir)/libs
 
 LDADD = \
 	$(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
 	$(GST_OBJ_LIBS)
-
-Android.mk: Makefile.am audio-example.c
-	androgenizer \
-	-:PROJECT audio-example -:EXECUTABLE audio-example \
-	 -:TAGS eng debug \
-         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES audio-example.c \
-	 -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(AM_CFLAGS) \
-	 -:LDFLAGS -lgstcontroller-@GST_API_VERSION@ \
-	     $(GST_OBJ_LIBS) -ldl \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
diff --git a/tests/examples/controller/Makefile.in b/tests/examples/controller/Makefile.in
index e7db527..d17e8ed 100644
--- a/tests/examples/controller/Makefile.in
+++ b/tests/examples/controller/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,10 +90,8 @@
 host_triplet = @host@
 target_triplet = @target@
 noinst_PROGRAMS = audio-example$(EXEEXT) control-sources$(EXEEXT) \
-	text-color-example$(EXEEXT)
+	text-color-example$(EXEEXT) absolute-example$(EXEEXT)
 subdir = tests/examples/controller
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -92,6 +100,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -109,7 +118,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -122,21 +131,27 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-audio_example_SOURCES = audio-example.c
-audio_example_OBJECTS = audio-example.$(OBJEXT)
-audio_example_LDADD = $(LDADD)
+absolute_example_SOURCES = absolute-example.c
+absolute_example_OBJECTS = absolute-example.$(OBJEXT)
+absolute_example_LDADD = $(LDADD)
 am__DEPENDENCIES_1 =
-audio_example_DEPENDENCIES = $(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
+absolute_example_DEPENDENCIES = $(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
 	$(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 = 
+audio_example_SOURCES = audio-example.c
+audio_example_OBJECTS = audio-example.$(OBJEXT)
+audio_example_LDADD = $(LDADD)
+audio_example_DEPENDENCIES = $(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 control_sources_SOURCES = control-sources.c
 control_sources_OBJECTS = control-sources.$(OBJEXT)
 control_sources_LDADD = $(LDADD)
@@ -181,8 +196,10 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = audio-example.c control-sources.c text-color-example.c
-DIST_SOURCES = audio-example.c control-sources.c text-color-example.c
+SOURCES = absolute-example.c audio-example.c control-sources.c \
+	text-color-example.c
+DIST_SOURCES = absolute-example.c audio-example.c control-sources.c \
+	text-color-example.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -207,6 +224,7 @@
   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@
@@ -218,7 +236,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -309,6 +332,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -320,9 +344,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -344,6 +370,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -405,8 +432,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -472,6 +501,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -505,7 +535,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/controller/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/controller/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -533,6 +562,10 @@
 	echo " rm -f" $$list; \
 	rm -f $$list
 
+absolute-example$(EXEEXT): $(absolute_example_OBJECTS) $(absolute_example_DEPENDENCIES) $(EXTRA_absolute_example_DEPENDENCIES) 
+	@rm -f absolute-example$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(absolute_example_OBJECTS) $(absolute_example_LDADD) $(LIBS)
+
 audio-example$(EXEEXT): $(audio_example_OBJECTS) $(audio_example_DEPENDENCIES) $(EXTRA_audio_example_DEPENDENCIES) 
 	@rm -f audio-example$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(audio_example_OBJECTS) $(audio_example_LDADD) $(LIBS)
@@ -551,6 +584,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/absolute-example.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio-example.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/control-sources.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-color-example.Po@am__quote@
@@ -788,18 +822,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
 
-Android.mk: Makefile.am audio-example.c
-	androgenizer \
-	-:PROJECT audio-example -:EXECUTABLE audio-example \
-	 -:TAGS eng debug \
-         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:SOURCES audio-example.c \
-	 -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(AM_CFLAGS) \
-	 -:LDFLAGS -lgstcontroller-@GST_API_VERSION@ \
-	     $(GST_OBJ_LIBS) -ldl \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/controller/absolute-example.c b/tests/examples/controller/absolute-example.c
new file mode 100644
index 0000000..2bce7e7
--- /dev/null
+++ b/tests/examples/controller/absolute-example.c
@@ -0,0 +1,97 @@
+/*
+ * text-color-example.c
+ *
+ * Builds a pipeline with [videotestsrc ! textoverlay ! ximagesink] and
+ * moves text
+ *
+ * Needs gst-plugins-base installed.
+ */
+
+#include <gst/gst.h>
+#include <gst/controller/gstinterpolationcontrolsource.h>
+#include <gst/controller/gstlfocontrolsource.h>
+#include <gst/controller/gstargbcontrolbinding.h>
+#include <gst/controller/gstdirectcontrolbinding.h>
+
+gint
+main (gint argc, gchar ** argv)
+{
+  gint res = 1;
+  GstElement *src, *text, *sink;
+  GstElement *bin;
+  GstControlSource *cs;
+  GstClock *clock;
+  GstClockID clock_id;
+  GstClockReturn wait_ret;
+
+  gst_init (&argc, &argv);
+
+  /* build pipeline */
+  bin = gst_pipeline_new ("pipeline");
+  clock = gst_pipeline_get_clock (GST_PIPELINE (bin));
+  src = gst_element_factory_make ("videotestsrc", NULL);
+  if (!src) {
+    GST_WARNING ("need videotestsrc from gst-plugins-base");
+    goto Error;
+  }
+  g_object_set (src, "pattern", /* red */ 4,
+      NULL);
+  text = gst_element_factory_make ("textoverlay", NULL);
+  if (!text) {
+    GST_WARNING ("need textoverlay from gst-plugins-base");
+    goto Error;
+  }
+  g_object_set (text,
+      "text", "GStreamer rocks!",
+      "font-desc", "Sans, 30",
+      "xpos", 0.0, "wrap-mode", -1, "halignment", /* position */ 4,
+      "valignment", /* position */ 3,
+      NULL);
+  sink = gst_element_factory_make ("ximagesink", NULL);
+  if (!sink) {
+    GST_WARNING ("need ximagesink from gst-plugins-base");
+    goto Error;
+  }
+
+  gst_bin_add_many (GST_BIN (bin), src, text, sink, NULL);
+  if (!gst_element_link_many (src, text, sink, NULL)) {
+    GST_WARNING ("can't link elements");
+    goto Error;
+  }
+
+  /* setup control sources */
+  cs = gst_interpolation_control_source_new ();
+  gst_object_add_control_binding (GST_OBJECT_CAST (text),
+      gst_direct_control_binding_new_absolute (GST_OBJECT_CAST (text), "deltax",
+          cs));
+
+  g_object_set (cs, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
+
+  // At second 0 the text will be at 0px on the x-axis
+  gst_timed_value_control_source_set ((GstTimedValueControlSource *) cs, 0, 0);
+  // At second 5 the text will be at 1000px on the x-axis
+  gst_timed_value_control_source_set ((GstTimedValueControlSource *) cs,
+      GST_SECOND * 5, 1000);
+
+  gst_object_unref (cs);
+
+  /* run for 10 seconds */
+  clock_id =
+      gst_clock_new_single_shot_id (clock,
+      gst_clock_get_time (clock) + (10 * GST_SECOND));
+
+  if (gst_element_set_state (bin, GST_STATE_PLAYING)) {
+    if ((wait_ret = gst_clock_id_wait (clock_id, NULL)) != GST_CLOCK_OK) {
+      GST_WARNING ("clock_id_wait returned: %d", wait_ret);
+    }
+    gst_element_set_state (bin, GST_STATE_NULL);
+  }
+
+  /* cleanup */
+  gst_clock_id_unref (clock_id);
+  gst_object_unref (G_OBJECT (clock));
+  gst_object_unref (G_OBJECT (bin));
+  res = 0;
+Error:
+  return (res);
+}
diff --git a/tests/examples/controller/audio-example.c b/tests/examples/controller/audio-example.c
index 6494498..f57731f 100644
--- a/tests/examples/controller/audio-example.c
+++ b/tests/examples/controller/audio-example.c
@@ -4,7 +4,7 @@
  * Builds a pipeline with [ audiotestsource ! autoaudiosink ] and sweeps
  * frequency and volume.
  *
- * Needs gst-plugin-base + gst-plugins-good installed.
+ * Needs gst-plugins-base + gst-plugins-good installed.
  */
 
 #include <gst/gst.h>
diff --git a/tests/examples/controller/text-color-example.c b/tests/examples/controller/text-color-example.c
index 00b3c9f..c9e1119 100644
--- a/tests/examples/controller/text-color-example.c
+++ b/tests/examples/controller/text-color-example.c
@@ -4,7 +4,7 @@
  * Builds a pipeline with [videotestsrc ! textoverlay ! ximagesink] and
  * modulates color, text and text pos.
  *
- * Needs gst-plugin-base installed.
+ * Needs gst-plugins-base installed.
  */
 
 #include <gst/gst.h>
diff --git a/tests/examples/helloworld/Makefile.in b/tests/examples/helloworld/Makefile.in
index 726d551..ceb1ba1 100644
--- a/tests/examples/helloworld/Makefile.in
+++ b/tests/examples/helloworld/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = helloworld$(EXEEXT)
 subdir = tests/examples/helloworld
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,6 +130,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -197,6 +207,7 @@
   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@
@@ -208,7 +219,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +315,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +327,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +353,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +415,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +484,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -492,7 +515,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/helloworld/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/helloworld/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -779,6 +801,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/launch/Makefile.am b/tests/examples/launch/Makefile.am
deleted file mode 100644
index bee5789..0000000
--- a/tests/examples/launch/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-noinst_PROGRAMS = mp3parselaunch
-
-mp3parselaunch_LDADD = $(GST_OBJ_LIBS)
-mp3parselaunch_CFLAGS = $(GST_OBJ_CFLAGS)
-
-#noinst_SCRIPTS = mp3play
-#EXTRA_DIST = mp3play
diff --git a/tests/examples/launch/mp3parselaunch.c b/tests/examples/launch/mp3parselaunch.c
deleted file mode 100644
index cc00a07..0000000
--- a/tests/examples/launch/mp3parselaunch.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <gst/gst.h>
-
-static void
-event_loop (GstElement * pipe)
-{
-  GstBus *bus;
-  GstMessage *message = NULL;
-  gboolean running = TRUE;
-
-  bus = gst_element_get_bus (GST_ELEMENT (pipe));
-
-  while (running) {
-    message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
-
-    g_assert (message != NULL);
-
-    switch (message->type) {
-      case GST_MESSAGE_EOS:
-        running = FALSE;
-        break;
-      case GST_MESSAGE_WARNING:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_warning (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        break;
-      }
-      case GST_MESSAGE_ERROR:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_error (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        running = FALSE;
-        break;
-      }
-      default:
-        break;
-    }
-    gst_message_unref (message);
-  }
-  gst_object_unref (bus);
-}
-
-int
-main (int argc, char *argv[])
-{
-  GstElement *bin;
-  GstElement *filesrc;
-  GError *error = NULL;
-
-  gst_init (&argc, &argv);
-
-  if (argc != 2) {
-    g_print ("usage: %s <mp3 file>\n", argv[0]);
-    exit (-1);
-  }
-
-  bin = (GstElement *)
-      gst_parse_launch ("filesrc name=my_filesrc ! mad ! osssink", &error);
-  if (!bin) {
-    fprintf (stderr, "Parse error: %s", error->message);
-    exit (-1);
-  }
-
-  filesrc = gst_bin_get_by_name (GST_BIN (bin), "my_filesrc");
-  g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
-
-  /* start playing */
-  gst_element_set_state (bin, GST_STATE_PLAYING);
-
-  /* Run event loop listening for bus messages until EOS or ERROR */
-  event_loop (bin);
-
-  /* stop the bin */
-  gst_element_set_state (bin, GST_STATE_NULL);
-
-  exit (0);
-}
diff --git a/tests/examples/manual/Makefile.am b/tests/examples/manual/Makefile.am
index c9d439c..0e4da6b 100644
--- a/tests/examples/manual/Makefile.am
+++ b/tests/examples/manual/Makefile.am
@@ -12,7 +12,7 @@
 REGISTRY_ENVIRONMENT = \
         GST_REGISTRY=$(CHECK_REGISTRY)
 
-TESTS_ENVIRONMENT = \
+AM_TESTS_ENVIRONMENT = \
         $(REGISTRY_ENVIRONMENT)                                 \
         GST_PLUGIN_SCANNER=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner \
         GST_PLUGIN_SYSTEM_PATH=                                 \
diff --git a/tests/examples/manual/Makefile.in b/tests/examples/manual/Makefile.in
index 9c25b72..16e7b1b 100644
--- a/tests/examples/manual/Makefile.in
+++ b/tests/examples/manual/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -86,8 +96,6 @@
 	ghostpad$(EXEEXT) init$(EXEEXT)
 noinst_PROGRAMS = $(am__EXEEXT_3)
 subdir = tests/examples/manual
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(top_srcdir)/test-driver
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -96,6 +104,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -113,7 +122,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -126,6 +135,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -557,6 +567,8 @@
 TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
 TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
 	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+	$(top_srcdir)/test-driver
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -568,7 +580,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -659,6 +676,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -670,9 +688,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -694,6 +714,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -755,8 +776,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -822,6 +845,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -847,7 +871,7 @@
 REGISTRY_ENVIRONMENT = \
         GST_REGISTRY=$(CHECK_REGISTRY)
 
-TESTS_ENVIRONMENT = \
+AM_TESTS_ENVIRONMENT = \
         $(REGISTRY_ENVIRONMENT)                                 \
         GST_PLUGIN_SCANNER=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner \
         GST_PLUGIN_SYSTEM_PATH=                                 \
@@ -888,7 +912,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/manual/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/manual/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -1164,7 +1187,7 @@
 	if test -n "$$am__remaking_logs"; then \
 	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
 	       "recursion detected" >&2; \
-	else \
+	elif test -n "$$redo_logs"; then \
 	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
 	fi; \
 	if $(am__make_dryrun); then :; else \
@@ -1505,6 +1528,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	recheck tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 elementmake.c elementcreate.c elementget.c elementlink.c elementfactory.c: $(top_srcdir)/docs/manual/basics-elements.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
diff --git a/tests/examples/manual/norebuffer.c b/tests/examples/manual/norebuffer.c
index 67db10f..e9d4423 100644
--- a/tests/examples/manual/norebuffer.c
+++ b/tests/examples/manual/norebuffer.c
@@ -66,7 +66,7 @@
 
   if (percent < 100) {
     /* buffering busy */
-    if (is_buffering == FALSE) {
+    if (!is_buffering) {
       is_buffering = TRUE;
       if (target_state == GST_STATE_PLAYING) {
         /* we were not buffering but PLAYING, PAUSE  the pipeline. */
@@ -81,7 +81,7 @@
 {
   GstElement *pipeline = user_data;
 
-  if (is_buffering == FALSE)
+  if (!is_buffering)
     gst_element_set_state (pipeline, target_state);
   else
     g_timeout_add (500, buffer_timeout, pipeline);
diff --git a/tests/examples/memory/Makefile.in b/tests/examples/memory/Makefile.in
index 3d27df7..46995f0 100644
--- a/tests/examples/memory/Makefile.in
+++ b/tests/examples/memory/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = memory_test$(EXEEXT)
 subdir = tests/examples/memory
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,6 +130,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -199,6 +209,7 @@
   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@
@@ -210,7 +221,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -301,6 +317,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -312,9 +329,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -336,6 +355,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -397,8 +417,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -464,6 +486,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -495,7 +518,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/memory/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/memory/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -812,6 +834,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/metadata/Makefile.am b/tests/examples/metadata/Makefile.am
deleted file mode 100644
index 61d2eb8..0000000
--- a/tests/examples/metadata/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-noinst_PROGRAMS = read-metadata
-
-read_metadata_LDADD = $(GST_OBJ_LIBS)
-read_metadata_CFLAGS = $(GST_OBJ_CFLAGS)
diff --git a/tests/examples/metadata/read-metadata.c b/tests/examples/metadata/read-metadata.c
deleted file mode 100644
index a872289..0000000
--- a/tests/examples/metadata/read-metadata.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Thomas Vander Stichele <thomas@apestaart.org>
- *               2003 Benjamin Otte <in7y118@public.uni-hamburg.de>
- *               2005 Andy Wingo <wingo@pobox.com>
- *               2005 Jan Schmidt <thaytan@mad.scientist.com>
- *
- * gst-metadata.c: Use GStreamer to display metadata within files.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include <locale.h>
-#include <gst/gst.h>
-
-static char *filename = NULL;
-static GstElement *pipeline = NULL;
-static GstElement *source = NULL;
-
-#define NEW_PIPE_PER_FILE
-
-static gboolean
-message_loop (GstElement * element, GstTagList ** tags)
-{
-  GstBus *bus;
-  gboolean done = FALSE;
-
-  bus = gst_element_get_bus (element);
-  g_return_val_if_fail (bus != NULL, FALSE);
-  g_return_val_if_fail (tags != NULL, FALSE);
-
-  while (!done) {
-    GstMessage *message;
-
-    message = gst_bus_pop (bus);
-    if (message == NULL)
-      /* All messages read, we're done */
-      break;
-
-    switch (GST_MESSAGE_TYPE (message)) {
-      case GST_MESSAGE_ERROR:
-      case GST_MESSAGE_EOS:
-        gst_message_unref (message);
-        return TRUE;
-      case GST_MESSAGE_TAG:
-      {
-        GstTagList *new_tags, *old_tags;
-
-        gst_message_parse_tag (message, &new_tags);
-        if (*tags) {
-          old_tags = *tags;
-          *tags = gst_tag_list_merge (old_tags, new_tags, GST_TAG_MERGE_KEEP);
-          gst_tag_list_unref (old_tags);
-        } else
-          *tags = new_tags;
-        break;
-      }
-      default:
-        break;
-    }
-    gst_message_unref (message);
-  }
-  gst_object_unref (bus);
-  return TRUE;
-}
-
-static void
-make_pipeline (void)
-{
-  GstElement *decodebin;
-
-  if (pipeline != NULL)
-    gst_object_unref (pipeline);
-
-  pipeline = gst_pipeline_new (NULL);
-
-  source = gst_element_factory_make ("filesrc", "source");
-  g_assert (GST_IS_ELEMENT (source));
-  decodebin = gst_element_factory_make ("decodebin", "decodebin");
-  g_assert (GST_IS_ELEMENT (decodebin));
-
-  gst_bin_add_many (GST_BIN (pipeline), source, decodebin, NULL);
-  gst_element_link (source, decodebin);
-}
-
-static void
-print_tag (const GstTagList * list, const gchar * tag, gpointer unused)
-{
-  gint i, count;
-
-  count = gst_tag_list_get_tag_size (list, tag);
-
-  for (i = 0; i < count; i++) {
-    gchar *str;
-
-    if (gst_tag_get_type (tag) == G_TYPE_STRING) {
-      if (!gst_tag_list_get_string_index (list, tag, i, &str))
-        g_assert_not_reached ();
-    } else {
-      str =
-          g_strdup_value_contents (gst_tag_list_get_value_index (list, tag, i));
-    }
-
-    if (i == 0) {
-      g_print ("  %15s: %s\n", gst_tag_get_nick (tag), str);
-    } else {
-      g_print ("                 : %s\n", str);
-    }
-
-    g_free (str);
-  }
-}
-
-int
-main (int argc, char *argv[])
-{
-  guint i = 1;
-
-  setlocale (LC_ALL, "");
-
-  gst_init (&argc, &argv);
-
-  if (argc < 2) {
-    g_print ("Please give filenames to read metadata from\n\n");
-    return 1;
-  }
-
-  make_pipeline ();
-  while (i < argc) {
-    GstStateChangeReturn sret;
-    GstState state;
-    GstTagList *tags = NULL;
-
-    filename = argv[i];
-    g_object_set (source, "location", filename, NULL);
-
-    GST_DEBUG ("Starting reading for %s", filename);
-
-    /* Decodebin will only commit to PAUSED if it actually finds a type;
-     * otherwise the state change fails */
-    sret = gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PAUSED);
-
-    if (GST_STATE_CHANGE_ASYNC == sret) {
-      if (GST_STATE_CHANGE_SUCCESS !=
-          gst_element_get_state (GST_ELEMENT (pipeline), &state, NULL,
-              5 * GST_SECOND)) {
-        g_print ("State change failed for %s. Aborting\n", filename);
-        break;
-      }
-    } else if (sret != GST_STATE_CHANGE_SUCCESS) {
-      g_print ("%s - Could not read file\n", filename);
-      goto next_file;
-    }
-
-    if (!message_loop (GST_ELEMENT (pipeline), &tags)) {
-      g_print ("Failed in message reading for %s\n", argv[i]);
-    }
-
-    if (tags) {
-      g_print ("Metadata for %s:\n", argv[i]);
-      gst_tag_list_foreach (tags, print_tag, NULL);
-      gst_tag_list_unref (tags);
-      tags = NULL;
-    } else
-      g_print ("No metadata found for %s\n", argv[i]);
-
-    sret = gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
-#ifdef NEW_PIPE_PER_FILE
-    if (sret != GST_STATE_CHANGE_SUCCESS) {
-      g_print ("State change failed. Aborting\n");
-      break;
-    }
-#else
-    if (GST_STATE_CHANGE_ASYNC == sret) {
-      if (GST_STATE_CHANGE_FAILURE ==
-          gst_element_get_state (GST_ELEMENT (pipeline), &state, NULL,
-              GST_CLOCK_TIME_NONE)) {
-        g_print ("State change failed. Aborting");
-        break;
-      }
-    } else if (sret != GST_STATE_CHANGE_SUCCESS) {
-      g_print ("State change failed. Aborting\n");
-      break;
-    }
-#endif
-
-  next_file:
-    i++;
-
-#ifdef NEW_PIPE_PER_FILE
-    make_pipeline ();
-#endif
-  }
-
-  if (pipeline)
-    gst_object_unref (pipeline);
-  return 0;
-}
diff --git a/tests/examples/netclock/Makefile.am b/tests/examples/netclock/Makefile.am
new file mode 100644
index 0000000..9506997
--- /dev/null
+++ b/tests/examples/netclock/Makefile.am
@@ -0,0 +1,11 @@
+noinst_PROGRAMS = netclock-server netclock-client
+
+netclock_server_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS)
+netclock_server_CFLAGS = $(GST_OBJ_CFLAGS)
+
+netclock_client_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS)
+netclock_client_CFLAGS = $(GST_OBJ_CFLAGS)
diff --git a/tests/examples/metadata/Makefile.in b/tests/examples/netclock/Makefile.in
similarity index 77%
copy from tests/examples/metadata/Makefile.in
copy to tests/examples/netclock/Makefile.in
index 61a9698..372dba1 100644
--- a/tests/examples/metadata/Makefile.in
+++ b/tests/examples/netclock/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,10 +89,8 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = read-metadata$(EXEEXT)
-subdir = tests/examples/metadata
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
+noinst_PROGRAMS = netclock-server$(EXEEXT) netclock-client$(EXEEXT)
+subdir = tests/examples/netclock
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,22 +130,35 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-read_metadata_SOURCES = read-metadata.c
-read_metadata_OBJECTS = read_metadata-read-metadata.$(OBJEXT)
+netclock_client_SOURCES = netclock-client.c
+netclock_client_OBJECTS = netclock_client-netclock-client.$(OBJEXT)
 am__DEPENDENCIES_1 =
-read_metadata_DEPENDENCIES = $(am__DEPENDENCIES_1)
+netclock_client_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(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 = 
-read_metadata_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(read_metadata_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+netclock_client_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(netclock_client_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+netclock_server_SOURCES = netclock-server.c
+netclock_server_OBJECTS = netclock_server-netclock-server.$(OBJEXT)
+netclock_server_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
+netclock_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(netclock_server_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
@@ -171,8 +193,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = read-metadata.c
-DIST_SOURCES = read-metadata.c
+SOURCES = netclock-client.c netclock-server.c
+DIST_SOURCES = netclock-client.c netclock-server.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -197,6 +219,7 @@
   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@
@@ -208,7 +231,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +327,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +339,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +365,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +427,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +496,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -474,8 +509,16 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-read_metadata_LDADD = $(GST_OBJ_LIBS)
-read_metadata_CFLAGS = $(GST_OBJ_CFLAGS)
+netclock_server_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS)
+
+netclock_server_CFLAGS = $(GST_OBJ_CFLAGS)
+netclock_client_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS)
+
+netclock_client_CFLAGS = $(GST_OBJ_CFLAGS)
 all: all-am
 
 .SUFFIXES:
@@ -489,10 +532,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/metadata/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/netclock/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/metadata/Makefile
-.PRECIOUS: Makefile
+	  $(AUTOMAKE) --gnu tests/examples/netclock/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -520,9 +562,13 @@
 	echo " rm -f" $$list; \
 	rm -f $$list
 
-read-metadata$(EXEEXT): $(read_metadata_OBJECTS) $(read_metadata_DEPENDENCIES) $(EXTRA_read_metadata_DEPENDENCIES) 
-	@rm -f read-metadata$(EXEEXT)
-	$(AM_V_CCLD)$(read_metadata_LINK) $(read_metadata_OBJECTS) $(read_metadata_LDADD) $(LIBS)
+netclock-client$(EXEEXT): $(netclock_client_OBJECTS) $(netclock_client_DEPENDENCIES) $(EXTRA_netclock_client_DEPENDENCIES) 
+	@rm -f netclock-client$(EXEEXT)
+	$(AM_V_CCLD)$(netclock_client_LINK) $(netclock_client_OBJECTS) $(netclock_client_LDADD) $(LIBS)
+
+netclock-server$(EXEEXT): $(netclock_server_OBJECTS) $(netclock_server_DEPENDENCIES) $(EXTRA_netclock_server_DEPENDENCIES) 
+	@rm -f netclock-server$(EXEEXT)
+	$(AM_V_CCLD)$(netclock_server_LINK) $(netclock_server_OBJECTS) $(netclock_server_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -530,7 +576,8 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read_metadata-read-metadata.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netclock_client-netclock-client.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netclock_server-netclock-server.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -556,19 +603,33 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-read_metadata-read-metadata.o: read-metadata.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(read_metadata_CFLAGS) $(CFLAGS) -MT read_metadata-read-metadata.o -MD -MP -MF $(DEPDIR)/read_metadata-read-metadata.Tpo -c -o read_metadata-read-metadata.o `test -f 'read-metadata.c' || echo '$(srcdir)/'`read-metadata.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_metadata-read-metadata.Tpo $(DEPDIR)/read_metadata-read-metadata.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read-metadata.c' object='read_metadata-read-metadata.o' libtool=no @AMDEPBACKSLASH@
+netclock_client-netclock-client.o: netclock-client.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_client_CFLAGS) $(CFLAGS) -MT netclock_client-netclock-client.o -MD -MP -MF $(DEPDIR)/netclock_client-netclock-client.Tpo -c -o netclock_client-netclock-client.o `test -f 'netclock-client.c' || echo '$(srcdir)/'`netclock-client.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/netclock_client-netclock-client.Tpo $(DEPDIR)/netclock_client-netclock-client.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netclock-client.c' object='netclock_client-netclock-client.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) $(read_metadata_CFLAGS) $(CFLAGS) -c -o read_metadata-read-metadata.o `test -f 'read-metadata.c' || echo '$(srcdir)/'`read-metadata.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_client_CFLAGS) $(CFLAGS) -c -o netclock_client-netclock-client.o `test -f 'netclock-client.c' || echo '$(srcdir)/'`netclock-client.c
 
-read_metadata-read-metadata.obj: read-metadata.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(read_metadata_CFLAGS) $(CFLAGS) -MT read_metadata-read-metadata.obj -MD -MP -MF $(DEPDIR)/read_metadata-read-metadata.Tpo -c -o read_metadata-read-metadata.obj `if test -f 'read-metadata.c'; then $(CYGPATH_W) 'read-metadata.c'; else $(CYGPATH_W) '$(srcdir)/read-metadata.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_metadata-read-metadata.Tpo $(DEPDIR)/read_metadata-read-metadata.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read-metadata.c' object='read_metadata-read-metadata.obj' libtool=no @AMDEPBACKSLASH@
+netclock_client-netclock-client.obj: netclock-client.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_client_CFLAGS) $(CFLAGS) -MT netclock_client-netclock-client.obj -MD -MP -MF $(DEPDIR)/netclock_client-netclock-client.Tpo -c -o netclock_client-netclock-client.obj `if test -f 'netclock-client.c'; then $(CYGPATH_W) 'netclock-client.c'; else $(CYGPATH_W) '$(srcdir)/netclock-client.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/netclock_client-netclock-client.Tpo $(DEPDIR)/netclock_client-netclock-client.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netclock-client.c' object='netclock_client-netclock-client.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) $(read_metadata_CFLAGS) $(CFLAGS) -c -o read_metadata-read-metadata.obj `if test -f 'read-metadata.c'; then $(CYGPATH_W) 'read-metadata.c'; else $(CYGPATH_W) '$(srcdir)/read-metadata.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_client_CFLAGS) $(CFLAGS) -c -o netclock_client-netclock-client.obj `if test -f 'netclock-client.c'; then $(CYGPATH_W) 'netclock-client.c'; else $(CYGPATH_W) '$(srcdir)/netclock-client.c'; fi`
+
+netclock_server-netclock-server.o: netclock-server.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_server_CFLAGS) $(CFLAGS) -MT netclock_server-netclock-server.o -MD -MP -MF $(DEPDIR)/netclock_server-netclock-server.Tpo -c -o netclock_server-netclock-server.o `test -f 'netclock-server.c' || echo '$(srcdir)/'`netclock-server.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/netclock_server-netclock-server.Tpo $(DEPDIR)/netclock_server-netclock-server.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netclock-server.c' object='netclock_server-netclock-server.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_server_CFLAGS) $(CFLAGS) -c -o netclock_server-netclock-server.o `test -f 'netclock-server.c' || echo '$(srcdir)/'`netclock-server.c
+
+netclock_server-netclock-server.obj: netclock-server.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_server_CFLAGS) $(CFLAGS) -MT netclock_server-netclock-server.obj -MD -MP -MF $(DEPDIR)/netclock_server-netclock-server.Tpo -c -o netclock_server-netclock-server.obj `if test -f 'netclock-server.c'; then $(CYGPATH_W) 'netclock-server.c'; else $(CYGPATH_W) '$(srcdir)/netclock-server.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/netclock_server-netclock-server.Tpo $(DEPDIR)/netclock_server-netclock-server.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netclock-server.c' object='netclock_server-netclock-server.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_server_CFLAGS) $(CFLAGS) -c -o netclock_server-netclock-server.obj `if test -f 'netclock-server.c'; then $(CYGPATH_W) 'netclock-server.c'; else $(CYGPATH_W) '$(srcdir)/netclock-server.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -779,6 +840,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/netclock/netclock-client.c b/tests/examples/netclock/netclock-client.c
new file mode 100644
index 0000000..2082297
--- /dev/null
+++ b/tests/examples/netclock/netclock-client.c
@@ -0,0 +1,59 @@
+#include <stdlib.h>
+#include <gst/gst.h>
+#include <gst/net/gstnetclientclock.h>
+
+static gboolean
+handle_bus_message (GstBus * bus, GstMessage * message, GstClock * client_clock)
+{
+  if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT) {
+    const GstStructure *s = gst_message_get_structure (message);
+    gchar *str;
+
+    if (s == NULL)
+      return TRUE;
+    str = gst_structure_to_string (s);
+    g_print ("%s\n", str);
+    g_free (str);
+  }
+  return TRUE;
+}
+
+gint
+main (gint argc, gchar * argv[])
+{
+  GMainLoop *loop;
+  gchar *host;
+  guint16 port;
+  GstClock *client_clock;
+  GstBus *bus;
+
+  gst_init (&argc, &argv);
+
+  if (argc < 3) {
+    g_print ("Usage: netclock-client <host> <port>\n");
+    return 1;
+  }
+
+  host = argv[1];
+  port = atoi (argv[2]);
+
+  client_clock = gst_net_client_clock_new (NULL, host, port, 0);
+  if (client_clock == NULL) {
+    g_printerr ("Failed to create network clock client\n");
+    return 1;
+  }
+
+  bus = gst_bus_new ();
+  gst_bus_add_watch (bus, (GstBusFunc) handle_bus_message, client_clock);
+  g_object_set (G_OBJECT (client_clock), "bus", bus, NULL);
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  g_main_loop_run (loop);
+
+  /* cleanup */
+  g_main_loop_unref (loop);
+  g_object_unref (client_clock);
+
+  return 0;
+}
diff --git a/tests/examples/netclock/netclock-server.c b/tests/examples/netclock/netclock-server.c
new file mode 100644
index 0000000..46513e2
--- /dev/null
+++ b/tests/examples/netclock/netclock-server.c
@@ -0,0 +1,59 @@
+/* GStreamer
+ * Copyright (C) 2014 Jan Schmidt <jan@centricular.com>
+ *
+ * netclock-server.c: Publish a network clock provider
+ *
+ * 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 <stdlib.h>
+#include <gst/gst.h>
+#include <gst/net/gstnettimeprovider.h>
+
+gint
+main (gint argc, gchar * argv[])
+{
+  GMainLoop *loop;
+  GstClock *clock;
+  GstNetTimeProvider *net_clock;
+  int clock_port = 0;
+
+  gst_init (&argc, &argv);
+
+  if (argc > 1) {
+    clock_port = atoi (argv[1]);
+  }
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  clock = gst_system_clock_obtain ();
+  net_clock = gst_net_time_provider_new (clock, NULL, clock_port);
+  gst_object_unref (clock);
+
+  g_object_get (net_clock, "port", &clock_port, NULL);
+
+  g_print ("Published network clock on port %u\n", clock_port);
+
+  g_main_loop_run (loop);
+
+  /* cleanup */
+  g_main_loop_unref (loop);
+
+  return 0;
+}
diff --git a/tests/examples/ptp/Makefile.am b/tests/examples/ptp/Makefile.am
new file mode 100644
index 0000000..d76b4ad
--- /dev/null
+++ b/tests/examples/ptp/Makefile.am
@@ -0,0 +1,7 @@
+noinst_PROGRAMS = ptp-print-times
+
+ptp_print_times_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS)
+ptp_print_times_CFLAGS = $(GST_OBJ_CFLAGS)
+
diff --git a/tests/examples/launch/Makefile.in b/tests/examples/ptp/Makefile.in
similarity index 86%
rename from tests/examples/launch/Makefile.in
rename to tests/examples/ptp/Makefile.in
index ee53fa1..efbcc73 100644
--- a/tests/examples/launch/Makefile.in
+++ b/tests/examples/ptp/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,10 +89,8 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = mp3parselaunch$(EXEEXT)
-subdir = tests/examples/launch
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
+noinst_PROGRAMS = ptp-print-times$(EXEEXT)
+subdir = tests/examples/ptp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,23 +130,26 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-mp3parselaunch_SOURCES = mp3parselaunch.c
-mp3parselaunch_OBJECTS = mp3parselaunch-mp3parselaunch.$(OBJEXT)
+ptp_print_times_SOURCES = ptp-print-times.c
+ptp_print_times_OBJECTS = ptp_print_times-ptp-print-times.$(OBJEXT)
 am__DEPENDENCIES_1 =
-mp3parselaunch_DEPENDENCIES = $(am__DEPENDENCIES_1)
+ptp_print_times_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(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 = 
-mp3parselaunch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ptp_print_times_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(mp3parselaunch_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+	$(ptp_print_times_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
@@ -172,8 +184,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = mp3parselaunch.c
-DIST_SOURCES = mp3parselaunch.c
+SOURCES = ptp-print-times.c
+DIST_SOURCES = ptp-print-times.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -198,6 +210,7 @@
   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@
@@ -209,7 +222,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -300,6 +318,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -311,9 +330,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -335,6 +356,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -396,8 +418,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -463,6 +487,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -475,8 +500,11 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-mp3parselaunch_LDADD = $(GST_OBJ_LIBS)
-mp3parselaunch_CFLAGS = $(GST_OBJ_CFLAGS)
+ptp_print_times_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS)
+
+ptp_print_times_CFLAGS = $(GST_OBJ_CFLAGS)
 all: all-am
 
 .SUFFIXES:
@@ -490,10 +518,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/launch/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/ptp/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/launch/Makefile
-.PRECIOUS: Makefile
+	  $(AUTOMAKE) --gnu tests/examples/ptp/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -521,9 +548,9 @@
 	echo " rm -f" $$list; \
 	rm -f $$list
 
-mp3parselaunch$(EXEEXT): $(mp3parselaunch_OBJECTS) $(mp3parselaunch_DEPENDENCIES) $(EXTRA_mp3parselaunch_DEPENDENCIES) 
-	@rm -f mp3parselaunch$(EXEEXT)
-	$(AM_V_CCLD)$(mp3parselaunch_LINK) $(mp3parselaunch_OBJECTS) $(mp3parselaunch_LDADD) $(LIBS)
+ptp-print-times$(EXEEXT): $(ptp_print_times_OBJECTS) $(ptp_print_times_DEPENDENCIES) $(EXTRA_ptp_print_times_DEPENDENCIES) 
+	@rm -f ptp-print-times$(EXEEXT)
+	$(AM_V_CCLD)$(ptp_print_times_LINK) $(ptp_print_times_OBJECTS) $(ptp_print_times_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -531,7 +558,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3parselaunch-mp3parselaunch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptp_print_times-ptp-print-times.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -557,19 +584,19 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-mp3parselaunch-mp3parselaunch.o: mp3parselaunch.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mp3parselaunch_CFLAGS) $(CFLAGS) -MT mp3parselaunch-mp3parselaunch.o -MD -MP -MF $(DEPDIR)/mp3parselaunch-mp3parselaunch.Tpo -c -o mp3parselaunch-mp3parselaunch.o `test -f 'mp3parselaunch.c' || echo '$(srcdir)/'`mp3parselaunch.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/mp3parselaunch-mp3parselaunch.Tpo $(DEPDIR)/mp3parselaunch-mp3parselaunch.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mp3parselaunch.c' object='mp3parselaunch-mp3parselaunch.o' libtool=no @AMDEPBACKSLASH@
+ptp_print_times-ptp-print-times.o: ptp-print-times.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ptp_print_times_CFLAGS) $(CFLAGS) -MT ptp_print_times-ptp-print-times.o -MD -MP -MF $(DEPDIR)/ptp_print_times-ptp-print-times.Tpo -c -o ptp_print_times-ptp-print-times.o `test -f 'ptp-print-times.c' || echo '$(srcdir)/'`ptp-print-times.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ptp_print_times-ptp-print-times.Tpo $(DEPDIR)/ptp_print_times-ptp-print-times.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ptp-print-times.c' object='ptp_print_times-ptp-print-times.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) $(mp3parselaunch_CFLAGS) $(CFLAGS) -c -o mp3parselaunch-mp3parselaunch.o `test -f 'mp3parselaunch.c' || echo '$(srcdir)/'`mp3parselaunch.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ptp_print_times_CFLAGS) $(CFLAGS) -c -o ptp_print_times-ptp-print-times.o `test -f 'ptp-print-times.c' || echo '$(srcdir)/'`ptp-print-times.c
 
-mp3parselaunch-mp3parselaunch.obj: mp3parselaunch.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mp3parselaunch_CFLAGS) $(CFLAGS) -MT mp3parselaunch-mp3parselaunch.obj -MD -MP -MF $(DEPDIR)/mp3parselaunch-mp3parselaunch.Tpo -c -o mp3parselaunch-mp3parselaunch.obj `if test -f 'mp3parselaunch.c'; then $(CYGPATH_W) 'mp3parselaunch.c'; else $(CYGPATH_W) '$(srcdir)/mp3parselaunch.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/mp3parselaunch-mp3parselaunch.Tpo $(DEPDIR)/mp3parselaunch-mp3parselaunch.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mp3parselaunch.c' object='mp3parselaunch-mp3parselaunch.obj' libtool=no @AMDEPBACKSLASH@
+ptp_print_times-ptp-print-times.obj: ptp-print-times.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ptp_print_times_CFLAGS) $(CFLAGS) -MT ptp_print_times-ptp-print-times.obj -MD -MP -MF $(DEPDIR)/ptp_print_times-ptp-print-times.Tpo -c -o ptp_print_times-ptp-print-times.obj `if test -f 'ptp-print-times.c'; then $(CYGPATH_W) 'ptp-print-times.c'; else $(CYGPATH_W) '$(srcdir)/ptp-print-times.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ptp_print_times-ptp-print-times.Tpo $(DEPDIR)/ptp_print_times-ptp-print-times.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ptp-print-times.c' object='ptp_print_times-ptp-print-times.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) $(mp3parselaunch_CFLAGS) $(CFLAGS) -c -o mp3parselaunch-mp3parselaunch.obj `if test -f 'mp3parselaunch.c'; then $(CYGPATH_W) 'mp3parselaunch.c'; else $(CYGPATH_W) '$(srcdir)/mp3parselaunch.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ptp_print_times_CFLAGS) $(CFLAGS) -c -o ptp_print_times-ptp-print-times.obj `if test -f 'ptp-print-times.c'; then $(CYGPATH_W) 'ptp-print-times.c'; else $(CYGPATH_W) '$(srcdir)/ptp-print-times.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -780,9 +807,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
 
-#noinst_SCRIPTS = mp3play
-#EXTRA_DIST = mp3play
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/ptp/ptp-print-times.c b/tests/examples/ptp/ptp-print-times.c
new file mode 100644
index 0000000..e6c666f
--- /dev/null
+++ b/tests/examples/ptp/ptp-print-times.c
@@ -0,0 +1,100 @@
+/* GStreamer
+ * Copyright (C) 2015 Sebastian Dröge <sebastian@centricular.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* Create a PTP client clock and print times and statistics.
+ *
+ * When running this from a GStreamer build tree, you will have to set
+ * GST_PTP_HELPER to libs/gst/helpers/.libs/gst-ptp-helper and also
+ * make sure that it has the right permissions (setuid root or appropriate
+ * capabilities
+ *
+ * You can test this with any PTP compatible clock, e.g. ptpd from here: http://ptpd.sourceforge.net/
+ *
+ * For testing the accuracy, you can use the PTP reflector available from
+ * http://code.centricular.com/ptp-clock-reflector/ or here
+ * https://github.com/sdroege/ptp-clock-reflector
+ */
+
+#include <gst/gst.h>
+#include <gst/net/net.h>
+
+static gint domain = 0;
+static gboolean stats = FALSE;
+
+static GOptionEntry opt_entries[] = {
+  {"domain", 'd', 0, G_OPTION_ARG_INT, &domain,
+      "PTP domain", NULL},
+  {"stats", 's', 0, G_OPTION_ARG_NONE, &stats,
+      "Print PTP statistics", NULL},
+  {NULL}
+};
+
+static gboolean
+stats_cb (guint8 d, const GstStructure * stats, gpointer user_data)
+{
+  if (d == domain) {
+    gchar *stats_str = gst_structure_to_string (stats);
+    g_print ("Got stats: %s\n", stats_str);
+    g_free (stats_str);
+  }
+
+  return TRUE;
+}
+
+gint
+main (gint argc, gchar ** argv)
+{
+  GOptionContext *opt_ctx;
+  GstClock *clock;
+  GError *err = NULL;
+
+  opt_ctx = g_option_context_new ("- GStreamer PTP clock test app");
+  g_option_context_add_main_entries (opt_ctx, opt_entries, NULL);
+  g_option_context_add_group (opt_ctx, gst_init_get_option_group ());
+  if (!g_option_context_parse (opt_ctx, &argc, &argv, &err))
+    g_error ("Error parsing options: %s", err->message);
+  g_option_context_free (opt_ctx);
+
+  if (!gst_ptp_init (GST_PTP_CLOCK_ID_NONE, NULL))
+    g_error ("failed to init ptp");
+
+  if (stats)
+    gst_ptp_statistics_callback_add (stats_cb, NULL, NULL);
+
+  clock = gst_ptp_clock_new ("test-clock", domain);
+
+  gst_clock_wait_for_sync (GST_CLOCK (clock), GST_CLOCK_TIME_NONE);
+
+  while (TRUE) {
+    GstClockTime local, remote;
+    GstClockTimeDiff diff;
+
+    local = g_get_real_time () * 1000;
+    remote = gst_clock_get_time (clock);
+    diff = GST_CLOCK_DIFF (local, remote);
+
+    g_print ("local: %" GST_TIME_FORMAT " ptp: %" GST_TIME_FORMAT " diff: %s%"
+        GST_TIME_FORMAT "\n", GST_TIME_ARGS (local), GST_TIME_ARGS (remote),
+        (diff < 0 ? "-" : " "), GST_TIME_ARGS (ABS (diff)));
+    g_usleep (100000);
+  }
+
+  return 0;
+}
diff --git a/tests/examples/queue/Makefile.am b/tests/examples/queue/Makefile.am
deleted file mode 100644
index 9d66839..0000000
--- a/tests/examples/queue/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-noinst_PROGRAMS = queue
-
-queue_LDADD = $(GST_OBJ_LIBS)
-queue_CFLAGS = $(GST_OBJ_CFLAGS)
-
diff --git a/tests/examples/queue/queue.c b/tests/examples/queue/queue.c
deleted file mode 100644
index 27ca94e..0000000
--- a/tests/examples/queue/queue.c
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <stdlib.h>
-#include <gst/gst.h>
-
-/* This example uses the queue element to create a buffer between 2 elements.
- * The scheduler automatically uses 2 threads, 1 to feed and another to consume
- * data from the queue buffer
- */
-
-/* Event loop to listen to events posted on the GstBus from the pipeline. Exits
- * on EOS or ERROR events
- */
-static void
-event_loop (GstElement * pipe)
-{
-  GstBus *bus;
-  GstMessage *message = NULL;
-  gboolean running = TRUE;
-
-  bus = gst_element_get_bus (GST_ELEMENT (pipe));
-
-  while (running) {
-    message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
-
-    g_assert (message != NULL);
-
-    switch (message->type) {
-      case GST_MESSAGE_EOS:
-        running = FALSE;
-        break;
-      case GST_MESSAGE_WARNING:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_warning (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        break;
-      }
-      case GST_MESSAGE_ERROR:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_error (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        running = FALSE;
-        break;
-      }
-      default:
-        break;
-    }
-    gst_message_unref (message);
-  }
-  gst_object_unref (bus);
-}
-
-int
-main (int argc, char *argv[])
-{
-  GstElement *filesrc, *audiosink, *decode, *queue;
-  GstElement *pipeline;
-
-  gst_init (&argc, &argv);
-
-  if (argc != 2) {
-    g_print ("usage: %s <filename>\n", argv[0]);
-    exit (-1);
-  }
-
-  /* create a new pipeline to hold the elements */
-  pipeline = gst_pipeline_new ("pipeline");
-  g_assert (pipeline != NULL);
-
-  /* create a disk reader */
-  filesrc = gst_element_factory_make ("filesrc", "disk_source");
-  g_assert (filesrc != NULL);
-  g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
-
-  decode = gst_element_factory_make ("mad", "decode");
-  g_assert (decode != NULL);
-
-  queue = gst_element_factory_make ("queue", "queue");
-  g_assert (queue != NULL);
-
-  /* and an audio sink */
-  audiosink = gst_element_factory_make ("alsasink", "play_audio");
-  g_assert (audiosink != NULL);
-
-  /* add objects to the main pipeline */
-  gst_bin_add_many (GST_BIN (pipeline), filesrc, decode, queue, audiosink,
-      NULL);
-
-  gst_element_link_many (filesrc, decode, queue, audiosink, NULL);
-
-  /* start playing */
-  gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
-
-  /* Listen for EOS */
-  event_loop (pipeline);
-
-  gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
-
-  exit (0);
-}
diff --git a/tests/examples/stepping/Makefile.in b/tests/examples/stepping/Makefile.in
index 139a0e6..d9988e8 100644
--- a/tests/examples/stepping/Makefile.in
+++ b/tests/examples/stepping/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = framestep1$(EXEEXT)
 subdir = tests/examples/stepping
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,6 +130,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -197,6 +207,7 @@
   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@
@@ -208,7 +219,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +315,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +327,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +353,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +415,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +484,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -492,7 +515,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/stepping/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/stepping/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -779,6 +801,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/streamiddemux/Makefile.am b/tests/examples/streamiddemux/Makefile.am
new file mode 100644
index 0000000..e182d29
--- /dev/null
+++ b/tests/examples/streamiddemux/Makefile.am
@@ -0,0 +1,6 @@
+noinst_PROGRAMS = streamiddemux-stream
+
+streamiddemux_stream_SOURCES = streamiddemux-stream.c
+streamiddemux_stream_LDADD = $(GST_OBJ_LIBS)
+streamiddemux_stream_CFLAGS = $(GST_OBJ_CFLAGS)
+
diff --git a/tests/examples/metadata/Makefile.in b/tests/examples/streamiddemux/Makefile.in
similarity index 84%
rename from tests/examples/metadata/Makefile.in
rename to tests/examples/streamiddemux/Makefile.in
index 61a9698..06054d2 100644
--- a/tests/examples/metadata/Makefile.in
+++ b/tests/examples/streamiddemux/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,10 +89,8 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = read-metadata$(EXEEXT)
-subdir = tests/examples/metadata
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
+noinst_PROGRAMS = streamiddemux-stream$(EXEEXT)
+subdir = tests/examples/streamiddemux
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -91,6 +99,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -108,7 +117,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -121,22 +130,25 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-read_metadata_SOURCES = read-metadata.c
-read_metadata_OBJECTS = read_metadata-read-metadata.$(OBJEXT)
+am_streamiddemux_stream_OBJECTS =  \
+	streamiddemux_stream-streamiddemux-stream.$(OBJEXT)
+streamiddemux_stream_OBJECTS = $(am_streamiddemux_stream_OBJECTS)
 am__DEPENDENCIES_1 =
-read_metadata_DEPENDENCIES = $(am__DEPENDENCIES_1)
+streamiddemux_stream_DEPENDENCIES = $(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 = 
-read_metadata_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(read_metadata_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+streamiddemux_stream_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(streamiddemux_stream_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
@@ -171,8 +183,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = read-metadata.c
-DIST_SOURCES = read-metadata.c
+SOURCES = $(streamiddemux_stream_SOURCES)
+DIST_SOURCES = $(streamiddemux_stream_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -197,6 +209,7 @@
   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@
@@ -208,7 +221,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -299,6 +317,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -310,9 +329,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -334,6 +355,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -395,8 +417,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -462,6 +486,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -474,8 +499,9 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-read_metadata_LDADD = $(GST_OBJ_LIBS)
-read_metadata_CFLAGS = $(GST_OBJ_CFLAGS)
+streamiddemux_stream_SOURCES = streamiddemux-stream.c
+streamiddemux_stream_LDADD = $(GST_OBJ_LIBS)
+streamiddemux_stream_CFLAGS = $(GST_OBJ_CFLAGS)
 all: all-am
 
 .SUFFIXES:
@@ -489,10 +515,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/metadata/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/streamiddemux/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/metadata/Makefile
-.PRECIOUS: Makefile
+	  $(AUTOMAKE) --gnu tests/examples/streamiddemux/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -520,9 +545,9 @@
 	echo " rm -f" $$list; \
 	rm -f $$list
 
-read-metadata$(EXEEXT): $(read_metadata_OBJECTS) $(read_metadata_DEPENDENCIES) $(EXTRA_read_metadata_DEPENDENCIES) 
-	@rm -f read-metadata$(EXEEXT)
-	$(AM_V_CCLD)$(read_metadata_LINK) $(read_metadata_OBJECTS) $(read_metadata_LDADD) $(LIBS)
+streamiddemux-stream$(EXEEXT): $(streamiddemux_stream_OBJECTS) $(streamiddemux_stream_DEPENDENCIES) $(EXTRA_streamiddemux_stream_DEPENDENCIES) 
+	@rm -f streamiddemux-stream$(EXEEXT)
+	$(AM_V_CCLD)$(streamiddemux_stream_LINK) $(streamiddemux_stream_OBJECTS) $(streamiddemux_stream_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -530,7 +555,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read_metadata-read-metadata.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -556,19 +581,19 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-read_metadata-read-metadata.o: read-metadata.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(read_metadata_CFLAGS) $(CFLAGS) -MT read_metadata-read-metadata.o -MD -MP -MF $(DEPDIR)/read_metadata-read-metadata.Tpo -c -o read_metadata-read-metadata.o `test -f 'read-metadata.c' || echo '$(srcdir)/'`read-metadata.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_metadata-read-metadata.Tpo $(DEPDIR)/read_metadata-read-metadata.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read-metadata.c' object='read_metadata-read-metadata.o' libtool=no @AMDEPBACKSLASH@
+streamiddemux_stream-streamiddemux-stream.o: streamiddemux-stream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(streamiddemux_stream_CFLAGS) $(CFLAGS) -MT streamiddemux_stream-streamiddemux-stream.o -MD -MP -MF $(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Tpo -c -o streamiddemux_stream-streamiddemux-stream.o `test -f 'streamiddemux-stream.c' || echo '$(srcdir)/'`streamiddemux-stream.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Tpo $(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='streamiddemux-stream.c' object='streamiddemux_stream-streamiddemux-stream.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) $(read_metadata_CFLAGS) $(CFLAGS) -c -o read_metadata-read-metadata.o `test -f 'read-metadata.c' || echo '$(srcdir)/'`read-metadata.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(streamiddemux_stream_CFLAGS) $(CFLAGS) -c -o streamiddemux_stream-streamiddemux-stream.o `test -f 'streamiddemux-stream.c' || echo '$(srcdir)/'`streamiddemux-stream.c
 
-read_metadata-read-metadata.obj: read-metadata.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(read_metadata_CFLAGS) $(CFLAGS) -MT read_metadata-read-metadata.obj -MD -MP -MF $(DEPDIR)/read_metadata-read-metadata.Tpo -c -o read_metadata-read-metadata.obj `if test -f 'read-metadata.c'; then $(CYGPATH_W) 'read-metadata.c'; else $(CYGPATH_W) '$(srcdir)/read-metadata.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_metadata-read-metadata.Tpo $(DEPDIR)/read_metadata-read-metadata.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read-metadata.c' object='read_metadata-read-metadata.obj' libtool=no @AMDEPBACKSLASH@
+streamiddemux_stream-streamiddemux-stream.obj: streamiddemux-stream.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(streamiddemux_stream_CFLAGS) $(CFLAGS) -MT streamiddemux_stream-streamiddemux-stream.obj -MD -MP -MF $(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Tpo -c -o streamiddemux_stream-streamiddemux-stream.obj `if test -f 'streamiddemux-stream.c'; then $(CYGPATH_W) 'streamiddemux-stream.c'; else $(CYGPATH_W) '$(srcdir)/streamiddemux-stream.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Tpo $(DEPDIR)/streamiddemux_stream-streamiddemux-stream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='streamiddemux-stream.c' object='streamiddemux_stream-streamiddemux-stream.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) $(read_metadata_CFLAGS) $(CFLAGS) -c -o read_metadata-read-metadata.obj `if test -f 'read-metadata.c'; then $(CYGPATH_W) 'read-metadata.c'; else $(CYGPATH_W) '$(srcdir)/read-metadata.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(streamiddemux_stream_CFLAGS) $(CFLAGS) -c -o streamiddemux_stream-streamiddemux-stream.obj `if test -f 'streamiddemux-stream.c'; then $(CYGPATH_W) 'streamiddemux-stream.c'; else $(CYGPATH_W) '$(srcdir)/streamiddemux-stream.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -779,6 +804,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/streamiddemux/streamiddemux-stream.c b/tests/examples/streamiddemux/streamiddemux-stream.c
new file mode 100644
index 0000000..1ef128b
--- /dev/null
+++ b/tests/examples/streamiddemux/streamiddemux-stream.c
@@ -0,0 +1,241 @@
+#include <gst/gst.h>
+
+#define NUM_STREAM 13
+
+typedef struct _App App;
+
+struct _App
+{
+  GstElement *pipeline;
+  GstElement *audiotestsrc[NUM_STREAM];
+  GstElement *audioconvert[NUM_STREAM];
+  GstElement *capsfilter[NUM_STREAM];
+  GstElement *vorbisenc[NUM_STREAM];
+  GstElement *oggmux[NUM_STREAM];
+  GstElement *funnel;
+  GstElement *demux;
+  GstElement *stream_synchronizer;
+  GstElement *queue[NUM_STREAM];
+  GstElement *filesink[NUM_STREAM];
+
+  gboolean pad_blocked[NUM_STREAM];
+  GstPad *queue_srcpad[NUM_STREAM];
+  gulong blocked_id[NUM_STREAM];
+};
+
+App s_app;
+
+gint pad_added_cnt = 0;
+
+static gboolean
+bus_call (GstBus * bus, GstMessage * msg, gpointer data)
+{
+  GMainLoop *loop = (GMainLoop *) data;
+
+  switch (GST_MESSAGE_TYPE (msg)) {
+    case GST_MESSAGE_EOS:{
+      g_main_loop_quit (loop);
+      break;
+    }
+    case GST_MESSAGE_ERROR:{
+      g_main_loop_quit (loop);
+      break;
+    }
+    default:
+      break;
+  }
+  return TRUE;
+}
+
+static void
+set_blocked (App * app, gboolean blocked)
+{
+  gint i = 0;
+
+  for (i = 0; i < NUM_STREAM; i++) {
+    gst_pad_remove_probe (app->queue_srcpad[i], app->blocked_id[i]);
+  }
+}
+
+static void
+sink_do_reconfigure (App * app)
+{
+  gint i = 0;
+  GstPad *filesink_sinkpad[NUM_STREAM];
+  GstPad *sync_sinkpad[NUM_STREAM];
+  GstPad *sync_srcpad[NUM_STREAM];
+  GstIterator *it;
+  GValue item = G_VALUE_INIT;
+
+  for (i = 0; i < NUM_STREAM; i++) {
+    sync_sinkpad[i] =
+        gst_element_get_request_pad (app->stream_synchronizer, "sink_%u");
+    it = gst_pad_iterate_internal_links (sync_sinkpad[i]);
+    g_assert (it);
+    gst_iterator_next (it, &item);
+    sync_srcpad[i] = g_value_dup_object (&item);
+    g_value_unset (&item);
+
+    filesink_sinkpad[i] = gst_element_get_static_pad (app->filesink[i], "sink");
+
+    gst_pad_link_full (app->queue_srcpad[i], sync_sinkpad[i],
+        GST_PAD_LINK_CHECK_NOTHING);
+    gst_pad_link_full (sync_srcpad[i], filesink_sinkpad[i],
+        GST_PAD_LINK_CHECK_NOTHING);
+  }
+  gst_iterator_free (it);
+
+}
+
+static GstPadProbeReturn
+blocked_cb (GstPad * blockedpad, GstPadProbeInfo * info, gpointer user_data)
+{
+  App *app = user_data;
+  gint i = 0;
+  gboolean all_pads_blocked = TRUE;
+
+  for (i = 0; i < NUM_STREAM; i++) {
+    if (blockedpad == app->queue_srcpad[i])
+      app->pad_blocked[i] = TRUE;
+  }
+
+  for (i = 0; i < NUM_STREAM; i++) {
+    if (app->queue_srcpad[i] == FALSE) {
+      all_pads_blocked = FALSE;
+      break;
+    }
+  }
+
+  if (all_pads_blocked == TRUE) {
+    sink_do_reconfigure (app);
+    set_blocked (app, FALSE);
+  }
+
+  return GST_PAD_PROBE_OK;
+}
+
+static void
+src_pad_added_cb (GstElement * demux, GstPad * pad, App * app)
+{
+  GstPad *queue_sinkpad[NUM_STREAM];
+
+  queue_sinkpad[pad_added_cnt] =
+      gst_element_get_static_pad (app->queue[pad_added_cnt], "sink");
+  gst_pad_link_full (pad, queue_sinkpad[pad_added_cnt],
+      GST_PAD_LINK_CHECK_NOTHING);
+
+  app->queue_srcpad[pad_added_cnt] =
+      gst_element_get_static_pad (app->queue[pad_added_cnt], "src");
+  app->blocked_id[pad_added_cnt] =
+      gst_pad_add_probe (app->queue_srcpad[pad_added_cnt],
+      GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM, blocked_cb, app, NULL);
+
+  pad_added_cnt++;
+}
+
+gint
+main (gint argc, gchar * argv[])
+{
+  App *app = &s_app;
+
+  GMainLoop *loop = NULL;
+  GstBus *bus;
+  guint bus_watch_id;
+
+  GstPad *funnel_sinkpad[NUM_STREAM];
+  GstPad *funnel_srcpad;
+  GstPad *demux_sinkpad;
+  GstPad *oggmux_srcpad[NUM_STREAM];
+
+  guint stream_cnt = 0;
+  GstCaps *caps;
+
+  gst_init (&argc, &argv);
+
+  app->pipeline = gst_pipeline_new ("pipeline");
+
+  for (stream_cnt = 0; stream_cnt < NUM_STREAM; stream_cnt++) {
+    app->audiotestsrc[stream_cnt] =
+        gst_element_factory_make ("audiotestsrc", NULL);
+    app->audioconvert[stream_cnt] =
+        gst_element_factory_make ("audioconvert", NULL);
+    app->capsfilter[stream_cnt] = gst_element_factory_make ("capsfilter", NULL);
+    app->vorbisenc[stream_cnt] = gst_element_factory_make ("vorbisenc", NULL);
+    app->oggmux[stream_cnt] = gst_element_factory_make ("oggmux", NULL);
+  }
+
+  app->funnel = gst_element_factory_make ("funnel", NULL);
+  app->demux = gst_element_factory_make ("streamiddemux", NULL);
+  app->stream_synchronizer =
+      gst_element_factory_make ("streamsynchronizer", NULL);
+
+  caps = gst_caps_from_string ("audio/x-raw,channels=1;");
+
+  stream_cnt = 0;
+
+  for (stream_cnt = 0; stream_cnt < NUM_STREAM; stream_cnt++) {
+    app->queue[stream_cnt] = gst_element_factory_make ("queue", NULL);
+    app->filesink[stream_cnt] = gst_element_factory_make ("filesink", NULL);
+
+    g_object_set (app->audiotestsrc[stream_cnt], "wave", stream_cnt,
+        "num-buffers", 2000, NULL);
+    g_object_set (app->capsfilter[stream_cnt], "caps", caps, NULL);
+    g_object_set (app->filesink[stream_cnt], "location",
+        g_strdup_printf ("filesink_%d.ogg", stream_cnt), NULL);
+  }
+
+  stream_cnt = 0;
+
+  g_signal_connect (app->demux, "pad-added", G_CALLBACK (src_pad_added_cb),
+      app);
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  bus = gst_element_get_bus (app->pipeline);
+  bus_watch_id = gst_bus_add_watch (bus, bus_call, loop);
+  g_object_unref (bus);
+
+  for (stream_cnt = 0; stream_cnt < NUM_STREAM; stream_cnt++) {
+    gst_bin_add_many (GST_BIN (app->pipeline), app->audiotestsrc[stream_cnt],
+        app->audioconvert[stream_cnt], app->capsfilter[stream_cnt],
+        app->vorbisenc[stream_cnt], app->oggmux[stream_cnt],
+        app->queue[stream_cnt], app->filesink[stream_cnt], NULL);
+    if (stream_cnt == 0) {
+      gst_bin_add_many (GST_BIN (app->pipeline), app->funnel, app->demux,
+          app->stream_synchronizer, NULL);
+    }
+  }
+
+  stream_cnt = 0;
+
+  for (stream_cnt = 0; stream_cnt < NUM_STREAM; stream_cnt++) {
+    gst_element_link_many (app->audiotestsrc[stream_cnt],
+        app->audioconvert[stream_cnt], app->capsfilter[stream_cnt],
+        app->vorbisenc[stream_cnt], app->oggmux[stream_cnt], NULL);
+  }
+
+  stream_cnt = 0;
+
+  for (stream_cnt = 0; stream_cnt < NUM_STREAM; stream_cnt++) {
+    funnel_sinkpad[stream_cnt] =
+        gst_element_get_request_pad (app->funnel, "sink_%u");
+    oggmux_srcpad[stream_cnt] =
+        gst_element_get_static_pad (app->oggmux[stream_cnt], "src");
+    gst_pad_link (oggmux_srcpad[stream_cnt], funnel_sinkpad[stream_cnt]);
+  }
+
+  funnel_srcpad = gst_element_get_static_pad (app->funnel, "src");
+
+  demux_sinkpad = gst_element_get_static_pad (app->demux, "sink");
+  gst_pad_link (funnel_srcpad, demux_sinkpad);
+
+  gst_element_set_state (app->pipeline, GST_STATE_PLAYING);
+  g_main_loop_run (loop);
+
+  gst_element_set_state (app->pipeline, GST_STATE_NULL);
+  g_object_unref (app->pipeline);
+  g_source_remove (bus_watch_id);
+  g_main_loop_unref (loop);
+
+  return 0;
+}
diff --git a/tests/examples/streams/Makefile.in b/tests/examples/streams/Makefile.in
index 1ba1acb..f2d7d8d 100644
--- a/tests/examples/streams/Makefile.in
+++ b/tests/examples/streams/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -82,8 +92,6 @@
 noinst_PROGRAMS = stream-status$(EXEEXT) $(am__EXEEXT_1)
 @HAVE_PTHREAD_TRUE@am__append_1 = rtpool-test
 subdir = tests/examples/streams
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -92,6 +100,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -109,7 +118,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -122,6 +131,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -206,6 +216,7 @@
   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@
@@ -217,7 +228,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -308,6 +324,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -319,9 +336,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -343,6 +362,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -404,8 +424,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -471,6 +493,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -506,7 +529,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/streams/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/streams/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -827,6 +849,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/typefind/Makefile.am b/tests/examples/typefind/Makefile.am
deleted file mode 100644
index cc99802..0000000
--- a/tests/examples/typefind/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-noinst_PROGRAMS = typefind
-
-typefind_LDADD = $(GST_OBJ_LIBS)
-typefind_CFLAGS = $(GST_OBJ_CFLAGS)
-
diff --git a/tests/examples/typefind/Makefile.in b/tests/examples/typefind/Makefile.in
deleted file mode 100644
index f979f9a..0000000
--- a/tests/examples/typefind/Makefile.in
+++ /dev/null
@@ -1,785 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-noinst_PROGRAMS = typefind$(EXEEXT)
-subdir = tests/examples/typefind
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
-	$(top_srcdir)/common/m4/as-auto-alt.m4 \
-	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
-	$(top_srcdir)/common/m4/as-docbook.m4 \
-	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-version.m4 \
-	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
-	$(top_srcdir)/common/m4/gst-arch.m4 \
-	$(top_srcdir)/common/m4/gst-args.m4 \
-	$(top_srcdir)/common/m4/gst-check.m4 \
-	$(top_srcdir)/common/m4/gst-doc.m4 \
-	$(top_srcdir)/common/m4/gst-error.m4 \
-	$(top_srcdir)/common/m4/gst-feature.m4 \
-	$(top_srcdir)/common/m4/gst-function.m4 \
-	$(top_srcdir)/common/m4/gst-gettext.m4 \
-	$(top_srcdir)/common/m4/gst-glib2.m4 \
-	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
-	$(top_srcdir)/common/m4/gst-parser.m4 \
-	$(top_srcdir)/common/m4/gst-platform.m4 \
-	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
-	$(top_srcdir)/common/m4/gst-plugindir.m4 \
-	$(top_srcdir)/common/m4/gst.m4 \
-	$(top_srcdir)/common/m4/gtk-doc.m4 \
-	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
-	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/longlong.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stdint_h.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-typefind_SOURCES = typefind.c
-typefind_OBJECTS = typefind-typefind.$(OBJEXT)
-am__DEPENDENCIES_1 =
-typefind_DEPENDENCIES = $(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 = 
-typefind_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(typefind_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
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = typefind.c
-DIST_SOURCES = typefind.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)
-# 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
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BISON_PATH = @BISON_PATH@
-CAT_ENTRY_END = @CAT_ENTRY_END@
-CAT_ENTRY_START = @CAT_ENTRY_START@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CHECK_MAJOR_VERSION = @CHECK_MAJOR_VERSION@
-CHECK_MICRO_VERSION = @CHECK_MICRO_VERSION@
-CHECK_MINOR_VERSION = @CHECK_MINOR_VERSION@
-CHECK_VERSION = @CHECK_VERSION@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATADIR = @DATADIR@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DLLTOOL = @DLLTOOL@
-DOCBOOK_ROOT = @DOCBOOK_ROOT@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_SUBUNIT = @ENABLE_SUBUNIT@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLEX_PATH = @FLEX_PATH@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMP_LIBS = @GMP_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSL_LIBS = @GSL_LIBS@
-GST_AGE = @GST_AGE@
-GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
-GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-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_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@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_OBJ_CFLAGS = @GST_OBJ_CFLAGS@
-GST_OBJ_CXXFLAGS = @GST_OBJ_CXXFLAGS@
-GST_OBJ_LIBS = @GST_OBJ_LIBS@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PKG_CONFIG_PATH = @GST_PKG_CONFIG_PATH@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
-GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
-GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
-GST_REVISION = @GST_REVISION@
-GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
-GST_VERSION_MICRO = @GST_VERSION_MICRO@
-GST_VERSION_MINOR = @GST_VERSION_MINOR@
-GST_VERSION_NANO = @GST_VERSION_NANO@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
-HAVE_DVIPS = @HAVE_DVIPS@
-HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
-HAVE_GMP = @HAVE_GMP@
-HAVE_GSL = @HAVE_GSL@
-HAVE_JADETEX = @HAVE_JADETEX@
-HAVE_PNGTOPNM = @HAVE_PNGTOPNM@
-HAVE_PNMTOPS = @HAVE_PNMTOPS@
-HAVE_PS2PDF = @HAVE_PS2PDF@
-HAVE_XMLLINT = @HAVE_XMLLINT@
-HAVE_XSLTPROC = @HAVE_XSLTPROC@
-HOST_CPU = @HOST_CPU@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDIR = @LIBDIR@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL_PATH = @PERL_PATH@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PRINTF_CFLAGS = @PRINTF_CFLAGS@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WIN32_LIBS = @WIN32_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XML_CATALOG = @XML_CATALOG@
-XSLTPROC = @XSLTPROC@
-XSLTPROC_FLAGS = @XSLTPROC_FLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-typefind_LDADD = $(GST_OBJ_LIBS)
-typefind_CFLAGS = $(GST_OBJ_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 \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/typefind/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/typefind/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-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
-
-typefind$(EXEEXT): $(typefind_OBJECTS) $(typefind_DEPENDENCIES) $(EXTRA_typefind_DEPENDENCIES) 
-	@rm -f typefind$(EXEEXT)
-	$(AM_V_CCLD)$(typefind_LINK) $(typefind_OBJECTS) $(typefind_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typefind-typefind.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 $@ $<
-
-typefind-typefind.o: typefind.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(typefind_CFLAGS) $(CFLAGS) -MT typefind-typefind.o -MD -MP -MF $(DEPDIR)/typefind-typefind.Tpo -c -o typefind-typefind.o `test -f 'typefind.c' || echo '$(srcdir)/'`typefind.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/typefind-typefind.Tpo $(DEPDIR)/typefind-typefind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='typefind.c' object='typefind-typefind.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) $(typefind_CFLAGS) $(CFLAGS) -c -o typefind-typefind.o `test -f 'typefind.c' || echo '$(srcdir)/'`typefind.c
-
-typefind-typefind.obj: typefind.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(typefind_CFLAGS) $(CFLAGS) -MT typefind-typefind.obj -MD -MP -MF $(DEPDIR)/typefind-typefind.Tpo -c -o typefind-typefind.obj `if test -f 'typefind.c'; then $(CYGPATH_W) 'typefind.c'; else $(CYGPATH_W) '$(srcdir)/typefind.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/typefind-typefind.Tpo $(DEPDIR)/typefind-typefind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='typefind.c' object='typefind-typefind.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) $(typefind_CFLAGS) $(CFLAGS) -c -o typefind-typefind.obj `if test -f 'typefind.c'; then $(CYGPATH_W) 'typefind.c'; else $(CYGPATH_W) '$(srcdir)/typefind.c'; fi`
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tests/examples/typefind/typefind.c b/tests/examples/typefind/typefind.c
deleted file mode 100644
index d9576a4..0000000
--- a/tests/examples/typefind/typefind.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* GStreamer typefind element example
- * Copyright (C) <2005> Stefan Kost
- * Copyright (C) <2006> Tim-Philipp Müller
- *
- * 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 <stdlib.h>
-
-static void
-type_found (GstElement * typefind, guint probability, const GstCaps * caps,
-    gpointer user_data)
-{
-  gchar *xml, *caps_str;
-
-  caps_str = gst_caps_to_string (caps);
-  xml = g_markup_printf_escaped ("<?xml version=\"1.0\"?>\n<Capabilities>\n"
-      " <Caps1>%s</Caps1>\n</Capabilities>", caps_str);
-  g_free (caps_str);
-
-  g_print ("%s\n", xml);
-  g_free (xml);
-}
-
-static void
-event_loop (GstElement * pipe)
-{
-  GstBus *bus;
-  GstMessage *message = NULL;
-  gboolean running = TRUE;
-
-  bus = gst_element_get_bus (GST_ELEMENT (pipe));
-
-  while (running) {
-    message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
-
-    g_assert (message != NULL);
-
-    switch (message->type) {
-      case GST_MESSAGE_EOS:
-        running = FALSE;
-        break;
-      case GST_MESSAGE_WARNING:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_warning (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        break;
-      }
-      case GST_MESSAGE_ERROR:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_error (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        running = FALSE;
-        break;
-      }
-      default:
-        break;
-    }
-    gst_message_unref (message);
-  }
-  gst_object_unref (bus);
-}
-
-int
-main (int argc, char *argv[])
-{
-  GstElement *pipeline, *filesrc, *typefind, *sink;
-
-  gst_init (&argc, &argv);
-
-  if (argc != 2) {
-    g_print ("usage: %s <filename>\n", argv[0]);
-    exit (-1);
-  }
-
-  /* create a new pipeline to hold the elements */
-  pipeline = gst_pipeline_new ("pipeline");
-  g_assert (pipeline != NULL);
-
-  /* create a file reader */
-  filesrc = gst_element_factory_make ("filesrc", "file_source");
-  g_assert (filesrc != NULL);
-  g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
-
-  typefind = gst_element_factory_make ("typefind", "typefind");
-  g_assert (typefind != NULL);
-
-  sink = gst_element_factory_make ("fakesink", "sink");
-  g_assert (sink != NULL);
-
-  /* add objects to the main pipeline */
-  gst_bin_add (GST_BIN (pipeline), filesrc);
-  gst_bin_add (GST_BIN (pipeline), typefind);
-  gst_bin_add (GST_BIN (pipeline), sink);
-
-  g_signal_connect (G_OBJECT (typefind), "have-type",
-      G_CALLBACK (type_found), NULL);
-
-  gst_element_link_many (filesrc, typefind, sink, NULL);
-
-  /* start playing */
-  gst_element_set_state (pipeline, GST_STATE_PLAYING);
-
-  /* Run event loop listening for bus messages until EOS or ERROR */
-  event_loop (pipeline);
-
-  /* stop the bin */
-  gst_element_set_state (pipeline, GST_STATE_NULL);
-  gst_object_unref (pipeline);
-
-  exit (0);
-}
diff --git a/tests/misc/Makefile.in b/tests/misc/Makefile.in
index 63318a4..d22badc 100644
--- a/tests/misc/Makefile.in
+++ b/tests/misc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,7 +89,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = tests/misc
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -88,6 +97,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -105,7 +115,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -118,6 +128,7 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -142,6 +153,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -153,7 +165,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -244,6 +261,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -255,9 +273,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -279,6 +299,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -340,8 +361,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -407,6 +430,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -439,7 +463,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/misc/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/misc/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -614,6 +637,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 08bdace..46f814d 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -19,21 +19,6 @@
 gst_launch_@GST_API_VERSION@_LDADD = $(GST_OBJ_LIBS)
 endif
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:EXECUTABLE gst-inspect-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:SOURCES $(gst_inspect_@GST_API_VERSION@_SOURCES) \
-	 -:CFLAGS $(DEFS) $(gst_inspect_@GST_API_VERSION@_CFLAGS) \
-	 -:LDFLAGS $(gst_inspect_@GST_API_VERSION@_LDADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	 -:EXECUTABLE gst-launch-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:SOURCES $(gst_launch_@GST_API_VERSION@_SOURCES) \
-	 -:CFLAGS $(DEFS) $(gst_launch_@GST_API_VERSION@_CFLAGS) \
-	 -:LDFLAGS $(gst_launch_@GST_API_VERSION@_LDADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
-
 manpages = \
 	gst-inspect-@GST_API_VERSION@.1 \
 	gst-typefind-@GST_API_VERSION@.1
diff --git a/tools/Makefile.in b/tools/Makefile.in
index b68e4ee..b32f33f 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -86,8 +96,6 @@
 @GST_DISABLE_PARSE_FALSE@am__append_1 = gst-launch-@GST_API_VERSION@
 @GST_DISABLE_PARSE_FALSE@am__append_2 = gst-launch-@GST_API_VERSION@.1
 subdir = tools
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(noinst_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -96,6 +104,7 @@
 	$(top_srcdir)/common/m4/as-libtool.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
 	$(top_srcdir)/common/m4/gst-args.m4 \
 	$(top_srcdir)/common/m4/gst-check.m4 \
@@ -113,7 +122,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
@@ -126,6 +135,8 @@
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -262,6 +273,7 @@
   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@
@@ -273,7 +285,12 @@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BASH_COMPLETION_CFLAGS = @BASH_COMPLETION_CFLAGS@
+BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
+BASH_COMPLETION_LIBS = @BASH_COMPLETION_LIBS@
+BASH_HELPERS_DIR = @BASH_HELPERS_DIR@
 BISON_PATH = @BISON_PATH@
+CAP_LIBS = @CAP_LIBS@
 CAT_ENTRY_END = @CAT_ENTRY_END@
 CAT_ENTRY_START = @CAT_ENTRY_START@
 CC = @CC@
@@ -364,6 +381,7 @@
 GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
 GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
 GST_PLUGIN_SCANNER_INSTALLED = @GST_PLUGIN_SCANNER_INSTALLED@
+GST_PTP_HELPER_INSTALLED = @GST_PTP_HELPER_INSTALLED@
 GST_REGISTRY_DOC_TYPES = @GST_REGISTRY_DOC_TYPES@
 GST_REVISION = @GST_REVISION@
 GST_VERSION_MAJOR = @GST_VERSION_MAJOR@
@@ -375,9 +393,11 @@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
 GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_CAP = @HAVE_CAP@
 HAVE_DOCBOOK2PS = @HAVE_DOCBOOK2PS@
 HAVE_DVIPS = @HAVE_DVIPS@
 HAVE_EPSTOPDF = @HAVE_EPSTOPDF@
+HAVE_FORK = @HAVE_FORK@
 HAVE_GMP = @HAVE_GMP@
 HAVE_GSL = @HAVE_GSL@
 HAVE_JADETEX = @HAVE_JADETEX@
@@ -399,6 +419,7 @@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
 INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
 INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
 INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
@@ -460,8 +481,10 @@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
+SETCAP = @SETCAP@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
@@ -527,6 +550,7 @@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -578,7 +602,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tools/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -992,21 +1015,8 @@
 	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-binPROGRAMS uninstall-man uninstall-man1
 
+.PRECIOUS: Makefile
 
-Android.mk: Makefile.am
-	androgenizer -:PROJECT gstreamer \
-	 -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
-	 -:EXECUTABLE gst-inspect-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:SOURCES $(gst_inspect_@GST_API_VERSION@_SOURCES) \
-	 -:CFLAGS $(DEFS) $(gst_inspect_@GST_API_VERSION@_CFLAGS) \
-	 -:LDFLAGS $(gst_inspect_@GST_API_VERSION@_LDADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	 -:EXECUTABLE gst-launch-@GST_API_VERSION@ -:TAGS eng debug \
-	 -:SOURCES $(gst_launch_@GST_API_VERSION@_SOURCES) \
-	 -:CFLAGS $(DEFS) $(gst_launch_@GST_API_VERSION@_CFLAGS) \
-	 -:LDFLAGS $(gst_launch_@GST_API_VERSION@_LDADD) \
-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
-	> $@
 
 %-@GST_API_VERSION@.1: %.1.in
 	$(AM_V_GEN)sed \
diff --git a/tools/gst-indent b/tools/gst-indent
index 9309ed3..a9b8bfe 100755
--- a/tools/gst-indent
+++ b/tools/gst-indent
@@ -1,16 +1,17 @@
 #!/bin/sh
 
-version=`gnuindent --version 2>/dev/null`
-if test "x$version" = "x"; then
-  version=`indent --version 2>/dev/null`
-  if test "x$version" = "x"; then
-    echo "GStreamer git pre-commit hook:"
-    echo "Did not find GNU indent, please install it before continuing."
-    exit 1
+for execname in gnuindent gindent indent; do
+  version=`$execname --version 2>/dev/null`
+  if test "x$version" != "x"; then
+    INDENT=$execname
+    break
   fi
-  INDENT=indent
-else
-  INDENT=gnuindent
+done
+
+if test -z $INDENT; then
+  echo "GStreamer git pre-commit hook:"
+  echo "Did not find GNU indent, please install it before continuing."
+  exit 1
 fi
 
 case `$INDENT --version` in
@@ -23,6 +24,9 @@
       ;;
 esac
 
+# Run twice. GNU indent isn't idempotent
+# when run once
+for i in 1 2; do
 $INDENT \
   --braces-on-if-line \
   --case-brace-indentation0 \
@@ -37,4 +41,5 @@
   --tab-size8 \
   --indent-level2 \
   --leave-preprocessor-space \
-  $*
+  $* || exit $?
+done
diff --git a/tools/gst-inspect.c b/tools/gst-inspect.c
index f97eb2a..141c7bd 100644
--- a/tools/gst-inspect.c
+++ b/tools/gst-inspect.c
@@ -25,7 +25,7 @@
 #  include "config.h"
 #endif
 
-/* FIXME 0.11: suppress warnings for deprecated API such as GValueArray
+/* FIXME 2.0: suppress warnings for deprecated API such as GValueArray
  * with newer GLib versions (>= 2.31.0) */
 #define GLIB_DISABLE_DEPRECATION_WARNINGS
 
@@ -245,9 +245,9 @@
 #define KNOWN_PARAM_FLAGS \
   (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY | \
   G_PARAM_LAX_VALIDATION |  G_PARAM_STATIC_STRINGS | \
-  G_PARAM_READABLE | G_PARAM_WRITABLE | GST_PARAM_CONTROLLABLE | \
-  GST_PARAM_MUTABLE_PLAYING | GST_PARAM_MUTABLE_PAUSED | \
-  GST_PARAM_MUTABLE_READY)
+  G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_DEPRECATED | \
+  GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | \
+  GST_PARAM_MUTABLE_PAUSED | GST_PARAM_MUTABLE_READY)
 
 static void
 print_element_properties_info (GstElement * element)
@@ -290,6 +290,10 @@
       g_print ("%s%s", (first_flag) ? "" : ", ", _("writable"));
       first_flag = FALSE;
     }
+    if (param->flags & G_PARAM_DEPRECATED) {
+      g_print ("%s%s", (first_flag) ? "" : ", ", _("deprecated"));
+      first_flag = FALSE;
+    }
     if (param->flags & GST_PARAM_CONTROLLABLE) {
       g_print (", %s", _("controllable"));
       first_flag = FALSE;
@@ -705,34 +709,14 @@
 
     name = gst_pad_get_name (pad);
     if (gst_pad_get_direction (pad) == GST_PAD_SRC)
-      g_print ("  SRC: '%s'", name);
+      n_print ("  SRC: '%s'\n", name);
     else if (gst_pad_get_direction (pad) == GST_PAD_SINK)
-      g_print ("  SINK: '%s'", name);
+      n_print ("  SINK: '%s'\n", name);
     else
-      g_print ("  UNKNOWN!!!: '%s'", name);
+      n_print ("  UNKNOWN!!!: '%s'\n", name);
 
     g_free (name);
 
-    g_print ("\n");
-
-    n_print ("    Implementation:\n");
-    if (pad->chainfunc)
-      n_print ("      Has chainfunc(): %s\n",
-          GST_DEBUG_FUNCPTR_NAME (pad->chainfunc));
-    if (pad->getrangefunc)
-      n_print ("      Has getrangefunc(): %s\n",
-          GST_DEBUG_FUNCPTR_NAME (pad->getrangefunc));
-    if (pad->eventfunc != gst_pad_event_default)
-      n_print ("      Has custom eventfunc(): %s\n",
-          GST_DEBUG_FUNCPTR_NAME (pad->eventfunc));
-    if (pad->queryfunc != gst_pad_query_default)
-      n_print ("      Has custom queryfunc(): %s\n",
-          GST_DEBUG_FUNCPTR_NAME (pad->queryfunc));
-
-    if (pad->iterintlinkfunc != gst_pad_iterate_internal_links_default)
-      n_print ("      Has custom iterintlinkfunc(): %s\n",
-          GST_DEBUG_FUNCPTR_NAME (pad->iterintlinkfunc));
-
     if (pad->padtemplate)
       n_print ("    Pad Template: '%s'\n", pad->padtemplate->name_template);
 
@@ -899,6 +883,25 @@
 }
 
 static void
+print_preset_list (GstElement * element)
+{
+  gchar **presets, **preset;
+
+  if (!GST_IS_PRESET (element))
+    return;
+
+  presets = gst_preset_get_preset_names (GST_PRESET (element));
+  if (presets && *presets) {
+    n_print ("\n");
+    n_print ("Presets:\n");
+    for (preset = presets; *preset; preset++) {
+      n_print ("  \"%s\"\n", *preset);
+    }
+    g_strfreev (presets);
+  }
+}
+
+static void
 print_blacklist (void)
 {
   GList *plugins, *cur;
@@ -1277,6 +1280,7 @@
   print_element_properties_info (element);
   print_signal_info (element);
   print_children_info (element);
+  print_preset_list (element);
 
   gst_object_unref (element);
   gst_object_unref (factory);
diff --git a/tools/gst-launch.c b/tools/gst-launch.c
index a644c0e..afbb333 100644
--- a/tools/gst-launch.c
+++ b/tools/gst-launch.c
@@ -35,6 +35,9 @@
 #ifdef G_OS_UNIX
 #include <glib-unix.h>
 #include <sys/wait.h>
+#elif defined (G_OS_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
 #endif
 #include <locale.h>             /* for LC_ALL */
 #include "tools.h"
@@ -461,11 +464,14 @@
   g_list_foreach (subentries, print_toc_entry, GUINT_TO_POINTER (indent));
 }
 
-#ifdef G_OS_UNIX
+#if defined(G_OS_UNIX) || defined(G_OS_WIN32)
 static guint signal_watch_id;
+#if defined(G_OS_WIN32)
+static GstElement *intr_pipeline;
+#endif
 #endif
 
-#ifdef G_OS_UNIX
+#if defined(G_OS_UNIX) || defined(G_OS_WIN32)
 /* As the interrupt handler is dispatched from GMainContext as a GSourceFunc
  * handler, we can react to this by posting a message. */
 static gboolean
@@ -486,6 +492,15 @@
   return FALSE;
 }
 
+#if defined(G_OS_WIN32)         /* G_OS_UNIX */
+static BOOL WINAPI
+w32_intr_handler (DWORD dwCtrlType)
+{
+  intr_handler ((gpointer) intr_pipeline);
+  intr_pipeline = NULL;
+  return TRUE;
+}
+#endif /* G_OS_WIN32 */
 #endif /* G_OS_UNIX */
 
 /* returns ELR_ERROR if there was an error
@@ -506,6 +521,10 @@
 #ifdef G_OS_UNIX
   signal_watch_id =
       g_unix_signal_add (SIGINT, (GSourceFunc) intr_handler, pipeline);
+#elif defined(G_OS_WIN32)
+  intr_pipeline = NULL;
+  if (SetConsoleCtrlHandler (w32_intr_handler, TRUE))
+    intr_pipeline = pipeline;
 #endif
 
   while (TRUE) {
@@ -713,7 +732,7 @@
             goto exit;
         } else {
           /* buffering busy */
-          if (buffering == FALSE && target_state == GST_STATE_PLAYING) {
+          if (!buffering && target_state == GST_STATE_PLAYING) {
             /* we were not buffering but PLAYING, PAUSE  the pipeline. */
             PRINT (_("Buffering, setting pipeline to PAUSED ...\n"));
             gst_element_set_state (pipeline, GST_STATE_PAUSED);
@@ -831,6 +850,9 @@
 #ifdef G_OS_UNIX
     if (signal_watch_id > 0)
       g_source_remove (signal_watch_id);
+#elif defined(G_OS_WIN32)
+    intr_pipeline = NULL;
+    SetConsoleCtrlHandler (w32_intr_handler, FALSE);
 #endif
     return res;
   }
@@ -890,7 +912,7 @@
   gboolean check_index = FALSE;
 #endif
   gchar *savefile = NULL;
-  gchar *exclude_args = NULL;
+  gchar **exclude_args = NULL;
 #ifndef GST_DISABLE_OPTION_PARSING
   GOptionEntry options[] = {
     {"tags", 't', 0, G_OPTION_ARG_NONE, &tags,
@@ -903,8 +925,10 @@
         N_("Do not print any progress information"), NULL},
     {"messages", 'm', 0, G_OPTION_ARG_NONE, &messages,
         N_("Output messages"), NULL},
-    {"exclude", 'X', 0, G_OPTION_ARG_NONE, &exclude_args,
-        N_("Do not output status information of TYPE"), N_("TYPE1,TYPE2,...")},
+    {"exclude", 'X', 0, G_OPTION_ARG_STRING_ARRAY, &exclude_args,
+          N_("Do not output status information for the specified property "
+              "if verbose output is enabled (can be used multiple times)"),
+        N_("PROPERTY-NAME")},
     {"no-fault", 'f', 0, G_OPTION_ARG_NONE, &no_fault,
         N_("Do not install a fault handler"), NULL},
     {"eos-on-shutdown", 'e', 0, G_OPTION_ARG_NONE, &eos_on_shutdown,
@@ -1005,10 +1029,8 @@
       pipeline = real_pipeline;
     }
     if (verbose) {
-      gchar **exclude_list =
-          exclude_args ? g_strsplit (exclude_args, ",", 0) : NULL;
       deep_notify_id = g_signal_connect (pipeline, "deep-notify",
-          G_CALLBACK (gst_object_default_deep_notify), exclude_list);
+          G_CALLBACK (gst_object_default_deep_notify), exclude_args);
     }
 #if 0
     if (check_index) {
diff --git a/win32/common/config.h b/win32/common/config.h
index 87eb488..14b5c7f 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -25,6 +25,9 @@
 /* The GIO modules directory. */
 #undef GIO_MODULE_DIR
 
+/* The GIO install prefix. */
+#undef GIO_PREFIX
+
 /* GStreamer API Version */
 #define GST_API_VERSION "1.0"
 
@@ -62,7 +65,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2014-12-18"
+#define GST_PACKAGE_RELEASE_DATETIME "2015-09-18"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -70,6 +73,12 @@
 /* location of the installed gst-plugin-scanner */
 #define GST_PLUGIN_SCANNER_INSTALLED LIBDIR "\\gst-plugin-scanner"
 
+/* location of the installed gst-ptp-helper */
+#undef GST_PTP_HELPER_INSTALLED
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
 /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
    CoreFoundation framework. */
 #undef HAVE_CFLOCALECOPYCURRENT
@@ -81,9 +90,15 @@
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
+/* Define if the target CPU is AARCH64 */
+#undef HAVE_CPU_AARCH64
+
 /* Define if the target CPU is an Alpha */
 #undef HAVE_CPU_ALPHA
 
+/* Define if the target CPU is an ARC */
+#undef HAVE_CPU_ARC
+
 /* Define if the target CPU is an ARM */
 #undef HAVE_CPU_ARM
 
@@ -127,6 +142,22 @@
    */
 #undef HAVE_DCGETTEXT
 
+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ALARM
+
+/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you
+   don't. */
+#undef HAVE_DECL_LOCALTIME_R
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRDUP
+
+/* Define to 1 if you have the declaration of `strsignal', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRSIGNAL
+
 /* Defined if we have dladdr () */
 #undef HAVE_DLADDR
 
@@ -136,6 +167,9 @@
 /* Define to 1 if you have the `fgetpos' function. */
 #define HAVE_FGETPOS 1
 
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
 #undef HAVE_FSEEKO
 
@@ -151,9 +185,15 @@
 /* defined if the compiler implements __FUNCTION__ */
 #undef HAVE_FUNCTION
 
+/* getifaddrs() and AF_LINK is available */
+#undef HAVE_GETIFADDRS_AF_LINK
+
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
+/* Define to 1 if you have the `getpid' function. */
+#undef HAVE_GETPID
+
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
@@ -179,6 +219,9 @@
    declares uintmax_t. */
 #undef HAVE_INTTYPES_H_WITH_UINTMAX
 
+/* Define to 1 if you have the `rt' library (-lrt). */
+#undef HAVE_LIBRT
+
 /* Define to 1 if you have the `localtime_r' function. */
 #undef HAVE_LOCALTIME_R
 
@@ -191,6 +234,9 @@
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
 /* Define to 1 if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 
@@ -230,15 +276,39 @@
 /* Have PTHREAD_PRIO_INHERIT. */
 #undef HAVE_PTHREAD_PRIO_INHERIT
 
+/* Have function pthread_setname_np(const char*) */
+#undef HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
+
+/* PTP support available */
+#undef HAVE_PTP
+
+/* Use capabilities for permissions in PTP helper */
+#undef HAVE_PTP_HELPER_CAPABILITIES
+
+/* Use setuid-root for permissions in PTP helper */
+#undef HAVE_PTP_HELPER_SETUID
+
+/* PTP helper setuid group */
+#undef HAVE_PTP_HELPER_SETUID_GROUP
+
+/* PTP helper setuid user */
+#undef HAVE_PTP_HELPER_SETUID_USER
+
 /* Define to 1 if the system has the type `ptrdiff_t'. */
 #undef HAVE_PTRDIFF_T
 
 /* Define if RDTSC is available */
 #undef HAVE_RDTSC
 
+/* Define to 1 if you have the `setitimer' function. */
+#undef HAVE_SETITIMER
+
 /* Define to 1 if you have the `sigaction' function. */
 #undef HAVE_SIGACTION
 
+/* SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR is available */
+#undef HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
@@ -252,12 +322,30 @@
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
+/* Define to 1 if you have the `strcasestr' function. */
+#undef HAVE_STRCASESTR
+
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #define HAVE_STRING_H 1
 
+/* Define to 1 if you have the `strsignal' function. */
+#undef HAVE_STRSIGNAL
+
+/* Define to 1 if `it_interval' is a member of `struct itimerspec'. */
+#undef HAVE_STRUCT_ITIMERSPEC_IT_INTERVAL
+
+/* Define to 1 if `it_value' is a member of `struct itimerspec'. */
+#undef HAVE_STRUCT_ITIMERSPEC_IT_VALUE
+
+/* Define to 1 if `tv_nsec' is a member of `struct timespec'. */
+#undef HAVE_STRUCT_TIMESPEC_TV_NSEC
+
+/* Define to 1 if `tv_sec' is a member of `struct timespec'. */
+#undef HAVE_STRUCT_TIMESPEC_TV_SEC
+
 /* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H
 
@@ -282,12 +370,18 @@
 /* Define to 1 if you have the <sys/types.h> header file. */
 #define HAVE_SYS_TYPES_H 1
 
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
 /* Define to 1 if you have the <sys/utsname.h> header file. */
 #undef HAVE_SYS_UTSNAME_H
 
 /* Define to 1 if you have the <sys/wait.h> header file. */
 #undef HAVE_SYS_WAIT_H
 
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
 /* Have tm_gmtoff field in struct tm */
 #undef HAVE_TM_GMTOFF
 
@@ -318,6 +412,12 @@
 /* Define to 1 if you have the <winsock2.h> header file. */
 #define HAVE_WINSOCK2_H 1
 
+/* Define to 1 if you have the `_getpid' function. */
+#undef HAVE__GETPID
+
+/* Define to 1 if you have the `_strdup' function. */
+#undef HAVE__STRDUP
+
 /* the host CPU */
 #define HOST_CPU "i686"
 
@@ -354,7 +454,7 @@
 #define PACKAGE_NAME "GStreamer"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer 1.4.5"
+#define PACKAGE_STRING "GStreamer 1.5.91"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gstreamer"
@@ -363,7 +463,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.4.5"
+#define PACKAGE_VERSION "1.5.91"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -394,6 +494,12 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* Need to define the itimerspec structure */
+#undef STRUCT_ITIMERSPEC_DEFINITION_MISSING
+
+/* Need to define the timespec structure */
+#undef STRUCT_TIMESPEC_DEFINITION_MISSING
+
 /* the target CPU */
 #undef TARGET_CPU
 
@@ -401,7 +507,7 @@
 #undef USE_POISONING
 
 /* Version number of package */
-#define VERSION "1.4.5"
+#define VERSION "1.5.91"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
@@ -432,9 +538,15 @@
 /* We need at least WinXP SP2 for __stat64 */
 #undef __MSVCRT_VERSION__
 
+/* clockid_t */
+#undef clockid_t
+
 /* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
    not define. */
 #undef intmax_t
 
 /* Define to `unsigned int' if <sys/types.h> does not define. */
 #undef size_t
+
+/* timer_t */
+#undef timer_t
diff --git a/win32/common/gstconfig.h b/win32/common/gstconfig.h
index 2c3e12f..d893411 100644
--- a/win32/common/gstconfig.h
+++ b/win32/common/gstconfig.h
@@ -125,14 +125,6 @@
    refcounting */
 #define GST_HAVE_GLIB_2_8 1
 
-/***** Deal with XML stuff, we have to handle both loadsave and registry *****/
-
-#if (! (defined(GST_DISABLE_LOADSAVE) && defined(GST_DISABLE_REGISTRY)) )
-# include <libxml/parser.h>
-#else
-# define GST_DISABLE_LOADSAVE_REGISTRY
-#endif
-
 /**
  * GST_EXPORT:
  *
diff --git a/win32/common/gstenumtypes.c b/win32/common/gstenumtypes.c
index 0527074..a29942a 100644
--- a/win32/common/gstenumtypes.c
+++ b/win32/common/gstenumtypes.c
@@ -86,6 +86,8 @@
         "delta-unit"},
     {C_FLAGS (GST_BUFFER_FLAG_TAG_MEMORY), "GST_BUFFER_FLAG_TAG_MEMORY",
         "tag-memory"},
+    {C_FLAGS (GST_BUFFER_FLAG_SYNC_AFTER), "GST_BUFFER_FLAG_SYNC_AFTER",
+        "sync-after"},
     {C_FLAGS (GST_BUFFER_FLAG_LAST), "GST_BUFFER_FLAG_LAST", "last"},
     {0, NULL, NULL}
   };
@@ -284,6 +286,8 @@
         "GST_CLOCK_FLAG_CAN_SET_RESOLUTION", "can-set-resolution"},
     {C_FLAGS (GST_CLOCK_FLAG_CAN_SET_MASTER), "GST_CLOCK_FLAG_CAN_SET_MASTER",
         "can-set-master"},
+    {C_FLAGS (GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC),
+        "GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC", "needs-startup-sync"},
     {C_FLAGS (GST_CLOCK_FLAG_LAST), "GST_CLOCK_FLAG_LAST", "last"},
     {0, NULL, NULL}
   };
@@ -310,7 +314,11 @@
         "GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS", "non-default-params"},
     {C_FLAGS (GST_DEBUG_GRAPH_SHOW_STATES), "GST_DEBUG_GRAPH_SHOW_STATES",
         "states"},
+    {C_FLAGS (GST_DEBUG_GRAPH_SHOW_FULL_PARAMS),
+        "GST_DEBUG_GRAPH_SHOW_FULL_PARAMS", "full-params"},
     {C_FLAGS (GST_DEBUG_GRAPH_SHOW_ALL), "GST_DEBUG_GRAPH_SHOW_ALL", "all"},
+    {C_FLAGS (GST_DEBUG_GRAPH_SHOW_VERBOSE), "GST_DEBUG_GRAPH_SHOW_VERBOSE",
+        "verbose"},
     {0, NULL, NULL}
   };
 
@@ -603,6 +611,7 @@
     {C_ENUM (GST_EVENT_SINK_MESSAGE), "GST_EVENT_SINK_MESSAGE", "sink-message"},
     {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"},
     {C_ENUM (GST_EVENT_SEGMENT_DONE), "GST_EVENT_SEGMENT_DONE", "segment-done"},
     {C_ENUM (GST_EVENT_GAP), "GST_EVENT_GAP", "gap"},
     {C_ENUM (GST_EVENT_QOS), "GST_EVENT_QOS", "qos"},
@@ -1263,6 +1272,7 @@
     {C_ENUM (GST_PAD_PROBE_OK), "GST_PAD_PROBE_OK", "ok"},
     {C_ENUM (GST_PAD_PROBE_REMOVE), "GST_PAD_PROBE_REMOVE", "remove"},
     {C_ENUM (GST_PAD_PROBE_PASS), "GST_PAD_PROBE_PASS", "pass"},
+    {C_ENUM (GST_PAD_PROBE_HANDLED), "GST_PAD_PROBE_HANDLED", "handled"},
     {0, NULL, NULL}
   };
 
@@ -1299,6 +1309,8 @@
         "proxy-scheduling"},
     {C_FLAGS (GST_PAD_FLAG_ACCEPT_INTERSECT), "GST_PAD_FLAG_ACCEPT_INTERSECT",
         "accept-intersect"},
+    {C_FLAGS (GST_PAD_FLAG_ACCEPT_TEMPLATE), "GST_PAD_FLAG_ACCEPT_TEMPLATE",
+        "accept-template"},
     {C_FLAGS (GST_PAD_FLAG_LAST), "GST_PAD_FLAG_LAST", "last"},
     {0, NULL, NULL}
   };
@@ -1586,6 +1598,7 @@
     {C_FLAGS (GST_SEEK_FLAG_ACCURATE), "GST_SEEK_FLAG_ACCURATE", "accurate"},
     {C_FLAGS (GST_SEEK_FLAG_KEY_UNIT), "GST_SEEK_FLAG_KEY_UNIT", "key-unit"},
     {C_FLAGS (GST_SEEK_FLAG_SEGMENT), "GST_SEEK_FLAG_SEGMENT", "segment"},
+    {C_FLAGS (GST_SEEK_FLAG_TRICKMODE), "GST_SEEK_FLAG_TRICKMODE", "trickmode"},
     {C_FLAGS (GST_SEEK_FLAG_SKIP), "GST_SEEK_FLAG_SKIP", "skip"},
     {C_FLAGS (GST_SEEK_FLAG_SNAP_BEFORE), "GST_SEEK_FLAG_SNAP_BEFORE",
         "snap-before"},
@@ -1593,6 +1606,10 @@
         "snap-after"},
     {C_FLAGS (GST_SEEK_FLAG_SNAP_NEAREST), "GST_SEEK_FLAG_SNAP_NEAREST",
         "snap-nearest"},
+    {C_FLAGS (GST_SEEK_FLAG_TRICKMODE_KEY_UNITS),
+        "GST_SEEK_FLAG_TRICKMODE_KEY_UNITS", "trickmode-key-units"},
+    {C_FLAGS (GST_SEEK_FLAG_TRICKMODE_NO_AUDIO),
+        "GST_SEEK_FLAG_TRICKMODE_NO_AUDIO", "trickmode-no-audio"},
     {0, NULL, NULL}
   };
 
@@ -1611,8 +1628,14 @@
   static const GFlagsValue values[] = {
     {C_FLAGS (GST_SEGMENT_FLAG_NONE), "GST_SEGMENT_FLAG_NONE", "none"},
     {C_FLAGS (GST_SEGMENT_FLAG_RESET), "GST_SEGMENT_FLAG_RESET", "reset"},
+    {C_FLAGS (GST_SEGMENT_FLAG_TRICKMODE), "GST_SEGMENT_FLAG_TRICKMODE",
+        "trickmode"},
     {C_FLAGS (GST_SEGMENT_FLAG_SKIP), "GST_SEGMENT_FLAG_SKIP", "skip"},
     {C_FLAGS (GST_SEGMENT_FLAG_SEGMENT), "GST_SEGMENT_FLAG_SEGMENT", "segment"},
+    {C_FLAGS (GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS),
+        "GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS", "trickmode-key-units"},
+    {C_FLAGS (GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO),
+        "GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO", "trickmode-no-audio"},
     {0, NULL, NULL}
   };
 
diff --git a/win32/common/gstversion.h b/win32/common/gstversion.h
index b7e8f3e..32803e3 100644
--- a/win32/common/gstversion.h
+++ b/win32/common/gstversion.h
@@ -19,6 +19,12 @@
  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  * Boston, MA 02110-1301, USA.
  */
+
+#ifndef __GST_VERSION_H__
+#define __GST_VERSION_H__
+
+#include <glib.h>
+
 /**
  * SECTION:gstversion
  * @short_description: GStreamer version macros.
@@ -35,9 +41,6 @@
  * The version macros get defined by including "gst/gst.h".
  */
 
-#ifndef __GST_VERSION_H__
-#define __GST_VERSION_H__
-
 G_BEGIN_DECLS
 
 /**
@@ -51,13 +54,13 @@
  *
  * The minor version of GStreamer at compile time:
  */
-#define GST_VERSION_MINOR (4)
+#define GST_VERSION_MINOR (5)
 /**
  * GST_VERSION_MICRO:
  *
  * The micro version of GStreamer at compile time:
  */
-#define GST_VERSION_MICRO (5)
+#define GST_VERSION_MICRO (91)
 /**
  * GST_VERSION_NANO:
  *
diff --git a/win32/common/libgstbase.def b/win32/common/libgstbase.def
index 2713a09..ff25b51 100644
--- a/win32/common/libgstbase.def
+++ b/win32/common/libgstbase.def
@@ -5,6 +5,10 @@
 	gst_adapter_copy
 	gst_adapter_copy_bytes
 	gst_adapter_flush
+	gst_adapter_get_buffer
+	gst_adapter_get_buffer_fast
+	gst_adapter_get_buffer_list
+	gst_adapter_get_list
 	gst_adapter_get_type
 	gst_adapter_map
 	gst_adapter_masked_scan_uint32
@@ -18,6 +22,7 @@
 	gst_adapter_take
 	gst_adapter_take_buffer
 	gst_adapter_take_buffer_fast
+	gst_adapter_take_buffer_list
 	gst_adapter_take_list
 	gst_adapter_unmap
 	gst_base_parse_add_index_entry
@@ -28,6 +33,7 @@
 	gst_base_parse_frame_init
 	gst_base_parse_frame_new
 	gst_base_parse_get_type
+	gst_base_parse_merge_tags
 	gst_base_parse_push_frame
 	gst_base_parse_set_average_bitrate
 	gst_base_parse_set_duration
@@ -102,6 +108,7 @@
 	gst_base_transform_set_prefer_passthrough
 	gst_base_transform_set_qos_enabled
 	gst_base_transform_update_qos
+	gst_base_transform_update_src_caps
 	gst_bit_reader_free
 	gst_bit_reader_get_bits_uint16
 	gst_bit_reader_get_bits_uint32
@@ -142,6 +149,7 @@
 	gst_byte_reader_get_remaining
 	gst_byte_reader_get_size
 	gst_byte_reader_get_string_utf8
+	gst_byte_reader_get_sub_reader
 	gst_byte_reader_get_uint16_be
 	gst_byte_reader_get_uint16_le
 	gst_byte_reader_get_uint24_be
@@ -153,6 +161,7 @@
 	gst_byte_reader_get_uint8
 	gst_byte_reader_init
 	gst_byte_reader_masked_scan_uint32
+	gst_byte_reader_masked_scan_uint32_peek
 	gst_byte_reader_new
 	gst_byte_reader_peek_data
 	gst_byte_reader_peek_float32_be
@@ -169,6 +178,7 @@
 	gst_byte_reader_peek_int64_le
 	gst_byte_reader_peek_int8
 	gst_byte_reader_peek_string_utf8
+	gst_byte_reader_peek_sub_reader
 	gst_byte_reader_peek_uint16_be
 	gst_byte_reader_peek_uint16_le
 	gst_byte_reader_peek_uint24_be
@@ -263,21 +273,29 @@
 	gst_data_queue_push_force
 	gst_data_queue_set_flushing
 	gst_flow_combiner_add_pad
+	gst_flow_combiner_clear
 	gst_flow_combiner_free
 	gst_flow_combiner_get_type
 	gst_flow_combiner_new
 	gst_flow_combiner_remove_pad
+	gst_flow_combiner_reset
 	gst_flow_combiner_update_flow
+	gst_flow_combiner_update_pad_flow
 	gst_push_src_get_type
 	gst_queue_array_drop_element
+	gst_queue_array_drop_struct
 	gst_queue_array_find
 	gst_queue_array_free
 	gst_queue_array_get_length
 	gst_queue_array_is_empty
 	gst_queue_array_new
+	gst_queue_array_new_for_struct
 	gst_queue_array_peek_head
+	gst_queue_array_peek_head_struct
 	gst_queue_array_pop_head
+	gst_queue_array_pop_head_struct
 	gst_queue_array_push_tail
+	gst_queue_array_push_tail_struct
 	gst_type_find_helper
 	gst_type_find_helper_for_buffer
 	gst_type_find_helper_for_data
diff --git a/win32/common/libgstcontroller.def b/win32/common/libgstcontroller.def
index 92d5abb..f539777 100644
--- a/win32/common/libgstcontroller.def
+++ b/win32/common/libgstcontroller.def
@@ -1,8 +1,10 @@
 EXPORTS
 	gst_argb_control_binding_get_type
 	gst_argb_control_binding_new
+	gst_control_point_get_type
 	gst_direct_control_binding_get_type
 	gst_direct_control_binding_new
+	gst_direct_control_binding_new_absolute
 	gst_interpolation_control_source_get_type
 	gst_interpolation_control_source_new
 	gst_interpolation_mode_get_type
diff --git a/win32/common/libgstnet.def b/win32/common/libgstnet.def
index 4478bcb..9cbd905 100644
--- a/win32/common/libgstnet.def
+++ b/win32/common/libgstnet.def
@@ -1,9 +1,12 @@
 EXPORTS
 	gst_buffer_add_net_address_meta
+	gst_buffer_add_net_control_message_meta
 	gst_net_address_meta_api_get_type
 	gst_net_address_meta_get_info
 	gst_net_client_clock_get_type
 	gst_net_client_clock_new
+	gst_net_control_message_meta_api_get_type
+	gst_net_control_message_meta_get_info
 	gst_net_time_packet_copy
 	gst_net_time_packet_free
 	gst_net_time_packet_get_type
@@ -13,3 +16,13 @@
 	gst_net_time_packet_serialize
 	gst_net_time_provider_get_type
 	gst_net_time_provider_new
+	gst_ntp_clock_get_type
+	gst_ntp_clock_new
+	gst_ptp_clock_get_type
+	gst_ptp_clock_new
+	gst_ptp_deinit
+	gst_ptp_init
+	gst_ptp_is_initialized
+	gst_ptp_is_supported
+	gst_ptp_statistics_callback_add
+	gst_ptp_statistics_callback_remove
diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def
index 2fda6b6..43979cc 100644
--- a/win32/common/libgstreamer.def
+++ b/win32/common/libgstreamer.def
@@ -53,6 +53,7 @@
 	_gst_double_range_type DATA
 	_gst_element_error_printf
 	_gst_event_type DATA
+	_gst_flagset_type DATA
 	_gst_fraction_range_type DATA
 	_gst_fraction_type DATA
 	_gst_int64_range_type DATA
@@ -109,11 +110,15 @@
 	gst_bin_recalculate_latency
 	gst_bin_remove
 	gst_bin_remove_many
+	gst_bin_sync_children_states
 	gst_bitmask_get_type
 	gst_buffer_add_meta
+	gst_buffer_add_parent_buffer_meta
+	gst_buffer_add_protection_meta
 	gst_buffer_append
 	gst_buffer_append_memory
 	gst_buffer_append_region
+	gst_buffer_copy_deep
 	gst_buffer_copy_flags_get_type
 	gst_buffer_copy_into
 	gst_buffer_copy_region
@@ -136,6 +141,7 @@
 	gst_buffer_is_all_memory_writable
 	gst_buffer_is_memory_range_writable
 	gst_buffer_iterate_meta
+	gst_buffer_list_copy_deep
 	gst_buffer_list_foreach
 	gst_buffer_list_get
 	gst_buffer_list_get_type
@@ -206,6 +212,7 @@
 	gst_bus_pop_filtered
 	gst_bus_post
 	gst_bus_remove_signal_watch
+	gst_bus_remove_watch
 	gst_bus_set_flushing
 	gst_bus_set_sync_handler
 	gst_bus_sync_reply_get_type
@@ -240,8 +247,10 @@
 	gst_caps_features_remove_id
 	gst_caps_features_set_parent_refcount
 	gst_caps_features_to_string
+	gst_caps_filter_and_map_in_place
 	gst_caps_fixate
 	gst_caps_flags_get_type
+	gst_caps_foreach
 	gst_caps_from_string
 	gst_caps_get_features
 	gst_caps_get_size
@@ -260,6 +269,7 @@
 	gst_caps_is_subset
 	gst_caps_is_subset_structure
 	gst_caps_is_subset_structure_full
+	gst_caps_map_in_place
 	gst_caps_merge
 	gst_caps_merge_structure
 	gst_caps_merge_structure_full
@@ -294,7 +304,9 @@
 	gst_child_proxy_set_property
 	gst_child_proxy_set_valist
 	gst_clock_add_observation
+	gst_clock_add_observation_unapplied
 	gst_clock_adjust_unlocked
+	gst_clock_adjust_with_calibration
 	gst_clock_entry_type_get_type
 	gst_clock_flags_get_type
 	gst_clock_get_calibration
@@ -311,6 +323,7 @@
 	gst_clock_id_unschedule
 	gst_clock_id_wait
 	gst_clock_id_wait_async
+	gst_clock_is_synced
 	gst_clock_new_periodic_id
 	gst_clock_new_single_shot_id
 	gst_clock_periodic_id_reinit
@@ -318,10 +331,12 @@
 	gst_clock_set_calibration
 	gst_clock_set_master
 	gst_clock_set_resolution
+	gst_clock_set_synced
 	gst_clock_set_timeout
 	gst_clock_single_shot_id_reinit
 	gst_clock_type_get_type
 	gst_clock_unadjust_unlocked
+	gst_clock_wait_for_sync
 	gst_context_get_context_type
 	gst_context_get_structure
 	gst_context_get_type
@@ -371,6 +386,7 @@
 	gst_date_time_to_iso8601_string
 	gst_date_time_unref
 	gst_debug_add_log_function
+	gst_debug_bin_to_dot_data
 	gst_debug_bin_to_dot_file
 	gst_debug_bin_to_dot_file_with_ts
 	gst_debug_category_free
@@ -412,15 +428,19 @@
 	gst_device_get_caps
 	gst_device_get_device_class
 	gst_device_get_display_name
+	gst_device_get_properties
 	gst_device_get_type
 	gst_device_has_classes
 	gst_device_has_classesv
 	gst_device_monitor_add_filter
 	gst_device_monitor_get_bus
 	gst_device_monitor_get_devices
+	gst_device_monitor_get_providers
+	gst_device_monitor_get_show_all_devices
 	gst_device_monitor_get_type
 	gst_device_monitor_new
 	gst_device_monitor_remove_filter
+	gst_device_monitor_set_show_all_devices
 	gst_device_monitor_start
 	gst_device_monitor_stop
 	gst_device_provider_can_monitor
@@ -444,10 +464,13 @@
 	gst_device_provider_get_bus
 	gst_device_provider_get_devices
 	gst_device_provider_get_factory
+	gst_device_provider_get_hidden_providers
 	gst_device_provider_get_type
+	gst_device_provider_hide_provider
 	gst_device_provider_register
 	gst_device_provider_start
 	gst_device_provider_stop
+	gst_device_provider_unhide_provider
 	gst_device_reconfigure_element
 	gst_double_range_get_type
 	gst_element_abort_state
@@ -550,6 +573,7 @@
 	gst_event_new_gap
 	gst_event_new_latency
 	gst_event_new_navigation
+	gst_event_new_protection
 	gst_event_new_qos
 	gst_event_new_reconfigure
 	gst_event_new_seek
@@ -567,6 +591,7 @@
 	gst_event_parse_gap
 	gst_event_parse_group_id
 	gst_event_parse_latency
+	gst_event_parse_protection
 	gst_event_parse_qos
 	gst_event_parse_seek
 	gst_event_parse_segment
@@ -589,6 +614,8 @@
 	gst_event_type_to_quark
 	gst_event_writable_structure
 	gst_filename_to_uri
+	gst_flagset_get_type
+	gst_flagset_register
 	gst_flow_get_name
 	gst_flow_return_get_type
 	gst_flow_to_quark
@@ -769,6 +796,8 @@
 	gst_object_get_value_array
 	gst_object_has_active_control_bindings
 	gst_object_has_ancestor
+	gst_object_has_as_ancestor
+	gst_object_has_as_parent
 	gst_object_ref
 	gst_object_ref_sink
 	gst_object_remove_control_binding
@@ -883,6 +912,8 @@
 	gst_pad_use_fixed_caps
 	gst_param_spec_fraction
 	gst_param_spec_fraction_get_type
+	gst_parent_buffer_meta_api_get_type
+	gst_parent_buffer_meta_get_info
 	gst_parse_bin_from_description
 	gst_parse_bin_from_description_full
 	gst_parse_context_free
@@ -902,11 +933,14 @@
 	gst_pipeline_get_bus
 	gst_pipeline_get_clock
 	gst_pipeline_get_delay
+	gst_pipeline_get_latency
+	gst_pipeline_get_pipeline_clock
 	gst_pipeline_get_type
 	gst_pipeline_new
 	gst_pipeline_set_auto_flush_bus
 	gst_pipeline_set_clock
 	gst_pipeline_set_delay
+	gst_pipeline_set_latency
 	gst_pipeline_use_clock
 	gst_plugin_add_dependency
 	gst_plugin_add_dependency_simple
@@ -970,12 +1004,16 @@
 	gst_preset_get_preset_names
 	gst_preset_get_property_names
 	gst_preset_get_type
+	gst_preset_is_editable
 	gst_preset_load_preset
 	gst_preset_rename_preset
 	gst_preset_save_preset
 	gst_preset_set_app_dir
 	gst_preset_set_meta
 	gst_progress_type_get_type
+	gst_protection_meta_api_get_type
+	gst_protection_meta_get_info
+	gst_protection_select_system
 	gst_proxy_pad_chain_default
 	gst_proxy_pad_chain_list_default
 	gst_proxy_pad_get_internal
@@ -1094,11 +1132,13 @@
 	gst_resource_error_get_type
 	gst_resource_error_quark
 	gst_sample_get_buffer
+	gst_sample_get_buffer_list
 	gst_sample_get_caps
 	gst_sample_get_info
 	gst_sample_get_segment
 	gst_sample_get_type
 	gst_sample_new
+	gst_sample_set_buffer_list
 	gst_scheduling_flags_get_type
 	gst_search_mode_get_type
 	gst_seek_flags_get_type
@@ -1111,11 +1151,13 @@
 	gst_segment_free
 	gst_segment_get_type
 	gst_segment_init
+	gst_segment_is_equal
 	gst_segment_new
 	gst_segment_offset_running_time
 	gst_segment_set_running_time
 	gst_segment_to_position
 	gst_segment_to_running_time
+	gst_segment_to_running_time_full
 	gst_segment_to_stream_time
 	gst_segtrap_is_enabled
 	gst_segtrap_set_enabled
@@ -1135,6 +1177,7 @@
 	gst_structure_can_intersect
 	gst_structure_change_type_get_type
 	gst_structure_copy
+	gst_structure_filter_and_map_in_place
 	gst_structure_fixate
 	gst_structure_fixate_field
 	gst_structure_fixate_field_boolean
@@ -1153,6 +1196,7 @@
 	gst_structure_get_double
 	gst_structure_get_enum
 	gst_structure_get_field_type
+	gst_structure_get_flagset
 	gst_structure_get_fraction
 	gst_structure_get_int
 	gst_structure_get_int64
@@ -1345,20 +1389,60 @@
 	gst_type_find_suggest
 	gst_type_find_suggest_simple
 	gst_update_registry
+	gst_uri_append_path
+	gst_uri_append_path_segment
 	gst_uri_construct
+	gst_uri_equal
 	gst_uri_error_get_type
 	gst_uri_error_quark
+	gst_uri_from_string
+	gst_uri_from_string_with_base
+	gst_uri_get_fragment
+	gst_uri_get_host
 	gst_uri_get_location
+	gst_uri_get_path
+	gst_uri_get_path_segments
+	gst_uri_get_path_string
+	gst_uri_get_port
 	gst_uri_get_protocol
+	gst_uri_get_query_keys
+	gst_uri_get_query_string
+	gst_uri_get_query_table
+	gst_uri_get_query_value
+	gst_uri_get_scheme
+	gst_uri_get_type
+	gst_uri_get_userinfo
 	gst_uri_handler_get_protocols
 	gst_uri_handler_get_type
 	gst_uri_handler_get_uri
 	gst_uri_handler_get_uri_type
 	gst_uri_handler_set_uri
 	gst_uri_has_protocol
+	gst_uri_is_normalized
 	gst_uri_is_valid
+	gst_uri_is_writable
+	gst_uri_join
+	gst_uri_join_strings
+	gst_uri_make_writable
+	gst_uri_new
+	gst_uri_new_with_base
+	gst_uri_normalize
 	gst_uri_protocol_is_supported
 	gst_uri_protocol_is_valid
+	gst_uri_query_has_key
+	gst_uri_remove_query_key
+	gst_uri_set_fragment
+	gst_uri_set_host
+	gst_uri_set_path
+	gst_uri_set_path_segments
+	gst_uri_set_path_string
+	gst_uri_set_port
+	gst_uri_set_query_string
+	gst_uri_set_query_table
+	gst_uri_set_query_value
+	gst_uri_set_scheme
+	gst_uri_set_userinfo
+	gst_uri_to_string
 	gst_uri_type_get_type
 	gst_util_array_binary_search
 	gst_util_double_to_fraction
@@ -1403,6 +1487,8 @@
 	gst_value_get_caps_features
 	gst_value_get_double_range_max
 	gst_value_get_double_range_min
+	gst_value_get_flagset_flags
+	gst_value_get_flagset_mask
 	gst_value_get_fraction_denominator
 	gst_value_get_fraction_numerator
 	gst_value_get_fraction_range_max
@@ -1432,6 +1518,7 @@
 	gst_value_set_caps
 	gst_value_set_caps_features
 	gst_value_set_double_range
+	gst_value_set_flagset
 	gst_value_set_fraction
 	gst_value_set_fraction_range
 	gst_value_set_fraction_range_full