Merge tag 'upstream/1.5.90' into debian-experimental

Upstream version 1.5.90
diff --git a/ChangeLog b/ChangeLog
index be359af..9d35088 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,979 @@
+=== release 1.5.90 ===
+
+2015-08-19  Sebastian Dröge <slomo@coaxion.net>
+
+	* configure.ac:
+	  releasing 1.5.90
+
+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>
diff --git a/Makefile.in b/Makefile.in
index 4e3e555..2270bb1 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 \
@@ -141,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
@@ -232,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)
@@ -674,7 +684,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*) \
@@ -684,7 +693,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
@@ -933,15 +942,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)
@@ -977,18 +986,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 \
@@ -1171,6 +1180,8 @@
 	ps ps-am tags tags-am uninstall uninstall-aclocalDATA \
 	uninstall-am
 
+.PRECIOUS: Makefile
+
 
 win32-debug:
 	@echo; \
diff --git a/NEWS b/NEWS
index 1f6b3c7..3e9a779 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,2 @@
-This is GStreamer 1.5.2
+This is GStreamer 1.5.90
 
diff --git a/RELEASE b/RELEASE
index b4e5e46..b8900a8 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,17 +1,16 @@
 
-Release notes for GStreamer 1.5.2
+Release notes for GStreamer 1.5.90
 
 
-The GStreamer team is pleased to announce the second release of the unstable
-1.5 release series. The 1.5 release series is adding new features on top of
+The GStreamer team is pleased to announce the first 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 unstable 1.5 release series
-will lead to the stable 1.6 release series in the next weeks, and newly added
-API can still change until that point.
+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.
 
 
-Binaries for Android, iOS, Mac OS X and Windows will be provided separately
-during the unstable 1.5 release series.
+Binaries for Android, iOS, Mac OS X and Windows will be provided separately by
+the GStreamer project.
 
 
 
@@ -38,23 +37,37 @@
 
 Bugs fixed in this release
      
-      * 740502 : Add absolute property to GstDirectControlBinding
-      * 740575 : Fixing DTS in GStreamer
-      * 745366 : concat: Forward FLUSH_START / FLUSH_STOP events
-      * 746949 : concat: Add active-pad property
-      * 750027 : concat: Reset internal start offset to 0 after flushing seek
-      * 750033 : basetransform - allow collation/separation of buffers
-      * 750039 : Keeping buffers with shared memory alive
-      * 750319 : memory: subclasses don't know map flags in unmap
-      * 750530 : ptp: FreeBSD, DragonFly and other BSDs don't have ifreq.ifw_hwaddr
-      * 750574 : netclientclock: Make the clock a wrapper clock around an internal clock
-      * 750761 : inputselector: Handle different duration track selection
-      * 750782 : pipeline: Add gst_pipeline_set_latency(), getter and GObject property
-      * 751026 : basesink: Properly handle buffer lists for the last-sample property
-      * 751047 : concat: Add adjust-base property
-      * 751107 : concat: when releasing pad, send EOS appropriately.
-      * 751235 : utils: get_compatible_pad does not fully respect filter caps
-      * 751420 : basesink: need to deep-copy last buffer list in drain
+      * 746385 : task: add function guards for gst_task_set_lock()
+      * 746431 : gsttask: function gst_task_join should do the argument verification before accessing GstTaskPrivate
+      * 746439 : task: guard against NULL task function in  gst_task_new()
+      * 748643 : gstpad: Add a new GST_PROBE_HANDLED return value for probes
+      * 749590 : protection_meta: implement transform function
+      * 750149 : queuearray: allow storing of structs in addition to pointers (for GQueue optimisation)
+      * 750783 : baseparse: reverse playback in pull mode
+      * 751622 : test_ABI: failed ABI check
+      * 751628 : tests: caps: test_intersect_flagset failure
+      * 751712 : buffer: gst_buffer_copy_into() should probably not copy GST_META_FLAG_POOLED metadata
+      * 751819 : basesink: Shouldn't drop buffer when sync=false
+      * 751840 : inputselector: unnecessary check is always true
+      * 751881 : memory: Add missing field initializers to GstMapInfo
+      * 751916 : Add GstHarness test framework
+      * 752055 : identity: invalid read when unscheduling a gst_clock_id_wait
+      * 752092 : baseparse: Passes bogus buffer durations to subclass
+      * 752116 : adapter: failure of gst_adapter_get_(buffer_)list
+      * 752123 : harness: don't run code inside g_assert()
+      * 752493 : harness: Improve detection of element type
+      * 752494 : harness: Forward sticky events to sink harness
+      * 752498 : GstHarness improvements
+      * 752623 : concat: Test pipeline with uridecodebin and concat freezes sometimes when setting pipeline to state NULL
+      * 752662 : registry: Add plugins to the registry we are loading and not default one
+      * 752746 : harness: allow full control over event forwarding
+      * 752800 : basetransform: may return not-negotiation on shutdown
+      * 753011 : queue2: can not update upstream_size with valid data
+      * 753151 : gstpad: fix invalid object unref
+      * 753338 : value: free caps during failure
+      * 753455 : datetime: allow passing just a time to gst_date_time_new_from_iso8601_string() and default to " today " as date then
+      * 753538 : basetransform: remove unreachable return statement
+      * 753623 : pad: implement default handling of accept-caps using the template caps
 
 ==== Download ====
 
@@ -91,21 +104,32 @@
         
 Contributors to this release
     
-      * Alison Chaiken
-      * Carlos Rafael Giani
+      * Arnaud Vrac
+      * Arun Raghavan
       * Edward Hervey
-      * Hyunjun
+      * Eunhae Choi
+      * George Kiagiadakis
+      * Havard Graff
       * Hyunjun Ko
       * Jan Schmidt
-      * Jonas Holmberg
-      * Lazar Claudiu
+      * Justin Joy
+      * Luis de Bethencourt
       * Mathieu Duponchelle
-      * Matthew Waters
+      * Miguel París Díaz
       * Nicolas Dufresne
+      * Nirbheek Chauhan
+      * Olivier Crête
+      * Philippe Normand
+      * Prashant Gotarne
       * Sebastian Dröge
       * Song Bing
       * Stefan Sauer
+      * Stian Selnes
       * Thiago Santos
+      * Thibault Saunier
       * Tim-Philipp Müller
-      * Руслан Ижбулатов
+      * Vineeth T M
+      * Vineeth TM
+      * Vivia Nikolaidou
+      * Wim Taymans
  
\ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
index 8936cf2..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,
diff --git a/common/Makefile.in b/common/Makefile.in
index 60ab51a..6651e67 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 \
@@ -120,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 =
@@ -179,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`; \
@@ -528,7 +538,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*) \
@@ -823,6 +832,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/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/m4/Makefile.in b/common/m4/Makefile.in
index 6cae3c5..945e036 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 \
@@ -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 =
@@ -143,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@
@@ -487,7 +498,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*) \
@@ -662,6 +672,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/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/configure b/configure
index 2f81f36..bdeba68 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.5.2.
+# Generated by GNU Autoconf 2.69 for GStreamer 1.5.90.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer'
 PACKAGE_TARNAME='gstreamer'
-PACKAGE_VERSION='1.5.2'
-PACKAGE_STRING='GStreamer 1.5.2'
+PACKAGE_VERSION='1.5.90'
+PACKAGE_STRING='GStreamer 1.5.90'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -1674,7 +1674,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.5.2 to adapt to many kinds of systems.
+\`configure' configures GStreamer 1.5.90 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1745,7 +1745,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer 1.5.2:";;
+     short | recursive ) echo "Configuration of GStreamer 1.5.90:";;
    esac
   cat <<\_ACEOF
 
@@ -1943,7 +1943,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer configure 1.5.2
+GStreamer configure 1.5.90
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2802,7 +2802,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.5.2, which was
+It was created by GStreamer $as_me 1.5.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3297,7 +3297,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
@@ -3489,7 +3489,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'" ;;
@@ -3783,7 +3783,7 @@
 
 # Define the identity of the package.
  PACKAGE='gstreamer'
- VERSION='1.5.2'
+ VERSION='1.5.90'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3817,8 +3817,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}'
@@ -3994,9 +3994,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.5.2 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.5.2 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.5.2 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.5.90 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.5.90 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.5.90 | cut -d'.' -f3)
 
 
 
@@ -4007,7 +4007,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.5.2 | cut -d'.' -f4)
+  NANO=$(echo 1.5.90 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8665,10 +8665,10 @@
 done
 
 
-  GST_CURRENT=502
+  GST_CURRENT=590
   GST_REVISION=0
-  GST_AGE=502
-  GST_LIBVERSION=502:0:502
+  GST_AGE=590
+  GST_LIBVERSION=590:0:590
 
 
 
@@ -28697,7 +28697,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.5.2, which was
+This file was extended by GStreamer $as_me 1.5.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28763,7 +28763,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.5.2
+GStreamer config.status 1.5.90
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 8088964..bd18632 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
 dnl
-AC_INIT([GStreamer],[1.5.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
+AC_INIT([GStreamer],[1.5.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
 AG_GST_INIT
 
 dnl initialize automake (we require GNU make)
@@ -62,7 +62,7 @@
 dnl      1.10.9 (who knows) => 1009
 dnl
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 502, 0, 502)
+AS_LIBTOOL(GST, 590, 0, 590)
 
 dnl *** autotools stuff ****
 
diff --git a/data/Makefile.in b/data/Makefile.in
index 9936163..dc910ee 100644
--- a/data/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 \
       ?) ;; \
@@ -80,8 +90,6 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = data
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(am__dist_bashcompletion_DATA_DIST)
 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 \
@@ -121,6 +129,8 @@
 	$(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 =
@@ -176,6 +186,7 @@
 am__installdirs = "$(DESTDIR)$(bashcompletiondir)"
 DATA = $(dist_bashcompletion_DATA)
 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@
@@ -480,7 +491,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu data/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -680,6 +690,8 @@
 	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.
 # Otherwise a system limit (for SysV at least) may be exceeded.
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 c9d4b86..ff9a9fb 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 \
@@ -126,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
@@ -184,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`; \
@@ -524,7 +534,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*) \
@@ -533,7 +542,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
@@ -826,6 +835,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 4083976..c42ceed 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 \
@@ -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 =
@@ -143,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@
@@ -504,7 +515,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*) \
@@ -678,6 +688,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/faq/Makefile.in b/docs/faq/Makefile.in
index ce0c1d1..f62a03e 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 \
@@ -145,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 =
@@ -198,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@
@@ -578,7 +588,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*) \
@@ -587,7 +596,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
@@ -775,6 +784,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/gst/Makefile.in b/docs/gst/Makefile.in
index 2f28465..46c6141 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 \
@@ -140,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
@@ -164,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@
@@ -599,7 +610,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*) \
@@ -608,7 +618,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
@@ -785,6 +795,8 @@
 	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
 	uninstall-am uninstall-local
 
+.PRECIOUS: Makefile
+
 html: html-build.stamp
 
 upload: $(FORMATS)
diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index d13cbbb..94b1356 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -615,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
@@ -627,6 +628,7 @@
 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
@@ -963,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
@@ -994,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
@@ -1343,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>
@@ -2004,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
@@ -2340,10 +2352,12 @@
 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>
@@ -3429,6 +3443,7 @@
 gst_value_array_prepend_value
 gst_value_fixate
 
+gst_flagset_register
 
 <SUBSECTION Standard>
 GST_TYPE_G_THREAD
@@ -3471,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/GstBuffer.html b/docs/gst/html/GstBuffer.html
index af9bdb5..f2d95eb 100644
--- a/docs/gst/html/GstBuffer.html
+++ b/docs/gst/html/GstBuffer.html
@@ -2575,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>
diff --git a/docs/gst/html/GstBus.html b/docs/gst/html/GstBus.html
index ebeedfe..9d2fda0 100644
--- a/docs/gst/html/GstBus.html
+++ b/docs/gst/html/GstBus.html
@@ -896,6 +896,7 @@
 <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>
@@ -907,7 +908,7 @@
 <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.10"></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">
@@ -945,7 +946,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.10.10.16.11"></a><h4>Returns</h4>
+<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>
@@ -965,13 +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 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>
 . 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.8"></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">
@@ -999,7 +1001,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.10.10.17.9"></a><h4>Returns</h4>
+<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>
diff --git a/docs/gst/html/GstClock.html b/docs/gst/html/GstClock.html
index d5f7960..2806076 100644
--- a/docs/gst/html/GstClock.html
+++ b/docs/gst/html/GstClock.html
@@ -191,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>
@@ -284,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">
@@ -1132,6 +1148,77 @@
 </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>,
@@ -1150,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.10.27.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">
@@ -1172,7 +1259,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.27.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>
@@ -1188,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.10.28.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">
@@ -1203,7 +1290,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.28.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>
@@ -1223,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.10.29.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">
@@ -1245,7 +1332,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.29.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>
 </div>
 </div>
@@ -1257,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.10.30.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">
@@ -1272,7 +1359,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.30.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>
 </div>
@@ -1286,7 +1373,7 @@
 monotonically increasing and adjusted according to the current
 offset and rate.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.31.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">
@@ -1301,7 +1388,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.31.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>
@@ -1319,7 +1406,7 @@
 unreffed after usage.</p>
 <p>Free-function: gst_clock_id_unref</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.32.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">
@@ -1341,7 +1428,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.32.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>
@@ -1365,7 +1452,7 @@
 after usage.</p>
 <p>Free-function: gst_clock_id_unref</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.33.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">
@@ -1392,7 +1479,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.33.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>
@@ -1410,7 +1497,7 @@
  to the provided time. Does not
 modify the reference count.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.34.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">
@@ -1437,7 +1524,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.34.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>
@@ -1455,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.10.35.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">
@@ -1487,7 +1574,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.35.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>
@@ -1501,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.10.36.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">
@@ -1516,7 +1603,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.36.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>
@@ -1535,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.10.37.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">
@@ -1557,7 +1644,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.37.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>
 </div>
 </div>
@@ -1575,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.10.38.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">
@@ -1597,13 +1684,78 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.38.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>
 </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>,
@@ -1622,7 +1774,7 @@
 caller is not interested in the values.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.39.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">
@@ -1691,7 +1843,7 @@
 until the clock catches up.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.3.15.10.40.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">
@@ -1736,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.10.41.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">
@@ -1751,7 +1903,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.41.6"></a><h4>Returns</h4>
+<a name="id-1.3.15.10.43.6"></a><h4>Returns</h4>
 <p> the interval between samples.</p>
 </div>
 </div>
@@ -1764,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.10.42.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">
@@ -1802,7 +1954,7 @@
 <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.43.7"></a><h4>Parameters</h4>
+<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">
@@ -1824,7 +1976,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.43.8"></a><h4>Returns</h4>
+<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>
@@ -1837,7 +1989,7 @@
 <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.44.6"></a><h4>Parameters</h4>
+<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">
@@ -1852,7 +2004,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.44.7"></a><h4>Returns</h4>
+<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>
@@ -1869,7 +2021,7 @@
 <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.45.6"></a><h4>Parameters</h4>
+<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">
@@ -1899,7 +2051,7 @@
 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.10.46.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">
@@ -1914,7 +2066,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.46.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>
 </div>
@@ -1943,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.10.47.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">
@@ -1966,7 +2118,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.47.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
@@ -1996,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.10.48.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">
@@ -2028,7 +2180,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.48.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>
 </div>
@@ -2046,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.10.49.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">
@@ -2070,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.10.50.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">
@@ -2092,7 +2244,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.50.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>
 </div>
@@ -2105,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.10.51.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">
@@ -2120,7 +2272,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.15.10.51.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>
@@ -2136,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.10.52.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">
diff --git a/docs/gst/html/GstDateTime.html b/docs/gst/html/GstDateTime.html
index f39f8b5..60cd5d3 100644
--- a/docs/gst/html/GstDateTime.html
+++ b/docs/gst/html/GstDateTime.html
@@ -1130,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>
diff --git a/docs/gst/html/GstElementFactory.html b/docs/gst/html/GstElementFactory.html
index f9b0df9..92aea18 100644
--- a/docs/gst/html/GstElementFactory.html
+++ b/docs/gst/html/GstElementFactory.html
@@ -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>
@@ -933,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>
@@ -951,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>
@@ -1057,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">
@@ -1090,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>
@@ -1109,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">
@@ -1131,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>
@@ -1147,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">
@@ -1169,7 +1189,7 @@
 </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>
diff --git a/docs/gst/html/GstEvent.html b/docs/gst/html/GstEvent.html
index 50cc45e..7194b12 100644
--- a/docs/gst/html/GstEvent.html
+++ b/docs/gst/html/GstEvent.html
@@ -3715,37 +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_TRICKMODE</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>Beyond that, the <em class="parameter"><code>GST_SEEK_FLAG_TRICKMODE_KEY_UNITS</code></em>
- flag can be used to
+<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
-<em class="parameter"><code>GST_SEEK_FLAG_TRICKMODE_NO_AUDIO</code></em>
- flags can be used to request that audio
+<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 <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>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.11"></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">
@@ -3803,8 +3798,7 @@
 <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 <em class="parameter"><code>GST_SEEK_FLAG_TRICKMODE</code></em>
-</p>
+                    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>
@@ -3812,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>
@@ -3821,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>
@@ -3830,9 +3824,9 @@
 <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>
diff --git a/docs/gst/html/GstMemory.html b/docs/gst/html/GstMemory.html
index 9a01dc0..80bc0e3 100644
--- a/docs/gst/html/GstMemory.html
+++ b/docs/gst/html/GstMemory.html
@@ -1655,7 +1655,7 @@
 <hr>
 <div class="refsect2">
 <a name="GST-MAP-INFO-INIT:CAPS"></a><h3>GST_MAP_INFO_INIT</h3>
-<pre class="programlisting">#define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, }
+<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>
diff --git a/docs/gst/html/GstPad.html b/docs/gst/html/GstPad.html
index bd6a12b..f1b8895 100644
--- a/docs/gst/html/GstPad.html
+++ b/docs/gst/html/GstPad.html
@@ -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>
@@ -7187,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>
@@ -7380,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>
@@ -7702,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>
diff --git a/docs/gst/html/gstreamer-1.0.devhelp2 b/docs/gst/html/gstreamer-1.0.devhelp2
index 23fa2e1..e9feec5 100644
--- a/docs/gst/html/gstreamer-1.0.devhelp2
+++ b/docs/gst/html/gstreamer-1.0.devhelp2
@@ -448,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"/>
@@ -460,6 +461,7 @@
     <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"/>
@@ -676,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"/>
@@ -1241,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"/>
@@ -1404,6 +1411,7 @@
     <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"/>
@@ -2118,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"/>
@@ -2144,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"/>
@@ -2252,6 +2262,8 @@
     <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"/>
@@ -2263,6 +2275,7 @@
     <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"/>
@@ -2547,6 +2560,7 @@
     <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"/>
@@ -2580,6 +2594,7 @@
     <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"/>
diff --git a/docs/gst/html/gstreamer-GstDevice.html b/docs/gst/html/gstreamer-GstDevice.html
index bb4af7b..30fc90d 100644
--- a/docs/gst/html/gstreamer-GstDevice.html
+++ b/docs/gst/html/gstreamer-GstDevice.html
@@ -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>
@@ -369,6 +377,34 @@
 </div>
 <p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-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">
 <a name="gstreamer-GstDevice.other_details"></a><h2>Types and Values</h2>
@@ -402,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>
diff --git a/docs/gst/html/gstreamer-GstInfo.html b/docs/gst/html/gstreamer-GstInfo.html
index 59556a6..6431d74 100644
--- a/docs/gst/html/gstreamer-GstInfo.html
+++ b/docs/gst/html/gstreamer-GstInfo.html
@@ -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>
@@ -634,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>
@@ -3101,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>,
@@ -3197,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>
@@ -3546,6 +3596,29 @@
 
 <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>
diff --git a/docs/gst/html/gstreamer-GstProtectionMeta.html b/docs/gst/html/gstreamer-GstProtectionMeta.html
index ed92147..35f4834 100644
--- a/docs/gst/html/gstreamer-GstProtectionMeta.html
+++ b/docs/gst/html/gstreamer-GstProtectionMeta.html
@@ -70,10 +70,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-GstProtectionMeta.html#GstProtectionMeta" title="struct GstProtectionMeta">GstProtectionMeta</a></td>
-</tr></tbody>
+</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">
@@ -216,6 +222,15 @@
 </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">
diff --git a/docs/gst/html/gstreamer-GstValue.html b/docs/gst/html/gstreamer-GstValue.html
index ab83807..9be4f9c 100644
--- a/docs/gst/html/gstreamer-GstValue.html
+++ b/docs/gst/html/gstreamer-GstValue.html
@@ -733,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>
@@ -3749,6 +3757,31 @@
 .</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>
diff --git a/docs/gst/html/gstreamer-GstVersion.html b/docs/gst/html/gstreamer-GstVersion.html
index 59547e1..c2a5e84 100644
--- a/docs/gst/html/gstreamer-GstVersion.html
+++ b/docs/gst/html/gstreamer-GstVersion.html
@@ -98,7 +98,7 @@
 <hr>
 <div class="refsect2">
 <a name="GST-VERSION-MICRO:CAPS"></a><h3>GST_VERSION_MICRO</h3>
-<pre class="programlisting">#define GST_VERSION_MICRO (2)
+<pre class="programlisting">#define GST_VERSION_MICRO (90)
 </pre>
 <p>The micro version of GStreamer at compile time:</p>
 </div>
diff --git a/docs/gst/html/index.html b/docs/gst/html/index.html
index 3574407..be40a97 100644
--- a/docs/gst/html/index.html
+++ b/docs/gst/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer 1.0 Core Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Core 1.0 (1.5.2)
+      for GStreamer Core 1.0 (1.5.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/</a>.
     </p></div>
diff --git a/docs/gst/html/index.sgml b/docs/gst/html/index.sgml
index 885c89b..ef4e957 100644
--- a/docs/gst/html/index.sgml
+++ b/docs/gst/html/index.sgml
@@ -525,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">
@@ -537,6 +538,7 @@
 <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">
@@ -857,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">
@@ -1712,6 +1716,9 @@
 <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">
@@ -1731,6 +1738,7 @@
 <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">
@@ -1769,6 +1777,7 @@
 <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">
@@ -2059,6 +2068,7 @@
 <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">
@@ -3004,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">
@@ -3051,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">
@@ -3184,6 +3196,8 @@
 <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">
@@ -3234,6 +3248,7 @@
 <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">
diff --git a/docs/gst/html/ix01.html b/docs/gst/html/ix01.html
index 62e51aa..8571eac 100644
--- a/docs/gst/html/ix01.html
+++ b/docs/gst/html/ix01.html
@@ -1444,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>
@@ -1865,6 +1873,10 @@
 </dt>
 <dd></dd>
 <dt>
+<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>
 <a class="link" href="gstreamer-GstInfo.html#GST-DEBUG-BIN-TO-DOT-FILE:CAPS" title="GST_DEBUG_BIN_TO_DOT_FILE()">GST_DEBUG_BIN_TO_DOT_FILE</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
 </dt>
 <dd></dd>
@@ -2097,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>
@@ -2442,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>
@@ -2454,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>
@@ -3099,6 +3123,10 @@
 </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>
@@ -4654,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>
@@ -4958,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>
@@ -5138,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>
@@ -5662,6 +5702,10 @@
 </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>
@@ -6549,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>
diff --git a/docs/gst/html/ix03.html b/docs/gst/html/ix03.html
index 6be0071..6e1902b 100644
--- a/docs/gst/html/ix03.html
+++ b/docs/gst/html/ix03.html
@@ -17,8 +17,12 @@
                      <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>
@@ -87,6 +91,14 @@
 </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>
@@ -102,6 +114,11 @@
 <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>
@@ -111,6 +128,11 @@
 <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>
@@ -127,6 +149,18 @@
 </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>
@@ -158,6 +192,10 @@
 <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>
@@ -176,6 +214,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="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>
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index 5a640c2..8f4fae4 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 \
@@ -140,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 =
@@ -164,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@
@@ -592,7 +603,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*) \
@@ -601,7 +611,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
@@ -773,6 +783,8 @@
 	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
 	uninstall-am uninstall-local
 
+.PRECIOUS: Makefile
+
 html: html-build.stamp
 
 upload: $(FORMATS)
diff --git a/docs/libs/gstreamer-libs-docs.sgml b/docs/libs/gstreamer-libs-docs.sgml
index c40f125..e656179 100644
--- a/docs/libs/gstreamer-libs-docs.sgml
+++ b/docs/libs/gstreamer-libs-docs.sgml
@@ -90,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>
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index a137020..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
@@ -165,9 +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
@@ -194,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
@@ -856,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
@@ -1190,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/GstAdapter.html b/docs/libs/html/GstAdapter.html
index b885afd..114ff4e 100644
--- a/docs/libs/html/GstAdapter.html
+++ b/docs/libs/html/GstAdapter.html
@@ -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,14 @@
 </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">
@@ -162,6 +186,14 @@
 </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">
@@ -742,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">
@@ -768,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>
@@ -779,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>,
@@ -796,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">
@@ -824,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>
@@ -836,6 +919,53 @@
 </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">
 <a name="gst-adapter-take-list"></a><h3>gst_adapter_take_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_take_list (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>,
@@ -849,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">
@@ -871,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>
@@ -881,6 +1011,51 @@
 </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>,
@@ -894,7 +1069,7 @@
 <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.16.6"></a><h4>Parameters</h4>
+<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">
@@ -916,7 +1091,53 @@
 </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.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>
@@ -941,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.17.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">
@@ -963,7 +1184,7 @@
 </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.21.7"></a><h4>Returns</h4>
 <p> The previously seen pts.</p>
 </div>
 </div>
@@ -982,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.18.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">
@@ -1004,7 +1225,7 @@
 </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.22.7"></a><h4>Returns</h4>
 <p> The previously seen dts.</p>
 </div>
 </div>
@@ -1025,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.19.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">
@@ -1052,7 +1273,7 @@
 </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.23.7"></a><h4>Returns</h4>
 <p> The previously seen pts at given offset.</p>
 </div>
 <p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
@@ -1074,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.20.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">
@@ -1101,7 +1322,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.20.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>
 </div>
 <p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
@@ -1130,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.21.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">
@@ -1169,7 +1390,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.21.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">
@@ -1217,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.22.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">
@@ -1261,7 +1482,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.8.8.22.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>
 </div>
 </div>
diff --git a/docs/libs/html/GstBaseParse.html b/docs/libs/html/GstBaseParse.html
index 663ef32..4138846 100644
--- a/docs/libs/html/GstBaseParse.html
+++ b/docs/libs/html/GstBaseParse.html
@@ -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>
@@ -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">
@@ -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,7 +959,7 @@
 </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>
 </div>
 </div>
@@ -930,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">
@@ -967,7 +1017,7 @@
 </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>
 </div>
 </div>
@@ -982,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">
@@ -1011,7 +1061,7 @@
 </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>
 </div>
@@ -1027,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">
@@ -1060,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">
@@ -1082,7 +1132,7 @@
 </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>
 </div>
 </div>
@@ -1107,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">
@@ -1134,7 +1184,7 @@
 </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>
 </div>
 </div>
@@ -1146,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">
@@ -1180,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">
@@ -1202,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">
@@ -1224,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">
diff --git a/docs/libs/html/GstBaseTransform.html b/docs/libs/html/GstBaseTransform.html
index db42afc..be6f8e9 100644
--- a/docs/libs/html/GstBaseTransform.html
+++ b/docs/libs/html/GstBaseTransform.html
@@ -1213,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>
diff --git a/docs/libs/html/GstDirectControlBinding.html b/docs/libs/html/GstDirectControlBinding.html
index cc32464..4eb0d29 100644
--- a/docs/libs/html/GstDirectControlBinding.html
+++ b/docs/libs/html/GstDirectControlBinding.html
@@ -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">
@@ -136,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>
diff --git a/docs/libs/html/GstTestClock.html b/docs/libs/html/GstTestClock.html
index 0f8b381..6ed7b2e 100644
--- a/docs/libs/html/GstTestClock.html
+++ b/docs/libs/html/GstTestClock.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="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.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="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>
@@ -454,7 +454,7 @@
 <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>
@@ -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,7 +483,7 @@
 </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>
@@ -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">
@@ -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">
@@ -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,7 +591,7 @@
 </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>
 </div>
 <p class="since">Since: <a class="link" href="ix05.html#api-index-1.2">1.2</a></p>
@@ -608,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">
@@ -630,7 +630,7 @@
 </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>
 </div>
@@ -651,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">
@@ -689,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">
@@ -730,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">
@@ -760,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">
@@ -776,7 +776,7 @@
 </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>
@@ -791,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">
@@ -806,7 +806,7 @@
 </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>
@@ -828,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">
@@ -867,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">
@@ -893,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">
@@ -936,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">
diff --git a/docs/libs/html/gstreamer-check.html b/docs/libs/html/gstreamer-check.html
index 073addc..1683447 100644
--- a/docs/libs/html/gstreamer-check.html
+++ b/docs/libs/html/gstreamer-check.html
@@ -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>
diff --git a/docs/libs/html/gstreamer-libs-1.0.devhelp2 b/docs/libs/html/gstreamer-libs-1.0.devhelp2
index 1e3baf3..b2b835f 100644
--- a/docs/libs/html/gstreamer-libs-1.0.devhelp2
+++ b/docs/libs/html/gstreamer-libs-1.0.devhelp2
@@ -38,6 +38,7 @@
         <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>
@@ -51,6 +52,7 @@
     <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"/>
@@ -196,9 +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"/>
@@ -512,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"/>
@@ -519,6 +530,7 @@
     <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"/>
@@ -656,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"/>
diff --git a/docs/libs/html/gstreamer-libs-GstByteWriter.html b/docs/libs/html/gstreamer-libs-GstByteWriter.html
index feb6af7..29734e2 100644
--- a/docs/libs/html/gstreamer-libs-GstByteWriter.html
+++ b/docs/libs/html/gstreamer-libs-GstByteWriter.html
@@ -1170,8 +1170,7 @@
 gst_byte_writer_put_int8 (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> *writer</code></em>,
                           <em class="parameter"><code><span class="type">gint8</span> val</code></em>);</pre>
 <p>Writes a signed 8 bit integer to <em class="parameter"><code>writer</code></em>
- without
-checking if there is enough free space available in the byte writer.</p>
+.</p>
 <div class="refsect3">
 <a name="id-1.2.4.11.7.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1194,6 +1193,10 @@
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="id-1.2.4.11.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 the value could be written</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libs/html/gstreamer-libs-GstHarness.html b/docs/libs/html/gstreamer-libs-GstHarness.html
new file mode 100644
index 0000000..39ad0fa
--- /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"> </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-GstPtpClock.html b/docs/libs/html/gstreamer-libs-GstPtpClock.html
index d03a6ce..4c2dc98 100644
--- a/docs/libs/html/gstreamer-libs-GstPtpClock.html
+++ b/docs/libs/html/gstreamer-libs-GstPtpClock.html
@@ -190,7 +190,7 @@
 <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]</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="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>
diff --git a/docs/libs/html/gstreamer-libs-GstQueueArray.html b/docs/libs/html/gstreamer-libs-GstQueueArray.html
index 596ad67..a376be7 100644
--- a/docs/libs/html/gstreamer-libs-GstQueueArray.html
+++ b/docs/libs/html/gstreamer-libs-GstQueueArray.html
@@ -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>
@@ -259,7 +299,7 @@
 <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>
@@ -439,6 +479,164 @@
 </div>
 <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">
 <a name="gstreamer-libs-GstQueueArray.other_details"></a><h2>Types and Values</h2>
diff --git a/docs/libs/html/gstreamer-libs-GstStreamConsistency.html b/docs/libs/html/gstreamer-libs-GstStreamConsistency.html
index 52f0e4c..7f4072b 100644
--- a/docs/libs/html/gstreamer-libs-GstStreamConsistency.html
+++ b/docs/libs/html/gstreamer-libs-GstStreamConsistency.html
@@ -7,7 +7,7 @@
 <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">
+<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>
@@ -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>
diff --git a/docs/libs/html/gstreamer-libs.html b/docs/libs/html/gstreamer-libs.html
index c6035f7..8c4bb90 100644
--- a/docs/libs/html/gstreamer-libs.html
+++ b/docs/libs/html/gstreamer-libs.html
@@ -130,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>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index bd0996b..0dcba99 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer 1.0 Library Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Library 1.0 (1.5.2)
+      for GStreamer Library 1.0 (1.5.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/</a>.
     </p></div>
@@ -130,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>
diff --git a/docs/libs/html/index.sgml b/docs/libs/html/index.sgml
index 6c5cecc..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">
@@ -212,9 +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">
@@ -589,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">
@@ -613,6 +623,7 @@
 <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">
@@ -872,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">
diff --git a/docs/libs/html/ix01.html b/docs/libs/html/ix01.html
index a50383f..e416ff4 100644
--- a/docs/libs/html/ix01.html
+++ b/docs/libs/html/ix01.html
@@ -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>
@@ -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>
@@ -385,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>
@@ -2050,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>
@@ -2124,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>
@@ -2350,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>
@@ -2370,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>
diff --git a/docs/libs/html/ix03.html b/docs/libs/html/ix03.html
index a9dfe2a..3424afb 100644
--- a/docs/libs/html/ix03.html
+++ b/docs/libs/html/ix03.html
@@ -19,12 +19,18 @@
                      <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>
@@ -36,11 +42,31 @@
 <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>
@@ -73,11 +99,321 @@
 <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>
@@ -112,6 +448,23 @@
 <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>
diff --git a/docs/manual/Makefile.in b/docs/manual/Makefile.in
index 017d00d..58a55cd 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 \
@@ -145,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 =
@@ -198,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@
@@ -581,7 +591,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*) \
@@ -590,7 +599,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
@@ -778,6 +787,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/plugins/Makefile.in b/docs/plugins/Makefile.in
index 5c292fc..4d059fa 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 \
@@ -138,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 =
@@ -162,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@
@@ -650,7 +661,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*) \
@@ -659,7 +669,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
@@ -830,6 +840,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)
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 313da0f..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,14 +58,33 @@
 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
@@ -43,9 +93,9 @@
 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>
@@ -58,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
@@ -74,30 +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_FILE_SINK_CAST
-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
@@ -105,60 +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-concat</FILE>
-<TITLE>concat</TITLE>
-GstConcat
-<SUBSECTION Standard>
-GstConcatClass
-GST_CONCAT
-GST_CONCAT_CAST
-GST_IS_CONCAT
-GST_TYPE_CONCAT
-GST_CONCAT_CLASS
-GST_IS_CONCAT_CLASS
-<SUBSECTION Private>
-gst_concat_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
@@ -166,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>
@@ -181,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>
@@ -202,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>
@@ -232,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>
@@ -287,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
@@ -302,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 1d7cdab..c9bb39c 100644
--- a/docs/plugins/gstreamer-plugins.args
+++ b/docs/plugins/gstreamer-plugins.args
@@ -104,7 +104,7 @@
 <RANGE></RANGE>
 <FLAGS>rwx</FLAGS>
 <NICK>Allow not linked</NICK>
-<BLURB>Return GTS_FLOW_OK even if there are not source pads or all are unlinked.</BLURB>
+<BLURB>Return GST_FLOW_OK even if there are no source pads or they are all unlinked.</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -1118,3 +1118,13 @@
 <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/html/ch01.html b/docs/plugins/html/ch01.html
index 9e4a268..9ac4f07 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -27,6 +27,9 @@
 <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-concat.html">concat</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -69,6 +72,9 @@
 <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-streamiddemux.html">streamiddemux</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-tee.html">tee</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2 b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
index 6704e6e..790b53e 100644
--- a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
@@ -3,6 +3,7 @@
   <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"/>
@@ -17,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,8 +29,12 @@
   </chapters>
   <functions>
     <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="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"/>
@@ -80,11 +86,13 @@
     <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="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="struct" name="struct GstFunnel" link="gstreamer-plugins-funnel.html#GstFunnel-struct"/>
+    <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"/>
@@ -158,6 +166,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="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"/>
@@ -174,6 +184,8 @@
     <keyword type="signal" name="The “have-type” signal" link="gstreamer-plugins-typefind.html#GstTypeFindElement-have-type"/>
     <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"/>
@@ -199,6 +211,10 @@
     <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"/>
diff --git a/docs/plugins/html/gstreamer-plugins-capsfilter.html b/docs/plugins/html/gstreamer-plugins-capsfilter.html
index 399663a..db9774f 100644
--- a/docs/plugins/html/gstreamer-plugins-capsfilter.html
+++ b/docs/plugins/html/gstreamer-plugins-capsfilter.html
@@ -7,7 +7,7 @@
 <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">
+<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>
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="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>
@@ -49,7 +49,7 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><span class="type">GstCapsFilterCapsChangeMode</span></td>
+<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>
@@ -63,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">
@@ -200,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>
@@ -212,7 +249,7 @@
 <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”         <span class="type">GstCapsFilterCapsChangeMode</span></pre>
+<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>
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 0e90360..c188a2b 100644
--- a/docs/plugins/html/gstreamer-plugins-downloadbuffer.html
+++ b/docs/plugins/html/gstreamer-plugins-downloadbuffer.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="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.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="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">
@@ -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">
diff --git a/docs/plugins/html/gstreamer-plugins-fakesink.html b/docs/plugins/html/gstreamer-plugins-fakesink.html
index b221dbc..1e45086 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesink.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesink.html
@@ -142,7 +142,7 @@
 <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>
@@ -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">
@@ -228,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">
@@ -368,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">
@@ -411,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">
diff --git a/docs/plugins/html/gstreamer-plugins-fakesrc.html b/docs/plugins/html/gstreamer-plugins-fakesrc.html
index b538a95..2596054 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesrc.html
@@ -196,7 +196,7 @@
 <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>
@@ -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">
@@ -283,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">
@@ -314,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">
@@ -366,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">
@@ -439,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">
@@ -626,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">
diff --git a/docs/plugins/html/gstreamer-plugins-fdsink.html b/docs/plugins/html/gstreamer-plugins-fdsink.html
index 0baa1f1..1dff00f 100644
--- a/docs/plugins/html/gstreamer-plugins-fdsink.html
+++ b/docs/plugins/html/gstreamer-plugins-fdsink.html
@@ -87,7 +87,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.6.8.4.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.4.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">
diff --git a/docs/plugins/html/gstreamer-plugins-fdsrc.html b/docs/plugins/html/gstreamer-plugins-fdsrc.html
index 26e0178..32d34af 100644
--- a/docs/plugins/html/gstreamer-plugins-fdsrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fdsrc.html
@@ -101,7 +101,7 @@
   expired when waiting for data.
   </p></li></ul></div>
 <div class="refsect2">
-<a name="id-1.2.7.8.7"></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>
@@ -118,7 +118,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.7.8.8.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.8.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">
diff --git a/docs/plugins/html/gstreamer-plugins-filesink.html b/docs/plugins/html/gstreamer-plugins-filesink.html
index 2e4ff38..e35ad20 100644
--- a/docs/plugins/html/gstreamer-plugins-filesink.html
+++ b/docs/plugins/html/gstreamer-plugins-filesink.html
@@ -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,7 +106,7 @@
 <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>
@@ -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">
@@ -181,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>
@@ -194,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>
diff --git a/docs/plugins/html/gstreamer-plugins-filesrc.html b/docs/plugins/html/gstreamer-plugins-filesrc.html
index 0c96f24..a4b6890 100644
--- a/docs/plugins/html/gstreamer-plugins-filesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-filesrc.html
@@ -83,7 +83,7 @@
 <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>
@@ -99,7 +99,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.8.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.9.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -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">
diff --git a/docs/plugins/html/gstreamer-plugins-funnel.html b/docs/plugins/html/gstreamer-plugins-funnel.html
index e23b6cf..2f9da4e 100644
--- a/docs/plugins/html/gstreamer-plugins-funnel.html
+++ b/docs/plugins/html/gstreamer-plugins-funnel.html
@@ -16,7 +16,8 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#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>
@@ -32,6 +33,21 @@
 </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">
@@ -66,7 +82,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.10.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.11.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -92,7 +108,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.10.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.11.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -156,6 +172,16 @@
 <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.24</div>
diff --git a/docs/plugins/html/gstreamer-plugins-identity.html b/docs/plugins/html/gstreamer-plugins-identity.html
index a6ece56..cc0c202 100644
--- a/docs/plugins/html/gstreamer-plugins-identity.html
+++ b/docs/plugins/html/gstreamer-plugins-identity.html
@@ -152,7 +152,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.11.8.3.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.3.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">
@@ -353,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">
diff --git a/docs/plugins/html/gstreamer-plugins-input-selector.html b/docs/plugins/html/gstreamer-plugins-input-selector.html
index 87977bf..feabe2a 100644
--- a/docs/plugins/html/gstreamer-plugins-input-selector.html
+++ b/docs/plugins/html/gstreamer-plugins-input-selector.html
@@ -138,7 +138,7 @@
 <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.8.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -164,7 +164,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.12.8.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.13.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -231,7 +231,7 @@
 <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.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/plugins/html/gstreamer-plugins-multiqueue.html b/docs/plugins/html/gstreamer-plugins-multiqueue.html
index f3af7bc..5310e54 100644
--- a/docs/plugins/html/gstreamer-plugins-multiqueue.html
+++ b/docs/plugins/html/gstreamer-plugins-multiqueue.html
@@ -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>
@@ -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">
@@ -420,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">
@@ -453,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">
diff --git a/docs/plugins/html/gstreamer-plugins-output-selector.html b/docs/plugins/html/gstreamer-plugins-output-selector.html
index 86c91ea..7e019f0 100644
--- a/docs/plugins/html/gstreamer-plugins-output-selector.html
+++ b/docs/plugins/html/gstreamer-plugins-output-selector.html
@@ -95,7 +95,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.14.7.3.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.3.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">
@@ -188,7 +188,7 @@
 <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">
diff --git a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
index fc67b51..be751d4 100644
--- a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
+++ b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.5.2</td>
+<td>1.5.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -71,7 +71,7 @@
 <td>Pass data without modification, limiting formats</td>
 </tr>
 <tr>
-<td><p><span class="term">concat</span></p></td>
+<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>
@@ -131,7 +131,7 @@
 <td>Simple data queue</td>
 </tr>
 <tr>
-<td><p><span class="term">streamiddemux</span></p></td>
+<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>
diff --git a/docs/plugins/html/gstreamer-plugins-queue.html b/docs/plugins/html/gstreamer-plugins-queue.html
index 1898cc0..350909f 100644
--- a/docs/plugins/html/gstreamer-plugins-queue.html
+++ b/docs/plugins/html/gstreamer-plugins-queue.html
@@ -194,7 +194,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.15.8.8.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.8.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">
@@ -288,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">
@@ -441,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">
@@ -473,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">
@@ -506,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">
@@ -540,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">
diff --git a/docs/plugins/html/gstreamer-plugins-queue2.html b/docs/plugins/html/gstreamer-plugins-queue2.html
index 7cd819d..d284f09 100644
--- a/docs/plugins/html/gstreamer-plugins-queue2.html
+++ b/docs/plugins/html/gstreamer-plugins-queue2.html
@@ -7,7 +7,7 @@
 <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">
+<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>
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="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>
@@ -161,7 +161,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.16.7.8.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.8.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">
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 87e00bc..d42555e 100644
--- a/docs/plugins/html/gstreamer-plugins-tee.html
+++ b/docs/plugins/html/gstreamer-plugins-tee.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="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.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="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">
@@ -120,7 +120,7 @@
 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>
@@ -138,7 +138,7 @@
 <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">
@@ -164,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">
@@ -234,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">
diff --git a/docs/plugins/html/gstreamer-plugins-typefind.html b/docs/plugins/html/gstreamer-plugins-typefind.html
index 34f3086..064f94d 100644
--- a/docs/plugins/html/gstreamer-plugins-typefind.html
+++ b/docs/plugins/html/gstreamer-plugins-typefind.html
@@ -113,7 +113,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.18.8.5.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.5.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">
@@ -240,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">
diff --git a/docs/plugins/html/gstreamer-plugins-valve.html b/docs/plugins/html/gstreamer-plugins-valve.html
index 85ab2e2..27805bb 100644
--- a/docs/plugins/html/gstreamer-plugins-valve.html
+++ b/docs/plugins/html/gstreamer-plugins-valve.html
@@ -80,7 +80,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.19.7.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.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">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 9af623c..2cd79d4 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Core Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Core Plugins 1.0 (1.5.2)
+      for GStreamer Core Plugins 1.0 (1.5.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/</a>.
     </p></div>
@@ -29,6 +29,9 @@
 <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-concat.html">concat</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -71,6 +74,9 @@
 <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-streamiddemux.html">streamiddemux</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-tee.html">tee</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index d93ef06..6a3c870 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -8,9 +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">
@@ -162,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">
@@ -169,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">
@@ -176,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">
@@ -322,6 +346,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">
diff --git a/docs/plugins/inspect/plugin-coreelements.xml b/docs/plugins/inspect/plugin-coreelements.xml
index efb75e3..b8b79a9 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.5.2</version>
+  <version>1.5.90</version>
   <license>LGPL</license>
   <source>gstreamer</source>
   <package>GStreamer source release</package>
diff --git a/docs/pwg/Makefile.in b/docs/pwg/Makefile.in
index dcb91b5..0fa078d 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 \
@@ -145,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 =
@@ -198,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@
@@ -578,7 +588,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*) \
@@ -587,7 +596,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
@@ -775,6 +784,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/slides/Makefile.in b/docs/slides/Makefile.in
index 75e338a..2ec6a47 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 \
@@ -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 =
@@ -143,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@
@@ -446,7 +457,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*) \
@@ -621,6 +631,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 f0b87a0..29f0d81 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 \
@@ -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 =
@@ -143,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@
@@ -447,7 +458,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*) \
@@ -622,6 +632,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.in b/gst/Makefile.in
index 67f24e4..c6925e7 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 \
@@ -127,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
@@ -356,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`; \
@@ -925,7 +935,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*) \
@@ -1975,6 +1984,8 @@
 	uninstall-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
+
 
 gstenumtypes.h: $(gst_headers)
 	$(AM_V_GEN)$(GLIB_MKENUMS) \
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_private.h b/gst/gst_private.h
index 044fead..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);
diff --git a/gst/gstallocator.h b/gst/gstallocator.h
index f0fe0a3..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
 
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/gstbuffer.c b/gst/gstbuffer.c
index f86df33..b569387 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -534,7 +534,17 @@
       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;
@@ -2249,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
  */
@@ -2268,7 +2278,7 @@
   *dest_size = gst_buffer_extract (buffer, offset, *dest, size);
 }
 
-GST_DEBUG_CATEGORY (gst_parent_buffer_meta_debug);
+GST_DEBUG_CATEGORY_STATIC (gst_parent_buffer_meta_debug);
 
 /**
  * gst_buffer_add_parent_buffer_meta:
@@ -2321,6 +2331,9 @@
 
     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;
 }
@@ -2341,8 +2354,8 @@
   static volatile gsize _init;
 
   if (g_once_init_enter (&_init)) {
-    GST_DEBUG_CATEGORY_INIT (gst_parent_buffer_meta_debug, "glbufferrefmeta", 0,
-        "glbufferrefmeta");
+    GST_DEBUG_CATEGORY_INIT (gst_parent_buffer_meta_debug, "parentbuffermeta",
+        0, "parentbuffermeta");
     g_once_init_leave (&_init, 1);
   }
 
diff --git a/gst/gstbus.c b/gst/gstbus.c
index fbe2464..9936290 100644
--- a/gst/gstbus.c
+++ b/gst/gstbus.c
@@ -911,6 +911,8 @@
  * 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.
  *
@@ -953,6 +955,8 @@
  * 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.
+ *
  * 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().
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.h b/gst/gstclock.h
index c42f742..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 --- */
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/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 b76c948..2e3469e 100644
--- a/gst/gstdebugutils.c
+++ b/gst/gstdebugutils.c
@@ -65,6 +65,9 @@
       "                                "        /* 128 */
 };
 
+#define MAKE_INDENT(indent) \
+  &spaces[MAX (sizeof (spaces) - (1 + (indent) * 2), 0)]
+
 static gchar *
 debug_dump_make_object_name (GstObject * obj)
 {
@@ -165,7 +168,7 @@
   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));
 
@@ -247,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 =
@@ -398,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) ||
@@ -478,23 +481,27 @@
 static void
 debug_dump_element_pads (GstIterator * pad_iter, GstPad * pad,
     GstElement * element, GstDebugGraphDetails details, GString * str,
-    const gint indent, guint * src_pads, guint * sink_pads)
+    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);
+        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);
-        dir = gst_pad_get_direction (pad);
-        if (dir == GST_PAD_SRC)
-          (*src_pads)++;
-        else if (dir == GST_PAD_SINK)
-          (*sink_pads)++;
+        (*num_pads)++;
         g_value_reset (&item);
         break;
       case GST_ITERATOR_RESYNC:
@@ -506,6 +513,9 @@
         break;
     }
   }
+  if (*num_pads) {
+    g_string_append_printf (str, "%s}\n\n", spc);
+  }
 }
 
 /*
@@ -527,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;
@@ -553,8 +564,8 @@
         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;\n", spc);
-        g_string_append_printf (str, "%s  color=black;\n\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 : "")
@@ -567,19 +578,32 @@
           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))) {
+          gchar *cluster_name = g_strdup_printf ("%s_sink", element_name);
           debug_dump_element_pads (pad_iter, pad, element, details, str,
-              indent, &src_pads, &sink_pads);
+              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))) {
+          gchar *cluster_name = g_strdup_printf ("%s_src", element_name);
           debug_dump_element_pads (pad_iter, pad, element, details, str,
-              indent, &src_pads, &sink_pads);
+              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)) {
           g_string_append_printf (str, "%s  fillcolor=\"#ffffff\";\n", spc);
           /* recurse */
@@ -671,13 +695,14 @@
       "  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"
+      "  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"
-      "    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,"
+      "    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 : "")
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 b055934..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);
@@ -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
@@ -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/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/gstinfo.h b/gst/gstinfo.h
index 71cfa41..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
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.h b/gst/gstmemory.h
index 7b9d321..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
 
@@ -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:
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/gstpad.c b/gst/gstpad.c
index c4e8ff2..183fc91 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -163,6 +163,7 @@
   GstPadProbeInfo *info;
   gboolean dropped;
   gboolean pass;
+  gboolean handled;
   gboolean marshalled;
   guint cookie;
 } ProbeMarshall;
@@ -470,6 +471,8 @@
       if (idx == 0)
         goto found;
       idx--;
+    } else if (GST_EVENT_TYPE (ev->event) > type) {
+      break;
     }
   }
   ev = NULL;
@@ -492,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:
@@ -515,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);
@@ -1420,6 +1427,9 @@
         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;
@@ -2645,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);
 
@@ -2970,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)) {
@@ -3358,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");
@@ -3387,31 +3406,40 @@
     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 != 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)
@@ -3456,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;
@@ -3488,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;
@@ -3549,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 */
@@ -3850,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;
   }
@@ -3964,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;
   }
@@ -3984,6 +4029,7 @@
 {
   GstFlowReturn ret;
   GstObject *parent;
+  gboolean handled = FALSE;
 
   GST_PAD_STREAM_LOCK (pad);
 
@@ -4013,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.
@@ -4057,6 +4104,8 @@
         GST_DEBUG_FUNCPTR_NAME (chainlistfunc), gst_flow_get_name (ret));
   }
 
+  RELEASE_PARENT (parent);
+
   GST_PAD_STREAM_UNLOCK (pad);
 
   return ret;
@@ -4088,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:
@@ -4105,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));
@@ -4220,6 +4284,7 @@
 {
   GstPad *peer;
   GstFlowReturn ret;
+  gboolean handled = FALSE;
 
   GST_OBJECT_LOCK (pad);
   if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
@@ -4251,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;
@@ -4269,6 +4335,7 @@
   GST_OBJECT_UNLOCK (pad);
 
   ret = gst_pad_chain_data_unchecked (peer, type, data);
+  data = NULL;
 
   gst_object_unref (peer);
 
@@ -4321,23 +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;
-    if (data != NULL)
+    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:
@@ -5085,9 +5155,13 @@
 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;
@@ -5183,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.
@@ -5450,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 696d79d..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>
@@ -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/gstplugin.c b/gst/gstplugin.c
index 0ca5d8d..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
@@ -678,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);
@@ -836,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/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/gstprotection.c b/gst/gstprotection.c
index c5223ee..87122c9 100644
--- a/gst/gstprotection.c
+++ b/gst/gstprotection.c
@@ -84,6 +84,28 @@
     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)
 {
@@ -93,8 +115,7 @@
     const GstMetaInfo *meta =
         gst_meta_register (GST_PROTECTION_META_API_TYPE, "GstProtectionMeta",
         sizeof (GstProtectionMeta), gst_protection_meta_init,
-        gst_protection_meta_free,
-        (GstMetaTransformFunction) NULL);
+        gst_protection_meta_free, gst_protection_meta_transform);
 
     g_once_init_leave (&protection_meta_info, meta);
   }
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/gstregistry.c b/gst/gstregistry.c
index 27a3f76..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) {
diff --git a/gst/gstsegment.h b/gst/gstsegment.h
index da3942f..85aed25 100644
--- a/gst/gstsegment.h
+++ b/gst/gstsegment.h
@@ -60,15 +60,15 @@
  *                     elements to skip frames instead of generating all
  *                     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
@@ -77,7 +77,7 @@
  *                     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
+ *                     by %GST_SEEK_FLAG_TRICKMODE
  *
  * Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
  * can be used together.
@@ -91,27 +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_TRICKMODE 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.
  *
- * Beyond that, the @GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to
+ * 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
+ * %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 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
+ * 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.
diff --git a/gst/gsttask.c b/gst/gsttask.c
index d9e5697..62453d1 100644
--- a/gst/gsttask.c
+++ b/gst/gsttask.c
@@ -414,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;
@@ -440,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;
@@ -795,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/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/gstvalue.c b/gst/gstvalue.c
index 8bd16dc..37a59bf 100644
--- a/gst/gstvalue.c
+++ b/gst/gstvalue.c
@@ -2445,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;
@@ -2471,8 +2471,6 @@
     caps = gst_caps_from_string (fields[1]);
     if (caps == NULL)
       goto fail;
-  } else {
-    caps = NULL;
   }
 
   if (strcmp (fields[2], "None") != 0) {
@@ -2499,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);
 
diff --git a/gst/gstversion.h.in b/gst/gstversion.h.in
index 6ac6784..a74c2d1 100644
--- a/gst/gstversion.h.in
+++ b/gst/gstversion.h.in
@@ -23,6 +23,8 @@
 #ifndef __GST_VERSION_H__
 #define __GST_VERSION_H__
 
+#include <glib.h>
+
 /**
  * SECTION:gstversion
  * @short_description: GStreamer version macros.
diff --git a/gst/parse/Makefile.in b/gst/parse/Makefile.in
index ccde512..005fb22 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 \
@@ -122,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 =
@@ -202,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@
@@ -524,7 +535,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*) \
@@ -814,6 +824,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 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/printf/Makefile.in b/gst/printf/Makefile.in
index e3d7fea..90f941b 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 \
@@ -121,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 =
@@ -200,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@
@@ -532,7 +542,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*) \
@@ -853,6 +862,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/gstreamer.doap b/gstreamer.doap
index cf55ef8..28fb56d 100644
--- a/gstreamer.doap
+++ b/gstreamer.doap
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.5.90</revision>
+   <branch>1.5</branch>
+   <name></name>
+   <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.5.2</revision>
    <branch>1.5</branch>
    <name></name>
diff --git a/gstreamer.spec b/gstreamer.spec
index 415e2ed..f07ff92 100644
--- a/gstreamer.spec
+++ b/gstreamer.spec
@@ -4,7 +4,7 @@
 %define 	_glib2		2.32.0
 
 Name: 		%{gstreamer}
-Version: 	1.5.2
+Version: 	1.5.90
 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.in b/libs/Makefile.in
index 3954110..ebb8ab6 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 \
@@ -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
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -506,7 +517,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*) \
@@ -801,6 +811,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/libs/gst/Makefile.in b/libs/gst/Makefile.in
index ee3ea65..34ccdcb 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 \
@@ -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 =
@@ -177,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`; \
@@ -511,7 +522,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*) \
@@ -806,6 +816,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/libs/gst/base/Makefile.in b/libs/gst/base/Makefile.in
index 36f21ed..cee0bdb 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 \
@@ -126,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 =
@@ -250,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@
@@ -614,7 +624,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*) \
@@ -1099,6 +1108,8 @@
 	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
diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c
index 7a1c760..3661db4 100644
--- a/libs/gst/base/gstadapter.c
+++ b/libs/gst/base/gstadapter.c
@@ -655,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;
@@ -727,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);
 
@@ -735,25 +735,13 @@
 }
 
 /**
- * gst_adapter_take_buffer_fast:
+ * gst_adapter_get_buffer_fast:
  * @adapter:  a #GstAdapter
- * @nbytes: the number of bytes to take
+ * @nbytes: the number of bytes to get
  *
- * Returns a #GstBuffer containing the first @nbytes of the @adapter.
- * The returned bytes will be flushed from the adapter.  This function
- * is potentially more performant than gst_adapter_take_buffer() since
- * it can reuse the memory in pushed buffers by subbuffering or
- * merging. Unlike gst_adapter_take_buffer(), the returned buffer may
- * be composed of multiple non-contiguous #GstMemory objects, no
- * copies are made.
- *
- * 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.
- *
- * This function can return buffer up to the return value of
- * gst_adapter_available() without making copies if possible.
+ * 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.
@@ -764,11 +752,10 @@
  *     @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
  *     gst_buffer_unref() when no longer needed.
  *
- * Since: 1.2
+ * Since: 1.6
  */
-
 GstBuffer *
-gst_adapter_take_buffer_fast (GstAdapter * adapter, gsize nbytes)
+gst_adapter_get_buffer_fast (GstAdapter * adapter, gsize nbytes)
 {
   GstBuffer *buffer = NULL;
   GstBuffer *cur;
@@ -779,7 +766,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
@@ -808,7 +795,8 @@
     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);
+      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;
@@ -816,28 +804,34 @@
   }
 
 done:
-  gst_adapter_flush_unchecked (adapter, nbytes);
 
   return buffer;
 }
 
 /**
- * gst_adapter_take_buffer:
- * @adapter: a #GstAdapter
+ * gst_adapter_take_buffer_fast:
+ * @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.
+ * Returns a #GstBuffer containing the first @nbytes of the @adapter.
+ * The returned bytes will be flushed from the adapter.  This function
+ * is potentially more performant than gst_adapter_take_buffer() since
+ * it can reuse the memory in pushed buffers by subbuffering or
+ * merging. Unlike gst_adapter_take_buffer(), the returned buffer may
+ * be composed of multiple non-contiguous #GstMemory objects, no
+ * copies are made.
  *
  * 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.
  *
+ * 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.
+ *
  * Caller owns a reference to the returned buffer. gst_buffer_unref() after
  * usage.
  *
@@ -846,9 +840,73 @@
  * 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.2
  */
 GstBuffer *
-gst_adapter_take_buffer (GstAdapter * adapter, gsize nbytes)
+gst_adapter_take_buffer_fast (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_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_get_buffer:
+ * @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()
+ * 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 (GstAdapter * adapter, gsize nbytes)
 {
   GstBuffer *buffer;
   GstBuffer *cur;
@@ -858,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
@@ -897,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;
 }
@@ -952,6 +1069,65 @@
 }
 
 /**
+ * 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
@@ -1006,6 +1182,76 @@
 }
 
 /**
+ * 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 3e93ca2..a5cfb68 100644
--- a/libs/gst/base/gstadapter.h
+++ b/libs/gst/base/gstadapter.h
@@ -64,6 +64,10 @@
 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 eee3c92..80334fb 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -286,6 +286,7 @@
   gboolean post_min_bitrate;
   gboolean post_avg_bitrate;
   gboolean post_max_bitrate;
+
   guint min_bitrate;
   guint avg_bitrate;
   guint max_bitrate;
@@ -359,6 +360,12 @@
 
   /* 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
@@ -432,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);
@@ -469,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,
@@ -644,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
@@ -823,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;
@@ -867,6 +873,14 @@
   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;
@@ -878,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.
@@ -1186,14 +1278,16 @@
         GST_ELEMENT_ERROR (parse, STREAM, WRONG_TYPE,
             ("No valid frames found before end of stream"), (NULL));
       }
-      /* newsegment and other serialized events before eos */
-      gst_base_parse_push_pending_events (parse);
 
       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_post_bitrates (parse, TRUE, TRUE, TRUE);
+        gst_base_parse_queue_tag_event_update (parse);
       }
+
+      /* newsegment and other serialized events before eos */
+      gst_base_parse_push_pending_events (parse);
+
       forward_immediate = TRUE;
       break;
     case GST_EVENT_CUSTOM_DOWNSTREAM:{
@@ -1235,15 +1329,32 @@
       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;
   }
@@ -1543,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;
   }
 }
 
@@ -1635,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;
@@ -1663,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)
@@ -1674,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;
 }
 
 /**
@@ -2239,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);
 
@@ -2813,7 +2875,6 @@
   GstBuffer *tmpbuf = NULL;
   guint fsize = 1;
   gint skip = -1;
-  const guint8 *data;
   guint min_size, av;
   GstClockTime pts, dts;
 
@@ -3012,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;
     }
@@ -3330,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 &&
@@ -3341,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;
@@ -3401,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);
 
@@ -4297,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;
@@ -4325,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,
@@ -4502,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.");
@@ -4535,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
@@ -4683,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 66c3d04..94522cc 100644
--- a/libs/gst/base/gstbaseparse.h
+++ b/libs/gst/base/gstbaseparse.h
@@ -345,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 d44e8fc..f5fea82 100644
--- a/libs/gst/base/gstbasesink.c
+++ b/libs/gst/base/gstbasesink.c
@@ -3400,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;
   }
 
@@ -3423,7 +3434,7 @@
     if (G_UNLIKELY (stepped))
       goto dropped;
 
-    if (syncable && do_sync) {
+    if (syncable && do_sync && gst_base_sink_get_sync (basesink)) {
       GstClock *clock;
 
       GST_OBJECT_LOCK (basesink);
diff --git a/libs/gst/base/gstbasetransform.c b/libs/gst/base/gstbasetransform.c
index b2ef0a0..4565f4f 100644
--- a/libs/gst/base/gstbasetransform.c
+++ b/libs/gst/base/gstbasetransform.c
@@ -1285,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,
@@ -1503,8 +1486,10 @@
         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,
@@ -1517,8 +1502,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);
@@ -1734,12 +1727,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));
@@ -2112,6 +2100,8 @@
 not_negotiated:
   {
     gst_buffer_unref (inbuf);
+    if (GST_PAD_IS_FLUSHING (trans->srcpad))
+      return GST_FLOW_FLUSHING;
     GST_ELEMENT_WARNING (trans, STREAM, FORMAT,
         ("not negotiated"), ("not negotiated"));
     return GST_FLOW_NOT_NEGOTIATED;
@@ -2203,8 +2193,6 @@
         gst_flow_get_name (ret));
     return ret;
   }
-
-  return GST_FLOW_OK;
 }
 
 /* FIXME, getrange is broken, need to pull range from the other
diff --git a/libs/gst/base/gstbasetransform.h b/libs/gst/base/gstbasetransform.h
index 84dab80..ab795e8 100644
--- a/libs/gst/base/gstbasetransform.h
+++ b/libs/gst/base/gstbasetransform.h
@@ -179,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
diff --git a/libs/gst/base/gstqueuearray.c b/libs/gst/base/gstqueuearray.c
index 5a69b69..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,75 +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) {
-    /* 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;
 }
 
 /**
@@ -305,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 d80e3fd..1791c83 100644
--- a/libs/gst/check/Makefile.am
+++ b/libs/gst/check/Makefile.am
@@ -9,9 +9,11 @@
 	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
@@ -29,6 +31,7 @@
 	gstbufferstraw.h			\
 	gstcheck.h				\
 	gstconsistencychecker.h			\
+	gstharness.h				\
 	gsttestclock.h
 
 nodist_libgstcheck_@GST_API_VERSION@include_HEADERS =	\
@@ -93,6 +96,78 @@
 	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 \
diff --git a/libs/gst/check/Makefile.in b/libs/gst/check/Makefile.in
index 0bd1a6c..4a2366b 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,10 +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)/libs/gst/check/libcheck/check.h.in \
-	$(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 \
@@ -126,6 +132,9 @@
 	$(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 = internal-check.h
@@ -167,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)
@@ -258,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`; \
@@ -580,9 +592,11 @@
 	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
@@ -602,6 +616,7 @@
 	gstbufferstraw.h			\
 	gstcheck.h				\
 	gstconsistencychecker.h			\
+	gstharness.h				\
 	gsttestclock.h
 
 nodist_libgstcheck_@GST_API_VERSION@include_HEADERS = \
@@ -659,6 +674,78 @@
 	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 \
@@ -715,7 +802,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*) \
@@ -783,6 +869,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:
@@ -830,6 +917,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
@@ -1222,6 +1316,8 @@
 	uninstall-nodist_libgstcheck_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
+
 
 %.c.gcov: .libs/libgstcheck_@GST_API_VERSION@_la-%.gcda %.c
 	$(GCOV) -b -f -o $^ > $@.out
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/gstharness.c b/libs/gst/check/gstharness.c
new file mode 100644
index 0000000..7d48526
--- /dev/null
+++ b/libs/gst/check/gstharness.c
@@ -0,0 +1,3085 @@
+/* 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;
+
+      caps =
+          priv->
+          sink_caps ? gst_caps_ref (priv->sink_caps) : gst_caps_new_any ();
+
+      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;
+
+      caps =
+          priv->src_caps ? gst_caps_ref (priv->src_caps) : gst_caps_new_any ();
+
+      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 = 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)++;
+  }
+}
+
+static guint
+gst_harness_element_unref (GstHarness * h)
+{
+  guint *data = g_object_get_data (G_OBJECT (h->element), HARNESS_REF);
+  g_assert (data != NULL);
+  (*data)--;
+  return *data;
+}
+
+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)
+{
+  GstElementFactory *factory;
+  const GList *tmpl_list;
+
+  *has_srcpad = element->numsrcpads > 0;
+  *has_sinkpad = element->numsinkpads > 0;
+
+  factory = gst_element_get_factory (element);
+  tmpl_list = gst_element_factory_get_static_pad_templates (factory);
+
+  while (tmpl_list) {
+    GstStaticPadTemplate *pad_tmpl = (GstStaticPadTemplate *) tmpl_list->data;
+    tmpl_list = g_list_next (tmpl_list);
+    if (pad_tmpl->direction == GST_PAD_SRC)
+      *has_srcpad |= TRUE;
+    if (pad_tmpl->direction == 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;
+
+  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: 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/libcheck/Makefile.in b/libs/gst/check/libcheck/Makefile.in
index 36d933e..b4a8828 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 \
       ?) ;; \
@@ -94,8 +104,6 @@
 @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 \
-	$(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 \
@@ -135,6 +143,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 =
@@ -240,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@
@@ -565,7 +576,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*) \
@@ -966,6 +976,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/controller/Makefile.in b/libs/gst/controller/Makefile.in
index e8d1019..22c27ac 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 \
@@ -125,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 =
@@ -224,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@
@@ -560,7 +571,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*) \
@@ -934,6 +944,8 @@
 	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
diff --git a/libs/gst/controller/gstdirectcontrolbinding.c b/libs/gst/controller/gstdirectcontrolbinding.c
index 6916556..44eb405 100644
--- a/libs/gst/controller/gstdirectcontrolbinding.c
+++ b/libs/gst/controller/gstdirectcontrolbinding.c
@@ -233,7 +233,7 @@
     /* select mapping function */
 
 #define SET_CONVERT_FUNCTION(type) \
-    if (self->want_absolute) { \
+    if (self->ABI.abi.want_absolute) { \
         self->convert_g_value = abs_convert_g_value_to_##type; \
         self->convert_value = abs_convert_value_to_##type; \
     } \
@@ -300,7 +300,7 @@
       self->cs = g_value_dup_object (value);
       break;
     case PROP_ABSOLUTE:
-      self->want_absolute = g_value_get_boolean (value);
+      self->ABI.abi.want_absolute = g_value_get_boolean (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -319,7 +319,7 @@
       g_value_set_object (value, self->cs);
       break;
     case PROP_ABSOLUTE:
-      g_value_set_boolean (value, self->want_absolute);
+      g_value_set_boolean (value, self->ABI.abi.want_absolute);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/libs/gst/controller/gstdirectcontrolbinding.h b/libs/gst/controller/gstdirectcontrolbinding.h
index ade2ea4..5b816c8 100644
--- a/libs/gst/controller/gstdirectcontrolbinding.h
+++ b/libs/gst/controller/gstdirectcontrolbinding.h
@@ -81,13 +81,16 @@
   GValue cur_value;
   gdouble last_value;
   gint byte_size;
-  gboolean want_absolute;
 
   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:
diff --git a/libs/gst/helpers/Makefile.in b/libs/gst/helpers/Makefile.in
index 2697245..cf085dd 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,
@@ -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 \
       ?) ;; \
@@ -85,8 +95,6 @@
 @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 $(am__dist_bashhelpers_DATA_DIST)
 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 \
@@ -126,6 +134,8 @@
 	$(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 =
@@ -261,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@
@@ -580,7 +591,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*) \
@@ -1027,6 +1037,8 @@
 	uninstall-dist_bashhelpersDATA uninstall-helpersPROGRAMS \
 	uninstall-hook
 
+.PRECIOUS: Makefile
+
 
 install-exec-hook: install-helpersPROGRAMS
 @HAVE_PTP_HELPER_SETUID_TRUE@@HAVE_PTP_TRUE@	- chown root $(DESTDIR)$(helpersdir)/gst-ptp-helper
diff --git a/libs/gst/net/Makefile.in b/libs/gst/net/Makefile.in
index 4cca193..fe73ff9 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,10 +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) \
-	$(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 \
@@ -126,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 =
@@ -246,6 +255,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@
@@ -588,7 +598,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*) \
@@ -1017,6 +1026,8 @@
 	uninstall-libgstnet_@GST_API_VERSION@_includeHEADERS \
 	uninstall-typelibsDATA
 
+.PRECIOUS: Makefile
+
 
 # try to prevent packaging errors
 check-libexecdir-consistency:
diff --git a/libs/gst/net/gstnetaddressmeta.c b/libs/gst/net/gstnetaddressmeta.c
index 9c970ba..c4cdd4d 100644
--- a/libs/gst/net/gstnetaddressmeta.c
+++ b/libs/gst/net/gstnetaddressmeta.c
@@ -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/gstnetcontrolmessagemeta.c b/libs/gst/net/gstnetcontrolmessagemeta.c
index fca39b5..ff9b808 100644
--- a/libs/gst/net/gstnetcontrolmessagemeta.c
+++ b/libs/gst/net/gstnetcontrolmessagemeta.c
@@ -47,10 +47,13 @@
 net_control_message_meta_transform (GstBuffer * transbuf, GstMeta * meta,
     GstBuffer * buffer, GQuark type, gpointer data)
 {
-  GstNetControlMessageMeta *nmeta = (GstNetControlMessageMeta *) meta;
+  GstNetControlMessageMeta *smeta, *dmeta;
+  smeta = (GstNetControlMessageMeta *) meta;
 
   /* we always copy no matter what transform */
-  gst_buffer_add_net_control_message_meta (transbuf, nmeta->message);
+  dmeta = gst_buffer_add_net_control_message_meta (transbuf, smeta->message);
+  if (!dmeta)
+    return FALSE;
 
   return TRUE;
 }
diff --git a/libs/gst/net/gstptpclock.c b/libs/gst/net/gstptpclock.c
index fe406ec..4c48908 100644
--- a/libs/gst/net/gstptpclock.c
+++ b/libs/gst/net/gstptpclock.c
@@ -1972,7 +1972,7 @@
 /**
  * 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): network interfaces to run the clock on
+ * @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
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 8c4d0c1..0feba95 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 \
@@ -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 =
@@ -143,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@
@@ -446,7 +457,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*) \
@@ -621,6 +631,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/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 581f474..d9c8922 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 \
@@ -130,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 \
@@ -187,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@
@@ -527,7 +538,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*) \
@@ -748,6 +758,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/plugins/Makefile.in b/plugins/Makefile.in
index 110607e..17a6427 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 \
@@ -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 =
@@ -177,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`; \
@@ -506,7 +517,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*) \
@@ -801,6 +811,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/plugins/elements/Makefile.in b/plugins/elements/Makefile.in
index cc38fa8..aa76bee 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 \
@@ -122,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 =
@@ -250,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@
@@ -615,7 +626,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*) \
@@ -1101,6 +1111,8 @@
 	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
diff --git a/plugins/elements/gstcapsfilter.c b/plugins/elements/gstcapsfilter.c
index 50fe8ac..74dbafb 100644
--- a/plugins/elements/gstcapsfilter.c
+++ b/plugins/elements/gstcapsfilter.c
@@ -168,6 +168,7 @@
   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;
 }
 
@@ -175,7 +176,7 @@
 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:{
@@ -193,8 +194,8 @@
       GST_OBJECT_LOCK (capsfilter);
       old_caps = capsfilter->filter_caps;
       capsfilter->filter_caps = new_caps;
-      if (old_caps
-          && capsfilter->caps_change_mode ==
+      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));
@@ -204,6 +205,7 @@
             (GDestroyNotify) gst_caps_unref);
         capsfilter->previous_caps = NULL;
       }
+      capsfilter->filter_caps_used = FALSE;
       GST_OBJECT_UNLOCK (capsfilter);
 
       gst_caps_unref (old_caps);
@@ -213,9 +215,21 @@
       gst_base_transform_reconfigure_sink (GST_BASE_TRANSFORM (object));
       break;
     }
-    case PROP_CAPS_CHANGE_MODE:
+    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;
@@ -226,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:
@@ -246,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);
@@ -259,13 +273,14 @@
 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);
 
@@ -314,12 +329,13 @@
 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);
@@ -397,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;
@@ -473,7 +489,7 @@
 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) {
@@ -543,6 +559,7 @@
     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);
   }
@@ -554,7 +571,7 @@
 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;
diff --git a/plugins/elements/gstcapsfilter.h b/plugins/elements/gstcapsfilter.h
index 19f851d..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,20 +30,27 @@
 
 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
@@ -58,6 +65,7 @@
   GstBaseTransform trans;
 
   GstCaps *filter_caps;
+  gboolean filter_caps_used;
   GstCapsFilterCapsChangeMode caps_change_mode;
 
   GList *pending_events;
@@ -72,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
index 41e93f7..5397c8e 100644
--- a/plugins/elements/gstconcat.c
+++ b/plugins/elements/gstconcat.c
@@ -797,9 +797,21 @@
 
   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:{
@@ -825,28 +837,6 @@
   }
 
   ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-  if (ret == GST_STATE_CHANGE_FAILURE)
-    return ret;
-
-  switch (transition) {
-    case GST_STATE_CHANGE_PAUSED_TO_READY:{
-      GstIterator *iter = gst_element_iterate_sink_pads (element);
-      GstIteratorResult res;
-
-      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;
-    }
-    default:
-      break;
-  }
 
   return ret;
 }
diff --git a/plugins/elements/gstfakesrc.c b/plugins/elements/gstfakesrc.c
index 1b2952c..50fad8e 100644
--- a/plugins/elements/gstfakesrc.c
+++ b/plugins/elements/gstfakesrc.c
@@ -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;
 }
diff --git a/plugins/elements/gstfilesink.c b/plugins/elements/gstfilesink.c
index 0803fc1..eb5c768 100644
--- a/plugins/elements/gstfilesink.c
+++ b/plugins/elements/gstfilesink.c
@@ -71,22 +71,23 @@
 #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},
   };
 
@@ -101,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
 
@@ -207,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,
@@ -291,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;
diff --git a/plugins/elements/gstfilesink.h b/plugins/elements/gstfilesink.h
index 33517ab..bd0e0ba 100644
--- a/plugins/elements/gstfilesink.h
+++ b/plugins/elements/gstfilesink.h
@@ -47,6 +47,22 @@
 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/gstfunnel.c b/plugins/elements/gstfunnel.c
index 013d54d..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)
 {
@@ -118,6 +126,38 @@
     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);
@@ -144,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>");
@@ -169,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 *
@@ -277,10 +328,12 @@
 
   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);
   }
 
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 177bfa0..0214596 100644
--- a/plugins/elements/gstidentity.c
+++ b/plugins/elements/gstidentity.c
@@ -401,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);
     }
@@ -886,8 +884,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;
       }
       identity->blocked = FALSE;
       g_cond_broadcast (&identity->blocked_cond);
diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c
index 78397c5..aa5cad3 100644
--- a/plugins/elements/gstinputselector.c
+++ b/plugins/elements/gstinputselector.c
@@ -627,21 +627,19 @@
   GST_INPUT_SELECTOR_UNLOCK (sel);
   if (new_tags)
     g_object_notify (G_OBJECT (selpad), "tags");
-  if (event) {
-    if (forward) {
-      GST_DEBUG_OBJECT (pad, "forwarding event");
-      res = gst_pad_push_event (sel->srcpad, event);
-    } else {
-      /* If we aren't forwarding the event because the pad is not the
-       * active_sinkpad, then set the flag on the pad
-       * that says a segment needs sending if/when that pad is activated.
-       * For all other cases, we send the event immediately, which makes
-       * sparse streams and other segment updates work correctly downstream.
-       */
-      if (GST_EVENT_IS_STICKY (event))
-        selpad->events_pending = TRUE;
-      gst_event_unref (event);
-    }
+  if (forward) {
+    GST_DEBUG_OBJECT (pad, "forwarding event");
+    res = gst_pad_push_event (sel->srcpad, event);
+  } else {
+    /* If we aren't forwarding the event because the pad is not the
+     * active_sinkpad, then set the flag on the pad
+     * that says a segment needs sending if/when that pad is activated.
+     * For all other cases, we send the event immediately, which makes
+     * sparse streams and other segment updates work correctly downstream.
+     */
+    if (GST_EVENT_IS_STICKY (event))
+      selpad->events_pending = TRUE;
+    gst_event_unref (event);
   }
 
   return res;
diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c
index 02055cd..1d55522 100644
--- a/plugins/elements/gstqueue.c
+++ b/plugins/elements/gstqueue.c
@@ -223,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 ())
@@ -463,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;
@@ -482,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);
 
@@ -676,9 +677,9 @@
 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)
@@ -689,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);
@@ -712,7 +713,7 @@
 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);
 
@@ -721,11 +722,10 @@
   queue->cur_level.bytes += bsize;
   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);
 }
 
@@ -744,7 +744,7 @@
 static inline void
 gst_queue_locked_enqueue_buffer_list (GstQueue * queue, gpointer item)
 {
-  GstQueueItem *qitem;
+  GstQueueItem qitem;
   GstBufferList *buffer_list = GST_BUFFER_LIST_CAST (item);
   gsize bsize = 0;
 
@@ -755,18 +755,17 @@
   queue->cur_level.bytes += bsize;
   apply_buffer_list (queue, buffer_list, &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 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)) {
@@ -800,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);
 }
 
@@ -815,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);
@@ -1014,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)
@@ -1050,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;
 
diff --git a/plugins/elements/gstqueue2.c b/plugins/elements/gstqueue2.c
index 28d7e5e..34c922c 100644
--- a/plugins/elements/gstqueue2.c
+++ b/plugins/elements/gstqueue2.c
@@ -3176,7 +3176,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/gststreamiddemux.c b/plugins/elements/gststreamiddemux.c
index c9d99f1..4ea2f80 100644
--- a/plugins/elements/gststreamiddemux.c
+++ b/plugins/elements/gststreamiddemux.c
@@ -23,10 +23,20 @@
  */
 
 /**
- * SECTION:element-streamid-demux
- * @see_also: #GstFunnel
+ * SECTION:element-streamiddemux
  *
- * Direct input stream to one out of N output pads by stream-id.
+ * 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
diff --git a/plugins/elements/gststreamiddemux.h b/plugins/elements/gststreamiddemux.h
index ec5383b..e8b74a9 100644
--- a/plugins/elements/gststreamiddemux.h
+++ b/plugins/elements/gststreamiddemux.h
@@ -42,6 +42,11 @@
 typedef struct _GstStreamidDemux GstStreamidDemux;
 typedef struct _GstStreamidDemuxClass GstStreamidDemuxClass;
 
+/**
+ * GstStreamidDemux:
+ *
+ * The opaque #GstStreamidDemux data structure.
+ */
 struct _GstStreamidDemux
 {
   GstElement element;
diff --git a/plugins/elements/gsttee.c b/plugins/elements/gsttee.c
index 4575a88..006ad26 100644
--- a/plugins/elements/gsttee.c
+++ b/plugins/elements/gsttee.c
@@ -281,8 +281,8 @@
    */
   g_object_class_install_property (gobject_class, PROP_ALLOW_NOT_LINKED,
       g_param_spec_boolean ("allow-not-linked", "Allow not linked",
-          "Return GTS_FLOW_OK even if there are not source pads or all are "
-          "unlinked", DEFAULT_PROP_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,
diff --git a/plugins/elements/gsttypefindelement.h b/plugins/elements/gsttypefindelement.h
index bf92b4d..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;
diff --git a/po/af.gmo b/po/af.gmo
index 6c30fd3..e7b9c35 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 2ed62b2..29de46e 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2005-12-05 11:45+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index 7b7c772..b1708cf 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 2908d98..e8297c6 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2004-03-19 18:40+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/be.gmo b/po/be.gmo
index 4bfa571..a8b78bc 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
index 8f26322..e50ca98 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2006-01-18 22:26+0200\n"
 "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
 "Language-Team: Belarusian <i18n@mova.org>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 2af73db..063af9b 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 7bf0a81..f314d1f 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/ca.gmo b/po/ca.gmo
index e003086..da35667 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index d240a44..4300d79 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-11-04 19:41+0100\n"
 "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index 3d09742..ea00fc3 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 5959b92..ad292bc 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/da.gmo b/po/da.gmo
index 5f9088e..93558db 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index bb6772a..37db3e4 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/de.gmo b/po/de.gmo
index fdeb139..d738533 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 6e35e53..bc7e6c3 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/el.gmo b/po/el.gmo
index cbcf324..c055dda 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 9306dfd..6298fbd 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-11-29 11:14+0200\n"
 "Last-Translator: Michael Kotsarinis <mk73628@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index f7f7668..0f43100 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 87ab7e4..b0c9312 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2004-04-26 10:36-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index c993d86..31c9798 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 305acc3..037cab2 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2011-06-04 21:11+0100\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index 53d48db..59472bd 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 9f459a5..b19b240 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2011-10-02 15:45+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index 93d4cd6..c409bdb 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 547452f..888bff8 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-03-25 13:10+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 41dd3ea..c6a8d8d 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 649a3c2..70403d9 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-11-17 23:10+0200\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index 5045a4a..e182479 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index c455451..2add137 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/gl.gmo b/po/gl.gmo
index c3f0ef0..a1b5139 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 92cd3b2..1ab9aec 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2012-12-15 03:29+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gstreamer-1.0.pot b/po/gstreamer-1.0.pot
index 17a20bf..2ed2478 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.5.2\n"
+"Project-Id-Version: gstreamer 1.5.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -310,7 +310,7 @@
 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 ""
@@ -1115,13 +1115,13 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:4075
+#: libs/gst/base/gstbasesink.c:4086
 msgid "Internal data stream error."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:4085 libs/gst/base/gstbasesrc.c:2942
+#: libs/gst/base/gstbasesink.c:4096 libs/gst/base/gstbasesrc.c:2942
 #: libs/gst/base/gstbasesrc.c:2951 plugins/elements/gstdownloadbuffer.c:1344
-#: plugins/elements/gstqueue.c:968 plugins/elements/gstqueue.c:1514
+#: 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 ""
@@ -1171,27 +1171,27 @@
 msgid "Error while writing to download file."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:424
+#: plugins/elements/gstfilesink.c:425
 msgid "No file name specified for writing."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:430
+#: plugins/elements/gstfilesink.c:431
 #, c-format
 msgid "Could not open file \"%s\" for writing."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:455
+#: plugins/elements/gstfilesink.c:456
 #, c-format
 msgid "Error closing file \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:619
+#: plugins/elements/gstfilesink.c:620
 #, c-format
 msgid "Error while seeking in file \"%s\"."
 msgstr ""
 
-#: plugins/elements/gstfilesink.c:627 plugins/elements/gstfilesink.c:704
-#: plugins/elements/gstfilesink.c:739
+#: 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 ""
@@ -1215,7 +1215,7 @@
 msgid "File \"%s\" is a socket."
 msgstr ""
 
-#: plugins/elements/gstidentity.c:643
+#: plugins/elements/gstidentity.c:641
 msgid "Failed after iterations as requested."
 msgstr ""
 
diff --git a/po/hr.gmo b/po/hr.gmo
index d19f82f..1935889 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 457dbea..71753f0 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/hu.gmo b/po/hu.gmo
index 3b849d2..35d3589 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index e4ff5af..0e48474 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/id.gmo b/po/id.gmo
index baf8a54..22a5640 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index c1d1c63..752d3fa 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2014-05-31 22:06+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
diff --git a/po/it.gmo b/po/it.gmo
index ac5f15d..bc4e57d 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 3e78b07..60a22e1 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-10-25 10:03+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index 8e324a9..e50aa1e 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 55c3dcc..258c151 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2013-08-20 14:56+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index 00e0a23..645d761 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index a43f95b..d1925f8 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-07-16 00:50+0300\n"
 "Last-Translator: Žygimantas Beručka <uid0@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index 18e062e..0ddcde3 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 0b7f291..734339b 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/nl.gmo b/po/nl.gmo
index 3bd3368..c432b5e 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index db18e58..814a4f6 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/pl.gmo b/po/pl.gmo
index 0846f88..0b0ad04 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index b981907..9bfe69e 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index dbd31ac..c4bc9eb 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 9ea029b..522658a 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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."
diff --git a/po/ro.gmo b/po/ro.gmo
index dd8bc2d..b1ad83f 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index efaa432..36f7b6b 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-08-16 01:10+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index 2eaf28f..dd2df3b 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index e3b7329..d464671 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/rw.gmo b/po/rw.gmo
index e96897a..7a1e2ad 100644
--- a/po/rw.gmo
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
index f611edb..3eea444 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2005-04-04 10:55-0700\n"
 "Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
 "Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index 4659dbf..7120a8c 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 9d48865..a6b7199 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/sl.gmo b/po/sl.gmo
index 9976018..1e75224 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index b371513..cb1c941 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2014-04-09 22:38+0100\n"
 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index 1a1d035..ca75e40 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 588c7b2..79abb74 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2004-08-07 23:46+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <begraj@hotmail.com>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index d50697f..67b7566 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 2178325..3f22337 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2014-06-18 20:12+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 52980cd..d1d52b8 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index a865589..ae8c6db 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/tr.gmo b/po/tr.gmo
index 0a93867..e7c05ec 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index f43cf92..32868fa 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2015-01-10 21:06+0100\n"
 "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 7b8ec06..b28f0c8 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 1a4997e..3c558ac 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/vi.gmo b/po/vi.gmo
index 8d90f7e..23dea96 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index e0a7462..1a8d42e 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\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"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 9b8df12..a76f1ae 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 5b10fdf..e9f7516 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.25.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2010-02-02 18:58+0800\n"
 "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 8fe45c6..d222f63 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 59f508b..47a5553 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: 2015-06-24 22:42+0200\n"
+"POT-Creation-Date: 2015-08-19 12:27+0300\n"
 "PO-Revision-Date: 2014-06-08 00:22+0800\n"
 "Last-Translator: Wen Liao <wen.cf83@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
diff --git a/scripts/gst-uninstalled b/scripts/gst-uninstalled
index 1751d99..a926fd2 100755
--- a/scripts/gst-uninstalled
+++ b/scripts/gst-uninstalled
@@ -209,7 +209,7 @@
 export PKG_CONFIG_PATH=$GST/gst-devtools/validate/pkgconfig:$PKG_CONFIG_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/gst/plugins/
+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 dfa9c95..3f56ab3 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 \
@@ -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 =
@@ -177,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`; \
@@ -529,7 +540,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*) \
@@ -824,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/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in
index e396d5c..58838c6 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 \
@@ -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 =
@@ -243,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@
@@ -550,7 +560,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*) \
@@ -882,6 +891,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/check/Makefile.am b/tests/check/Makefile.am
index 6d122e5..07ad657 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -158,6 +158,7 @@
 	libs/flowcombiner			\
 	libs/sparsefile				\
 	libs/collectpads			\
+	libs/gstharness				\
 	libs/gstnetclientclock			\
 	libs/gstnettimeprovider			\
 	libs/gsttestclock			\
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 287face..193ab4f 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) \
@@ -107,7 +114,7 @@
 	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) libs/transform2$(EXEEXT) \
 	tools/gstinspect$(EXEEXT)
@@ -152,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 =
@@ -703,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)
@@ -888,7 +903,7 @@
 	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 \
@@ -923,7 +938,7 @@
 	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 \
@@ -1161,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@
@@ -1642,7 +1659,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*) \
@@ -1651,7 +1667,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
@@ -2182,6 +2198,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)
 
@@ -2395,6 +2417,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@
@@ -2584,7 +2607,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 \
@@ -3339,6 +3362,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'; \
@@ -3566,6 +3596,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:
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/generic/states.c b/tests/check/generic/states.c
index 4dfdec7..8085877 100644
--- a/tests/check/generic/states.c
+++ b/tests/check/generic/states.c
@@ -270,7 +270,7 @@
 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);
diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
index 409e273..171884f 100644
--- a/tests/check/gst/gstbin.c
+++ b/tests/check/gst/gstbin.c
@@ -462,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 */
@@ -481,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);
@@ -491,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 */
diff --git a/tests/check/gst/gstcaps.c b/tests/check/gst/gstcaps.c
index b05ef58..80aa055 100644
--- a/tests/check/gst/gstcaps.c
+++ b/tests/check/gst/gstcaps.c
@@ -975,7 +975,7 @@
       GST_SEEK_FLAG_TRICKMODE_NO_AUDIO;
 
   c1 = gst_caps_new_simple ("test/x-caps", "field", test_flagset_type,
-      (guint64) (test_flags), (guint64) (test_mask), NULL);
+      test_flags, test_mask, NULL);
 
   test_string = gst_caps_to_string (c1);
   fail_if (test_string == NULL);
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/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/gstpad.c b/tests/check/gst/gstpad.c
index 1d86537..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);
@@ -2232,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);
@@ -2250,6 +2481,7 @@
   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
diff --git a/tests/check/libs/adapter.c b/tests/check/libs/adapter.c
index 5794aa8..95d2952 100644
--- a/tests/check/libs/adapter.c
+++ b/tests/check/libs/adapter.c
@@ -807,6 +807,53 @@
 
 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)
@@ -854,6 +901,55 @@
 
 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;
@@ -963,7 +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 b9a8da0..8113e30 100644
--- a/tests/check/libs/baseparse.c
+++ b/tests/check/libs/baseparse.c
@@ -29,6 +29,11 @@
 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
@@ -76,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
@@ -316,6 +335,125 @@
 
 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)
@@ -327,6 +465,7 @@
   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/gstharness.c b/tests/check/libs/gstharness.c
new file mode 100644
index 0000000..67abab2
--- /dev/null
+++ b/tests/check/libs/gstharness.c
@@ -0,0 +1,97 @@
+/*
+ * 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>
+
+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_src_harness);
+  tcase_add_test (tc_chain, test_src_harness_no_forwarding);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_harness);
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 547031d..a86a68f 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 \
@@ -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 =
@@ -183,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`; \
@@ -530,7 +541,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*) \
@@ -539,7 +549,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
@@ -826,6 +836,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 e0aa8cd..aa901e2 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 \
@@ -122,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 +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@
@@ -504,7 +514,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*) \
@@ -791,6 +800,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.in b/tests/examples/controller/Makefile.in
index 115ed66..97ad6d0 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 \
       ?) ;; \
@@ -82,8 +92,6 @@
 noinst_PROGRAMS = audio-example$(EXEEXT) control-sources$(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 \
@@ -123,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 =
@@ -215,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@
@@ -523,7 +533,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*) \
@@ -811,6 +820,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/helloworld/Makefile.in b/tests/examples/helloworld/Makefile.in
index 000b40c..52456e3 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 \
@@ -122,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 +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@
@@ -503,7 +513,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*) \
@@ -790,6 +799,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/manual/Makefile.in b/tests/examples/manual/Makefile.in
index 04da771..cf29ac3 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 \
@@ -127,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 =
@@ -558,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@
@@ -899,7 +910,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*) \
@@ -1175,7 +1185,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 \
@@ -1516,6 +1526,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/memory/Makefile.in b/tests/examples/memory/Makefile.in
index df0396a..9a42225 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 \
@@ -122,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 =
@@ -200,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@
@@ -506,7 +516,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*) \
@@ -823,6 +832,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/Makefile.in b/tests/examples/netclock/Makefile.in
index 373a73a..4fe3221 100644
--- a/tests/examples/netclock/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 \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = netclock-server$(EXEEXT) netclock-client$(EXEEXT)
 subdir = tests/examples/netclock
-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 \
@@ -122,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 =
@@ -210,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@
@@ -523,7 +533,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/netclock/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/netclock/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -829,6 +838,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/ptp/Makefile.in b/tests/examples/ptp/Makefile.in
index 88d8c3e..4ec3f73 100644
--- a/tests/examples/ptp/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 \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = ptp-print-times$(EXEEXT)
 subdir = tests/examples/ptp
-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 \
@@ -122,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 =
@@ -201,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@
@@ -509,7 +519,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/ptp/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/ptp/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -796,6 +805,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/stepping/Makefile.in b/tests/examples/stepping/Makefile.in
index 136aa52..a72bd5b 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 \
@@ -122,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 +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@
@@ -503,7 +513,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*) \
@@ -790,6 +799,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.in b/tests/examples/streamiddemux/Makefile.in
index 7f11559..6783ce5 100644
--- a/tests/examples/streamiddemux/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 \
       ?) ;; \
@@ -81,8 +91,6 @@
 target_triplet = @target@
 noinst_PROGRAMS = streamiddemux-stream$(EXEEXT)
 subdir = tests/examples/streamiddemux
-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 \
@@ -122,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 =
@@ -200,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@
@@ -506,7 +516,6 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/streamiddemux/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu tests/examples/streamiddemux/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -793,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/streams/Makefile.in b/tests/examples/streams/Makefile.in
index a77e235..0113654 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 \
@@ -123,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 =
@@ -207,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@
@@ -517,7 +527,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*) \
@@ -838,6 +847,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/misc/Makefile.in b/tests/misc/Makefile.in
index 1c1414f..66275d4 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 \
@@ -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 =
@@ -143,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@
@@ -450,7 +461,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*) \
@@ -625,6 +635,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.in b/tools/Makefile.in
index 6955255..f894b0b 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 \
@@ -127,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 =
@@ -263,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@
@@ -589,7 +600,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*) \
@@ -1003,6 +1013,8 @@
 	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-binPROGRAMS uninstall-man uninstall-man1
 
+.PRECIOUS: Makefile
+
 
 %-@GST_API_VERSION@.1: %.1.in
 	$(AM_V_GEN)sed \
diff --git a/win32/common/config.h b/win32/common/config.h
index 1587bbe..60af8e7 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -65,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 "2015-06-24"
+#define GST_PACKAGE_RELEASE_DATETIME "2015-08-19"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -454,7 +454,7 @@
 #define PACKAGE_NAME "GStreamer"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer 1.5.2"
+#define PACKAGE_STRING "GStreamer 1.5.90"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gstreamer"
@@ -463,7 +463,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.5.2"
+#define PACKAGE_VERSION "1.5.90"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -507,7 +507,7 @@
 #undef USE_POISONING
 
 /* Version number of package */
-#define VERSION "1.5.2"
+#define VERSION "1.5.90"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/win32/common/gstenumtypes.c b/win32/common/gstenumtypes.c
index 701312c..a29942a 100644
--- a/win32/common/gstenumtypes.c
+++ b/win32/common/gstenumtypes.c
@@ -1272,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}
   };
 
@@ -1308,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}
   };
diff --git a/win32/common/gstversion.h b/win32/common/gstversion.h
index 8d4187f..dc4c398 100644
--- a/win32/common/gstversion.h
+++ b/win32/common/gstversion.h
@@ -23,6 +23,8 @@
 #ifndef __GST_VERSION_H__
 #define __GST_VERSION_H__
 
+#include <glib.h>
+
 /**
  * SECTION:gstversion
  * @short_description: GStreamer version macros.
@@ -58,7 +60,7 @@
  *
  * The micro version of GStreamer at compile time:
  */
-#define GST_VERSION_MICRO (2)
+#define GST_VERSION_MICRO (90)
 /**
  * GST_VERSION_NANO:
  *
diff --git a/win32/common/libgstbase.def b/win32/common/libgstbase.def
index 2b067b9..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
@@ -29,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
@@ -278,14 +283,19 @@
 	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/libgstreamer.def b/win32/common/libgstreamer.def
index 7f02bae..43979cc 100644
--- a/win32/common/libgstreamer.def
+++ b/win32/common/libgstreamer.def
@@ -428,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
@@ -460,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
@@ -906,7 +913,6 @@
 	gst_param_spec_fraction
 	gst_param_spec_fraction_get_type
 	gst_parent_buffer_meta_api_get_type
-	gst_parent_buffer_meta_debug DATA
 	gst_parent_buffer_meta_get_info
 	gst_parse_bin_from_description
 	gst_parse_bin_from_description_full