Merge tag 'upstream/1.3.2' into debian-experimental

Upstream version 1.3.2
diff --git a/ChangeLog b/ChangeLog
index aaf778b..3fb7b32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,341 @@
-=== release 1.3.1 ===
+=== release 1.3.2 ===
 
-2014-05-03  Sebastian Dröge <slomo@coaxion.net>
+2014-05-21  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.3.1
+	  releasing 1.3.2
+
+2014-05-21 10:50:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From 211fa5f to 1f5d3c3
+
+2014-05-19 11:05:12 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstvalue.c:
+	  value: Add some positive testcase for string deserialization
+
+2014-05-18 10:49:50 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* README:
+	* docs/faq/getting.xml:
+	  docs: remove reference to Mandrake and packages we no longer provide
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730312
+
+2014-05-15 16:41:58 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* docs/design/part-caps.txt:
+	  docs: fix typo
+
+2014-05-14 13:40:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstpluginloader.c:
+	  pluginloader: fix compiler warning on windows
+	  gstpluginloader.c:584:1: error: label 'beach' defined but not used
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730125
+
+2014-05-13 19:51:34 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstdownloadbuffer.c:
+	* plugins/elements/gstsparsefile.c:
+	* plugins/elements/gstsparsefile.h:
+	  elements: don't depend on libgio just for g_io_error_from_errno()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729949
+
+2014-05-13 19:30:38 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/Makefile.am:
+	* libs/gst/base/gstsparsefile.c:
+	* libs/gst/base/gstsparsefile.h:
+	* plugins/elements/Makefile.am:
+	* plugins/elements/gstdownloadbuffer.h:
+	* plugins/elements/gstsparsefile.c:
+	* plugins/elements/gstsparsefile.h:
+	* tests/check/libs/sparsefile.c:
+	* win32/common/libgstbase.def:
+	  sparsefile: keep it private as helper API for downloadbuffer
+	  There's no expectation that any other element or applications
+	  might want to use this helper API any time soon, so keep it
+	  private for the time being. There were open questions regarding
+	  portability and binding-friendliness too.
+	  This also removes the gio dependency of -base again.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729951
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729949
+
+2014-05-13 19:14:08 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs.types:
+	  docs: pick up GstBaseParse hierarchy and properties
+
+2014-05-13 19:10:43 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	  docs: expose GstPushSrcClass in documentation
+	  Might come in handy in case someone wants to derive from it.
+
+2014-05-12 17:03:46 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstpluginloader.c:
+	  pluginloader: Don't leak pluginloader in error cases
+	  CID #1212154
+
+2014-05-12 16:59:29 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstcaps.c:
+	  caps: Don't leak features on error cases
+	  If we fail to parse fields, we would end up leaking the features we
+	  parsed just before
+	  CID #1212152
+
+2014-05-09 14:28:59 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasetransform.c:
+	  basetransform: Correctly reset configuration
+	  When pool can't we use, and we fall back to default pool, we need to
+	  correctly reset that pool configuration.
+
+2014-05-09 14:46:59 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* libs/gst/net/gstnettimeprovider.c:
+	  nettimeprovider: Use non-freed variable
+	  address is only used temporarily. Use the proper variable instead.
+	  CID #1212189
+
+2014-05-08 17:33:37 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/elements/multiqueue.c:
+	  tests: multiqueue: test to check queue overrun with pts=none
+	  Checks if buffers with pts=none can break the queue time size limit
+	  and allow more buffers than expected
+
+2014-05-08 14:48:00 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* plugins/elements/gstdownloadbuffer.c:
+	  downloadbuffer: Fix 32bit build
+	  format '%lli' expects argument of type 'long long int', but argument 8 has type 'gsize'
+
+2014-05-08 14:12:16 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  pool-nego: Correctly reset the configuration
+	  When pool cannot be used, correctly reset the configuration before
+	  configuration a default pool.
+
+2014-04-15 14:17:00 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	* libs/gst/base/gstbasetransform.c:
+	  pool-nego: Retry setting configuration with modified config
+	  Buffer pool set_config() may return FALSE if requested configuration needed
+	  small changes. Reget the config and try setting it again (validating the
+	  changes first). This ensure we have a configured pool if possible.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727916
+
+2014-05-08 12:47:43 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstbufferpool.c:
+	* gst/gstbufferpool.h:
+	* tests/check/gst/gstbufferpool.c:
+	* win32/common/libgstreamer.def:
+	  bufferpool: Add an helper to validate config
+	  When we call gst_buffer_pool_set_config() the pool may return FALSE and
+	  slightly change the parameters. This helper is useful to do the minial required
+	  validation before accepting the modified configuration.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727916
+
+2014-04-08 19:27:55 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/gstbufferpool.c:
+	  bufferpool: Update the configure even if set_config() returned false
+	  According to the documentation, when set_config() return false, it should be
+	  possible to read the modified version of the config. This patch fixes the
+	  implementation so it is now according to the documentation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727916
+
+2014-05-06 15:35:14 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstbufferpool.c:
+	* tests/check/gst/gstbufferpool.c:
+	  bufferpool: Add support for reconfiguring a pool
+	  If a pool config is being configured again, check if the configuration have changed.
+	  If not, skip that step. Finally, if the pool is active, try deactivating it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728268
+
+2014-05-06 16:59:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstvalue.c:
+	* tests/check/gst/gstvalue.c:
+	  value: Add support for GstAllocationParams comparision
+	  This is useful to compare buffer pool configuaration.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728268
+
+2014-05-06 16:46:55 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/gstvalue.c:
+	* tests/check/gst/gstvalue.c:
+	  value: Add support for GObject comparising in structures
+	  This is useful to allow comparing pool configuration where a GstAllocator
+	  is set.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728268
+
+2014-05-08 17:50:50 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstplugin.c:
+	  plugin: fix case where gst_plugin_load_file() didn't set the error on failure
+
+2014-05-08 16:30:55 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstsparsefile.c:
+	  sparsefile: add some Since markers to docs
+
+2014-05-08 16:25:55 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstsparsefile.c:
+	* libs/gst/base/gstsparsefile.h:
+	* tests/check/libs/.gitignore:
+	  sparsefile: sprinkle G_BEGIN_DECLS / G_END_DECLS
+	  for c++, and remove outdated comment, and add
+	  new unit test to .gitignore.
+
+2014-05-08 16:49:53 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* plugins/elements/gstdownloadbuffer.c:
+	  downloadbuffer: small cleanups
+
+2014-05-08 14:51:12 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* docs/plugins/Makefile.am:
+	* docs/plugins/gstreamer-plugins-docs.sgml:
+	* docs/plugins/gstreamer-plugins-sections.txt:
+	* docs/plugins/gstreamer-plugins.args:
+	* docs/plugins/gstreamer-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* plugins/elements/gstdownloadbuffer.c:
+	  downloadbuffer: update docs
+
+2014-05-08 14:50:42 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* win32/common/libgstbase.def:
+	  win32: update def
+
+2014-02-21 16:32:52 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* libs/gst/base/Makefile.am:
+	* libs/gst/base/gstsparsefile.c:
+	* libs/gst/base/gstsparsefile.h:
+	* plugins/elements/Makefile.am:
+	* plugins/elements/gstdownloadbuffer.c:
+	* plugins/elements/gstdownloadbuffer.h:
+	* plugins/elements/gstelements.c:
+	* tests/check/Makefile.am:
+	* tests/check/libs/sparsefile.c:
+	  Add new downloadbuffer element
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=680183
+
+2014-05-02 17:42:58 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstelement.c:
+	* gst/gstpadtemplate.h:
+	* plugins/elements/gstmultiqueue.c:
+	  pads: update docs for request pads
+	  We would like to encourage the use of gst_element_request_pad()
+
+2014-05-02 17:02:37 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/libcheck/check.c:
+	  check: use _exit() instead of exit() in fail_unless() so we exit immediately
+	  exit() will call atexit handlers, which may try to
+	  clean up things or wait for things to get cleaned up,
+	  which we don't want or need. We just want to stop
+	  and let the parent know about the failure as quickly
+	  as possible in case fork() is used.
+	  Fixes timeouts on assert failures in checks where
+	  an exit handler waits for things to stop, but they
+	  don't stop because they haven't been shut down,
+	  and they haven't been shut down because there's no
+	  simple way to do so on failures.
+	  http://sourceforge.net/p/check/patches/50/
+
+2014-05-04 14:52:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstvalue.c:
+	  value: init flag mask more correctly
+
+2014-05-04 13:32:46 +0000  Руслан Ижбулатов <lrn1986@gmail.com>
+
+	* plugins/elements/gstfilesrc.c:
+	  filesrc: g_memmove() is deprecated
+	  https://bugzilla.gnome.org/show_bug.cgi?id=712811
+
+2014-05-03 20:48:22 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.3.1 ===
+
+2014-05-03 17:41:41 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gstreamer-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* gstreamer.doap:
+	* win32/common/config.h:
+	* win32/common/gstenumtypes.c:
+	* win32/common/gstenumtypes.h:
+	* win32/common/gstversion.h:
+	  Release 1.3.1
+
+2014-05-03 17:34:08 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/be.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/lt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/rw.po:
+	* po/sk.po:
+	* po/sl.po:
+	* po/sq.po:
+	* po/sr.po:
+	* po/sv.po:
+	* po/tr.po:
+	* po/uk.po:
+	* po/vi.po:
+	* po/zh_CN.po:
+	* po/zh_TW.po:
+	  Update .po files
 
 2014-05-03 17:20:46 +0200  Sebastian Dröge <sebastian@centricular.com>
 
diff --git a/NEWS b/NEWS
index 5e74e9f..67f56ec 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-This is GStreamer 1.3.1
+This is GStreamer 1.3.2
 
 Changes since 1.2:
 
@@ -45,6 +45,8 @@
    events and merge custom tags into them consistently.
  • playbin/playsink has support for application provided audio and video
    filters.
+ • GstDiscoverer has new and simplified API to get details about missing
+   plugins and information to pass to the plugin installer.
  • The GL library was merged from gst-plugins-gl to gst-plugins-bad,
    providing a generic infrastructure for handling GL inside GStreamer
    pipelines and a plugin with some elements using these, especially
@@ -62,6 +64,14 @@
      of the existing V4L2 elements and the corresponding
      infrastructure.
      The v4l2videodec element replaces the mfcdec element.
+   ∘ New downloadbuffer element that replaces the download
+     buffering feature of queue2. Compared to queue2's code
+     it is much simpler and only for this single use case.
+     A noteworthy new feature is that it's downloading gaps
+     in the already downloaded stream parts when nothing else
+     is to be downloaded.
+     This is now used by playbin when download buffering is
+     enabled.
    ∘ rtpstreampay and rtpstreamdepay elements for transmitting
      RTP packets over a stream API (e.g. TCP) according to
      RFC 4571.
@@ -78,7 +88,7 @@
      are available on OS X and iOS now.
 
  • Other changes:
-   ∘ gst-libav now uses libav 10, and gained support for H265/HEVC.
+   ∘ gst-libav now uses libav 10.1, and gained support for H265/HEVC.
    ∘ Support for hardware codecs and special memory types has been
      improved with bugfixes and feature additions in various plugins
      and base classes.
@@ -95,6 +105,9 @@
      reliable now and supports more HLS features like trick modes.
      Also fragments are pushed downstream while they're downloaded
      now instead of waiting for each fragment to finish.
+   ∘ dashdemux and mssdemux are now also pushing fragments downstream
+     while they're downloaded instead of waiting for each fragment to
+     finish.
    ∘ videoflip can automatically flip based on the orientation tag.
    ∘ openjpeg supports the OpenJPEG2 API.
    ∘ gst-rtsp-server supports SRTP and MIKEY now.
@@ -107,4 +120,3 @@
    element.
  • The mfcdec element was removed and replaced by v4l2videodec.
  • osxvideosink is only available in OS X 10.6 or newer.
-
diff --git a/RELEASE b/RELEASE
index 0ce9dbe..7007723 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,8 +1,8 @@
 
-Release notes for GStreamer 1.3.1
+Release notes for GStreamer 1.3.2
 
 
-The GStreamer team is pleased to announce the first release of the unstable
+The GStreamer team is pleased to announce the second release of the unstable
 1.3 release series. The 1.3 release series is adding new features on top of
 the 1.0 and 1.2 series and is part of the API and ABI-stable 1.x release
 series of the GStreamer multimedia framework. The unstable 1.3 release series
@@ -50,60 +50,14 @@
 
 Bugs fixed in this release
      
-      * 729440 : docs: DeviceMonitor missing in generated doc
-      * 710621 : utils: Uses non-literal as format string
       * 726423 : playbin/decodebin: aggregate buffering messages
-      * 726425 : Add new API to notify minimum buffering needed downstream
-      * 679115 : Windows: Make the GStreamer DLLs/data relocatable
-      * 721655 : basesrc activation order logs error in some cases where it should not
-      * 702842 : basesrc: operate in time mode if do-timestamp is true
-      * 705189 : debug-dot-dump: Add the presence/state of a GstTask
-      * 708870 :  " generic " is spelled wrong in GstBaseSrc's documentation
-      * 709253 : caps: subset checks fail with duplicated values in lists
-      * 709262 : GstStructure's documentation incorrectly warns that empty strings don't work in any GstStructure
-      * 709831 : filesrc: Improve unit test coverage by setting property in the " wrong " state...
-      * 710034 : parse: bison finds conflicts / ambiguities
-      * 710342 : docs: various constructors are annotated as " transfer full " , but return floating references
-      * 710442 : netclientclock: constify name parameter for gst_net_client_clock_new()
-      * 710758 : gst-launch: assert if we can't get gst sample
-      * 710876 : pwg: rename the " samplerate " variable to make example code compilable
-      * 711138 : iterator: Don't hold mutex while calling filter functions of recursive filter iterators
-      * 711269 : systemclock: Add method to set the default system clock
-      * 711488 : gst-uninstalled: export gst-plugins-gl DYLD_LIBRARY_PATH
-      * 712385 : netclock: added new round-trip limit property
-      * 712679 : parse: prototype-mismatch
-      * 719614 : docs: add missing docs and fix errors
-      * 720029 : docs/etc: Fix typos
-      * 720036 : info: return existing debug category when registering a category twice (regression)
-      * 720100 : parse: redefinition of malloc - old grammar.y bugs crawl out of the woodwork
-      * 720199 : basesrc: DTS becomes 0 in gst_base_src_do_sync() for first buffer
-      * 720316 : parse: Fails to compile on CentOS due to redefinition of yyscan_t
-      * 720337 : gstreamer-uninstalled: add gstreamer-vaapi to GST_PLUGIN_PATH
-      * 721076 : appsink documentation missing gst_sample_unref
-      * 721096 : pad: Pad BLOCKING probe callback issues
-      * 722289 : capsfilter: Sending CAPS event downstream in pull mode
-      * 722697 : pad: Setting pad offsets breaks the running time in QoS and other events
-      * 722791 : basesrc: not respecting seqnum of eos from send_event
-      * 722891 : multiqueue: Growing of multiqueue does not work correctly if all except one pad are not linked
-      * 723229 : gst-uninstalled call print as function
-      * 723236 : caps: fix gst_caps_get_features return
-      * 723266 : outputselector: respect the 'negotiation-mode' property
-      * 723997 : gstreamer/docs: add missing seqnum file for distribution
-      * 724045 : gst-inspect: Compile error at gst-inspect.c:514:15 since 53d8460bfd
-      * 724571 : In collectpads, the collected function is sometimes called incorrectly.
-      * 724757 : basesrc: Ignores seek made when the last buffer is pushed
-      * 725476 : adapter: Added interfaces for language bindings
-      * 725478 : gstreamer: Ignore gcov intermediate files
-      * 725862 : buffer: invert BUFFER_FLAG_TAG_MEMORY ?
-      * 725917 : multiqueue: do not reset last push result when pushing events
-      * 726461 : collectpads: should send the seek events to the peers of its sink pads, as they can be flushing
-      * 727484 : gstpad: Don't print name of an unowned event
-      * 727701 : debugutils: Handle caps field values being NULL
-      * 727903 : structure: handle 0 denominator
-      * 727945 : funnel: element doesn't forward eos stream
-      * 727949 : bin: Make sure to post EOS message always after reaching the PLAYING state
-      * 729335 : basesink: Should render buffers that arrived on time even if prepare() took some time
-      * 727109 : buffer: Should not set TAG_MEMORY if memory has not been replaced
+      * 680183 : queue2: when download buffering has holes, plug the holes
+      * 727916 : bufferpool: Does not implement set_config() as documented
+      * 728268 : Need a way to detect that pool haven't changed, is active, and does not need to be renegotiated
+      * 729949 : core plugins and libgstbase now depend on gio
+      * 729951 : base: keep new GstSparseFile helper API private
+      * 730125 : c7d68da broke W32 builds
+      * 730312 : Remove or fix reference to Mandrake
 
 ==== Download ====
 
@@ -140,53 +94,11 @@
         
 Contributors to this release
     
-      * Alessandro Decina
-      * Antoine Jacoutot
-      * Antonio Ospite
-      * Arnaud Vrac
-      * Brendan Long
-      * Carlos Rafael Giani
-      * Chun-wei Fan
-      * David Svensson Fors
       * Edward Hervey
-      * Erik Andresen
-      * Fabian Kirsch
-      * Felipe Ortiz
-      * George Kiagiadakis
-      * Haakon Sporsheim
-      * Havard Graff
-      * Jan Alexander Steffens (heftig)
-      * Jan Schmidt
-      * Jose Antonio Santos Cadenas
-      * Linus Svensson
-      * Luis de Bethencourt
-      * Mark Nauwelaerts
-      * Mathieu Duponchelle
-      * Matthieu Bouron
-      * Nicola Murino
       * Nicolas Dufresne
-      * Olivier Crête
-      * Pedro Côrte-Real
-      * Per x Johansson
-      * Philip Withnall
-      * Philippe Normand
-      * Reynaldo H. Verdejo Pinochet
       * Sebastian Dröge
-      * Sebastian Rasmussen
-      * Showayb Zahda
-      * Srimanta Panda
-      * Stefan Sauer
-      * Stewart Brodie
-      * Stian Selnes
       * Thiago Santos
-      * Thibault Saunier
       * Tim-Philipp Müller
-      * Todd Agulnick
-      * Vincent Penquerc'h
-      * Víctor Manuel Jáquez Leal
-      * William Jon McCann
-      * William Manley
       * Wim Taymans
-      * Xavi Artigas
-      * YanpingZhang
+      * Руслан Ижбулатов
  
\ No newline at end of file
diff --git a/configure b/configure
index 8192705..68c4de5 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.3.1.
+# Generated by GNU Autoconf 2.69 for GStreamer 1.3.2.
 #
 # 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.3.1'
-PACKAGE_STRING='GStreamer 1.3.1'
+PACKAGE_VERSION='1.3.2'
+PACKAGE_STRING='GStreamer 1.3.2'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -1638,7 +1638,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.3.1 to adapt to many kinds of systems.
+\`configure' configures GStreamer 1.3.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1709,7 +1709,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer 1.3.1:";;
+     short | recursive ) echo "Configuration of GStreamer 1.3.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1891,7 +1891,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer configure 1.3.1
+GStreamer configure 1.3.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2664,7 +2664,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.3.1, which was
+It was created by GStreamer $as_me 1.3.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3645,7 +3645,7 @@
 
 # Define the identity of the package.
  PACKAGE='gstreamer'
- VERSION='1.3.1'
+ VERSION='1.3.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3856,9 +3856,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.3.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.3.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.3.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.3.2 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.3.2 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.3.2 | cut -d'.' -f3)
 
 
 
@@ -3869,7 +3869,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.3.1 | cut -d'.' -f4)
+  NANO=$(echo 1.3.2 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8527,10 +8527,10 @@
 done
 
 
-  GST_CURRENT=301
+  GST_CURRENT=302
   GST_REVISION=0
-  GST_AGE=301
-  GST_LIBVERSION=301:0:301
+  GST_AGE=302
+  GST_LIBVERSION=302:0:302
 
 
 
@@ -27564,7 +27564,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.3.1, which was
+This file was extended by GStreamer $as_me 1.3.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27630,7 +27630,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.3.1
+GStreamer config.status 1.3.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 064430c..c198076 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.3.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
+AC_INIT([GStreamer],[1.3.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
 AG_GST_INIT
 
 dnl initialize automake (we require GNU make)
@@ -64,7 +64,7 @@
 dnl      1.10.9 (who knows) => 1009
 dnl
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 301, 0, 301)
+AS_LIBTOOL(GST, 302, 0, 302)
 
 dnl *** autotools stuff ****
 
diff --git a/docs/design/part-caps.txt b/docs/design/part-caps.txt
index 489a84f..8224613 100644
--- a/docs/design/part-caps.txt
+++ b/docs/design/part-caps.txt
@@ -134,7 +134,7 @@
 
 Compatibility of caps
 ---------------------
-Pads can be linked when the caps of both caps are compatible. This is
+Pads can be linked when the caps of both pads are compatible. This is
 the case when their intersection is not empty.
 
 For checking if a pad actually supports a fixed caps an intersection is
diff --git a/docs/faq/getting.xml b/docs/faq/getting.xml
index b8c80ae..58470b2 100644
--- a/docs/faq/getting.xml
+++ b/docs/faq/getting.xml
@@ -113,15 +113,14 @@
 
       <answer>
         <para>
-	Yes, we currently provide precompiled packages for Red Hat, Debian and Linux Mandrake. </para>
-
-<para>We provide RPMS for Red Hat and Fedora Core through our <ulink url="http://gstreamer.freedesktop.org/pkg/">Apt for rpm page.</ulink> We usually support the last 2-3 releases of Red Hat. (RH9 and FC1)
+	Yes we currently provide <ulink url="http://gstreamer.freedesktop.org/pkg/">precompiled packages for Windows, OS/X, Android and iOS</ulink>.
         </para>
-	<para>GStreamer is already in Debian experimental, so if you are a debian user you should be able to get the Debian packages from there.</para>
-	<para>GStreamer is also in Mandrake Cooker so if you are using a recent release of Linux Mandrake you should be able to get GStreamer from there. To learn howto get packages from Mandrake cooker <ulink url="http://www.mandrakelinux.com/en/cookerdevel.php3">the Mandrake cooker page has more info</ulink>
-	</para>
-<para>For other RPM based distributions we recommend getting the source tarball and doing 'rpm -ta gstreamer-0.X.X' to create rpms. We keep our SPEC file constantly up to date so you should always be able to build GStreamer rpms from a tarball. The SPEC file is aimed at Red Hat however, so there might be some need for you to edit the Requirements list if your distribution name these packages differently.</para>
-      </answer>
+        <para>
+	We currently do not provide packages for Linux distributions, but
+        rather rely on the distributions for that. GStreamer packages should
+        be available for all major (and minor) distributions.
+        </para>
+     </answer>
     </qandaentry>
 
  <qandaentry>
diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index 5032f70..ed81c10 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -308,6 +308,7 @@
 
 gst_buffer_pool_config_get_params
 gst_buffer_pool_config_set_params
+gst_buffer_pool_config_validate_params
 gst_buffer_pool_config_get_allocator
 gst_buffer_pool_config_set_allocator
 
diff --git a/docs/gst/html/GstAllocator.html b/docs/gst/html/GstAllocator.html
index 52d9a4d..97c2229 100644
--- a/docs/gst/html/GstAllocator.html
+++ b/docs/gst/html/GstAllocator.html
@@ -74,7 +74,7 @@
 </tr>
 <tr>
 <td class="function_type">
-<a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="returnvalue">GstAllocationParams</span></a> *
+<a class="link" href="GstAllocator.html#GstAllocationParams"><span class="returnvalue">GstAllocationParams</span></a> *
 </td>
 <td class="function_name">
 <a class="link" href="GstAllocator.html#gst-allocation-params-copy" title="gst_allocation_params_copy ()">gst_allocation_params_copy</a> <span class="c_punctuation">()</span>
@@ -115,7 +115,7 @@
 </tbody>
 </table></div>
 </div>
-<div class="refsect1">
+<a name="GstAllocationParams"></a><div class="refsect1">
 <a name="GstAllocator.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
@@ -141,7 +141,7 @@
 </tr>
 <tr>
 <td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams">GstAllocationParams</a></td>
+<td class="function_name"><a class="link" href="GstAllocator.html#GstAllocationParams-struct" title="struct GstAllocationParams">GstAllocationParams</a></td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
@@ -152,7 +152,9 @@
 </div>
 <div class="refsect1">
 <a name="GstAllocator.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">    <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+<pre class="screen">    GBoxed
+    <span class="lineart">╰──</span> GstAllocationParams
+    <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a class="link" href="GstObject.html" title="GstObject">GstObject</a>
             <span class="lineart">╰──</span> GstAllocator
@@ -186,7 +188,7 @@
  is NULL, the
 default allocator will be returned.</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -201,7 +203,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.4.8.2.6"></a><h4>Returns</h4>
+<a name="id-1.3.4.9.2.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> or NULL when the allocator with <em class="parameter"><code>name</code></em>
 was not
 registered. Use <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> to release the allocator after usage. </p>
@@ -220,7 +222,7 @@
 <em class="parameter"><code>allocator</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -250,7 +252,7 @@
 <p>Set the default allocator. This function takes ownership of <em class="parameter"><code>allocator</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -269,11 +271,11 @@
 <div class="refsect2">
 <a name="gst-allocation-params-init"></a><h3>gst_allocation_params_init ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_allocation_params_init (<em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+gst_allocation_params_init (<em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Initialize <em class="parameter"><code>params</code></em>
  to its default values</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -282,7 +284,7 @@
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr></tbody>
 </table></div>
@@ -291,13 +293,13 @@
 <hr>
 <div class="refsect2">
 <a name="gst-allocation-params-copy"></a><h3>gst_allocation_params_copy ()</h3>
-<pre class="programlisting"><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="returnvalue">GstAllocationParams</span></a> *
-gst_allocation_params_copy (<em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+<pre class="programlisting"><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="returnvalue">GstAllocationParams</span></a> *
+gst_allocation_params_copy (<em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Create a copy of <em class="parameter"><code>params</code></em>
 .</p>
 <p>Free-function: gst_allocation_params_free</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.6.6"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -306,14 +308,14 @@
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
 </tr></tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.4.8.6.7"></a><h4>Returns</h4>
-<p> a new #<a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a>, free with
+<a name="id-1.3.4.9.6.7"></a><h4>Returns</h4>
+<p> a new #<a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>, free with
 <a class="link" href="GstAllocator.html#gst-allocation-params-free" title="gst_allocation_params_free ()"><code class="function">gst_allocation_params_free()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -322,11 +324,11 @@
 <div class="refsect2">
 <a name="gst-allocation-params-free"></a><h3>gst_allocation_params_free ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_allocation_params_free (<em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+gst_allocation_params_free (<em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Free <em class="parameter"><code>params</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.3.4.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -335,7 +337,7 @@
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input. Default is transfer none."><span class="acronym">in</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr></tbody>
 </table></div>
@@ -347,7 +349,7 @@
 <pre class="programlisting"><a class="link" href="GstMemory.html" title="GstMemory"><span class="returnvalue">GstMemory</span></a> *
 gst_allocator_alloc (<em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> *allocator</code></em>,
                      <em class="parameter"><code><span class="type">gsize</span> size</code></em>,
-                     <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                     <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Use <em class="parameter"><code>allocator</code></em>
  to allocate a new memory block with memory that is at least
 <em class="parameter"><code>size</code></em>
@@ -366,7 +368,7 @@
 the amount of bytes to align to. For example, to align to 8 bytes,
 use an alignment of 7.</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.8.9"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.8.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -393,7 +395,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.4.8.8.10"></a><h4>Returns</h4>
+<a name="id-1.3.4.9.8.10"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</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>
@@ -407,7 +409,7 @@
 <p>Free <em class="parameter"><code>memory</code></em>
  that was previously allocated with <a class="link" href="GstAllocator.html#gst-allocator-alloc" title="gst_allocator_alloc ()"><code class="function">gst_allocator_alloc()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -446,7 +448,7 @@
  contains
 <a class="link" href="GstMemory.html#GST-MEMORY-FLAG-ZERO-PREFIXED:CAPS"><span class="type">GST_MEMORY_FLAG_ZERO_PREFIXED</span></a> and <a class="link" href="GstMemory.html#GST-MEMORY-FLAG-ZERO-PADDED:CAPS"><span class="type">GST_MEMORY_FLAG_ZERO_PADDED</span></a> respectively.</p>
 <div class="refsect3">
-<a name="id-1.3.4.8.10.6"></a><h4>Parameters</h4>
+<a name="id-1.3.4.9.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -497,7 +499,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.4.8.10.7"></a><h4>Returns</h4>
+<a name="id-1.3.4.9.10.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstMemory.html" title="GstMemory"><span class="type">GstMemory</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>
@@ -526,7 +528,7 @@
 </pre>
 <p>The <a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> is used to create new memory.</p>
 <div class="refsect3">
-<a name="id-1.3.4.9.3.5"></a><h4>Members</h4>
+<a name="id-1.3.4.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -576,7 +578,7 @@
 </pre>
 <p>The <a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> is used to create new memory.</p>
 <div class="refsect3">
-<a name="id-1.3.4.9.4.5"></a><h4>Members</h4>
+<a name="id-1.3.4.10.4.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -608,7 +610,7 @@
 <a name="GstAllocatorFlags"></a><h3>enum GstAllocatorFlags</h3>
 <p>Flags for allocators.</p>
 <div class="refsect3">
-<a name="id-1.3.4.9.5.4"></a><h4>Members</h4>
+<a name="id-1.3.4.10.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -636,7 +638,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstAllocationParams"></a><h3>struct GstAllocationParams</h3>
+<a name="GstAllocationParams-struct"></a><h3>struct GstAllocationParams</h3>
 <pre class="programlisting">struct GstAllocationParams {
   GstMemoryFlags flags;
   gsize          align;
@@ -646,7 +648,7 @@
 </pre>
 <p>Parameters to control the allocation of memory</p>
 <div class="refsect3">
-<a name="id-1.3.4.9.6.5"></a><h4>Members</h4>
+<a name="id-1.3.4.10.6.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -655,22 +657,22 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="struct_member_name"><p><a class="link" href="GstMemory.html#GstMemoryFlags" title="enum GstMemoryFlags"><span class="type">GstMemoryFlags</span></a> <em class="structfield"><code><a name="GstAllocationParams.flags"></a>flags</code></em>;</p></td>
+<td class="struct_member_name"><p><a class="link" href="GstMemory.html#GstMemoryFlags" title="enum GstMemoryFlags"><span class="type">GstMemoryFlags</span></a> <em class="structfield"><code><a name="GstAllocationParams-struct.flags"></a>flags</code></em>;</p></td>
 <td class="struct_member_description"><p>flags to control allocation</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><span class="type">gsize</span> <em class="structfield"><code><a name="GstAllocationParams.align"></a>align</code></em>;</p></td>
+<td class="struct_member_name"><p><span class="type">gsize</span> <em class="structfield"><code><a name="GstAllocationParams-struct.align"></a>align</code></em>;</p></td>
 <td class="struct_member_description"><p>the desired alignment of the memory</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><span class="type">gsize</span> <em class="structfield"><code><a name="GstAllocationParams.prefix"></a>prefix</code></em>;</p></td>
+<td class="struct_member_name"><p><span class="type">gsize</span> <em class="structfield"><code><a name="GstAllocationParams-struct.prefix"></a>prefix</code></em>;</p></td>
 <td class="struct_member_description"><p>the desired prefix</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><span class="type">gsize</span> <em class="structfield"><code><a name="GstAllocationParams.padding"></a>padding</code></em>;</p></td>
+<td class="struct_member_name"><p><span class="type">gsize</span> <em class="structfield"><code><a name="GstAllocationParams-struct.padding"></a>padding</code></em>;</p></td>
 <td class="struct_member_description"><p>the desired padding</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
diff --git a/docs/gst/html/GstBuffer.html b/docs/gst/html/GstBuffer.html
index e3cba42..70de52b 100644
--- a/docs/gst/html/GstBuffer.html
+++ b/docs/gst/html/GstBuffer.html
@@ -1061,7 +1061,7 @@
 <pre class="programlisting"><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="returnvalue">GstBuffer</span></a> *
 gst_buffer_new_allocate (<em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> *allocator</code></em>,
                          <em class="parameter"><code><span class="type">gsize</span> size</code></em>,
-                         <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                         <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Tries to create a newly allocated buffer with data of the given size and
 extra parameters from <em class="parameter"><code>allocator</code></em>
 . If the requested amount of memory can't be
diff --git a/docs/gst/html/GstBufferPool.html b/docs/gst/html/GstBufferPool.html
index bf42fdc..992011a 100644
--- a/docs/gst/html/GstBufferPool.html
+++ b/docs/gst/html/GstBufferPool.html
@@ -75,6 +75,14 @@
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
+<a class="link" href="GstBufferPool.html#gst-buffer-pool-config-validate-params" title="gst_buffer_pool_config_validate_params ()">gst_buffer_pool_config_validate_params</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
 <a class="link" href="GstBufferPool.html#gst-buffer-pool-config-get-allocator" title="gst_buffer_pool_config_get_allocator ()">gst_buffer_pool_config_get_allocator</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -395,17 +403,81 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-buffer-pool-config-validate-params"></a><h3>gst_buffer_pool_config_validate_params ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_buffer_pool_config_validate_params
+                               (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *config</code></em>,
+                                <em class="parameter"><code><a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> size</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> min_buffers</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> max_buffers</code></em>);</pre>
+<p>Validate that changes made to <em class="parameter"><code>config</code></em>
+ are still valid in the context of the
+expected parameters. This function is a helper that can be used to validate
+changes made by a pool to a config when <a class="link" href="GstBufferPool.html#gst-buffer-pool-set-config" title="gst_buffer_pool_set_config ()"><code class="function">gst_buffer_pool_set_config()</code></a>
+returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>. This expects that <em class="parameter"><code>caps</code></em>
+ and <em class="parameter"><code>size</code></em>
+ haven't changed, and that
+<em class="parameter"><code>min_buffers</code></em>
+ aren't lower then what we initially expected. This does not check
+if options or allocator parameters.</p>
+<div class="refsect3">
+<a name="id-1.3.9.8.6.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstBufferPool.html" title="GstBufferPool"><span class="type">GstBufferPool</span></a> configuration. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p> the excepted caps of buffers. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the expected size of each buffer, not including prefix and padding</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>min_buffers</p></td>
+<td class="parameter_description"><p>the expected minimum amount of buffers to allocate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>max_buffers</p></td>
+<td class="parameter_description"><p>the expect maximum amount of buffers to allocate or 0 for unlimited.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.3.9.8.6.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the parameters are valid in this context.</p>
+<p></p>
+</div>
+<p class="since">Since 1.4</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-buffer-pool-config-get-allocator"></a><h3>gst_buffer_pool_config_get_allocator ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_buffer_pool_config_get_allocator (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *config</code></em>,
                                       <em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> **allocator</code></em>,
-                                      <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                                      <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Get the <em class="parameter"><code>allocator</code></em>
  and <em class="parameter"><code>params</code></em>
  from <em class="parameter"><code>config</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -425,14 +497,14 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
+<td class="parameter_description"><p><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.6.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.7.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, if the values are set. </p>
 <p></p>
 </div>
@@ -443,7 +515,7 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_buffer_pool_config_set_allocator (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *config</code></em>,
                                       <em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> *allocator</code></em>,
-                                      <em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                                      <em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Set the <em class="parameter"><code>allocator</code></em>
  and <em class="parameter"><code>params</code></em>
  on <em class="parameter"><code>config</code></em>
@@ -457,7 +529,7 @@
 to perform its allocation. When <em class="parameter"><code>param</code></em>
  is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, the pool will use the
 provided <em class="parameter"><code>allocator</code></em>
- with its default <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a>.</p>
+ with its default <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>.</p>
 <p>A call to <a class="link" href="GstBufferPool.html#gst-buffer-pool-set-config" title="gst_buffer_pool_set_config ()"><code class="function">gst_buffer_pool_set_config()</code></a> can update the allocator and params
 with the values that it is able to do. Some pools are, for example, not able
 to operate with different allocators or cannot allocate with the values
@@ -465,7 +537,7 @@
 . Use <a class="link" href="GstBufferPool.html#gst-buffer-pool-get-config" title="gst_buffer_pool_get_config ()"><code class="function">gst_buffer_pool_get_config()</code></a> to get the currently
 used values.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.7.7"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.8.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -485,7 +557,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
+<td class="parameter_description"><p><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -501,7 +573,7 @@
 <em class="parameter"><code>config</code></em>
  structure.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -516,7 +588,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.8.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.9.6"></a><h4>Returns</h4>
 <p> the options array size as a <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>.</p>
 <p></p>
 </div>
@@ -534,7 +606,7 @@
 <p>The supported options by <em class="parameter"><code>pool</code></em>
  can be retrieved with <a class="link" href="GstBufferPool.html#gst-buffer-pool-get-options" title="gst_buffer_pool_get_options ()"><code class="function">gst_buffer_pool_get_options()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.9.6"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -567,7 +639,7 @@
  of the options API
 array.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.10.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -589,7 +661,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.10.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.11.6"></a><h4>Returns</h4>
 <p> a <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> of the option at <em class="parameter"><code>index</code></em>
 .</p>
 <p></p>
@@ -605,7 +677,7 @@
  contains <em class="parameter"><code>option</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -627,7 +699,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.11.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.12.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the options array contains <em class="parameter"><code>option</code></em>
 .</p>
 <p></p>
@@ -643,7 +715,7 @@
 . An option would typically be enabled with
 <a class="link" href="GstBufferPool.html#gst-buffer-pool-config-add-option" title="gst_buffer_pool_config_add_option ()"><code class="function">gst_buffer_pool_config_add_option()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -658,7 +730,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.12.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.13.6"></a><h4>Returns</h4>
 <p> a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array
 of strings. </p>
 <p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -673,7 +745,7 @@
 <p>Check if the bufferpool supports <em class="parameter"><code>option</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -695,7 +767,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.14.6"></a><h4>Returns</h4>
 <p> a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array of strings.</p>
 <p></p>
 </div>
@@ -709,7 +781,7 @@
 can either be modified and used for the <a class="link" href="GstBufferPool.html#gst-buffer-pool-set-config" title="gst_buffer_pool_set_config ()"><code class="function">gst_buffer_pool_set_config()</code></a> call
 or it must be freed after usage.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -724,7 +796,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.14.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.15.6"></a><h4>Returns</h4>
 <p> a copy of the current configuration of <em class="parameter"><code>pool</code></em>
 . use
 <a class="link" href="GstStructure.html#gst-structure-free" title="gst_structure_free ()"><code class="function">gst_structure_free()</code></a> after usage or <a class="link" href="GstBufferPool.html#gst-buffer-pool-set-config" title="gst_buffer_pool_set_config ()"><code class="function">gst_buffer_pool_set_config()</code></a>. </p>
@@ -737,9 +809,11 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_buffer_pool_set_config (<em class="parameter"><code><a class="link" href="GstBufferPool.html" title="GstBufferPool"><span class="type">GstBufferPool</span></a> *pool</code></em>,
                             <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *config</code></em>);</pre>
-<p>Set the configuration of the pool. The pool must be inactive and all buffers
-allocated form this pool must be returned or else this function will do
-nothing and return FALSE.</p>
+<p>Set the configuration of the pool. If the pool is already configured, and
+the configuration haven't change, this function will return <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. If the
+pool is active, this function will try deactivating it. Buffers allocated
+form this pool must be returned or else this function will do nothing and
+return FALSE.</p>
 <p><em class="parameter"><code>config</code></em>
  is a <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> that contains the configuration parameters for
 the pool. A default and mandatory set of parameters can be configured with
@@ -752,7 +826,7 @@
 <p>This function takes ownership of <em class="parameter"><code>config</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.15.8"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.16.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -774,7 +848,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.15.9"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.16.9"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the configuration could be set.</p>
 <p></p>
 </div>
@@ -794,7 +868,7 @@
 buffers. When there are outstanding buffers, they will be freed as soon as
 they are all returned to the pool.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.16.7"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.17.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -816,7 +890,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.16.8"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.17.8"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the pool was not configured or when preallocation of the
 buffers failed.</p>
 <p></p>
@@ -831,7 +905,7 @@
  is active. A pool can be activated with the
 <a class="link" href="GstBufferPool.html#gst-buffer-pool-set-active" title="gst_buffer_pool_set_active ()"><code class="function">gst_buffer_pool_set_active()</code></a> call.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.17.5"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -846,7 +920,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.17.6"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.18.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the pool is active.</p>
 <p></p>
 </div>
@@ -866,7 +940,7 @@
  can be <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> or contain optional parameters to influence the
 allocation.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.18.6"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.19.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -893,7 +967,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.3.9.8.18.7"></a><h4>Returns</h4>
+<a name="id-1.3.9.8.19.7"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstPad.html#GstFlowReturn" title="enum GstFlowReturn"><span class="type">GstFlowReturn</span></a> such as <a class="link" href="GstPad.html#GST-FLOW-FLUSHING:CAPS"><code class="literal">GST_FLOW_FLUSHING</code></a> when the pool is
 inactive.</p>
 <p></p>
@@ -915,7 +989,7 @@
 
 disappears.</p>
 <div class="refsect3">
-<a name="id-1.3.9.8.19.6"></a><h4>Parameters</h4>
+<a name="id-1.3.9.8.20.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/GstElement.html b/docs/gst/html/GstElement.html
index 0769c95..a8119fe 100644
--- a/docs/gst/html/GstElement.html
+++ b/docs/gst/html/GstElement.html
@@ -803,8 +803,7 @@
 and <a class="link" href="GstElement.html#gst-element-remove-pad" title="gst_element_remove_pad ()"><code class="function">gst_element_remove_pad()</code></a>.</p>
 <p>An existing pad of an element can be retrieved by name with
 <a class="link" href="GstElement.html#gst-element-get-static-pad" title="gst_element_get_static_pad ()"><code class="function">gst_element_get_static_pad()</code></a>. A new dynamic pad can be created using
-<a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a> with a <a class="link" href="GstPadTemplate.html" title="GstPadTemplate"><span class="type">GstPadTemplate</span></a> or 
-<a class="link" href="GstElement.html#gst-element-get-request-pad" title="gst_element_get_request_pad ()"><code class="function">gst_element_get_request_pad()</code></a> with the template name such as "src_%u".
+<a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a> with a <a class="link" href="GstPadTemplate.html" title="GstPadTemplate"><span class="type">GstPadTemplate</span></a>.
 An iterator of all pads can be retrieved with <a class="link" href="GstElement.html#gst-element-iterate-pads" title="gst_element_iterate_pads ()"><code class="function">gst_element_iterate_pads()</code></a>.</p>
 <p>Elements can be linked through their pads.
 If the link is straightforward, use the <a class="link" href="GstElement.html#gst-element-link" title="gst_element_link ()"><code class="function">gst_element_link()</code></a>
@@ -2030,9 +2029,9 @@
 gst_element_release_request_pad (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
                                  <em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *pad</code></em>);</pre>
 <p>Makes the element free the previously requested pad as obtained
-with <a class="link" href="GstElement.html#gst-element-get-request-pad" title="gst_element_get_request_pad ()"><code class="function">gst_element_get_request_pad()</code></a>.</p>
+with <a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a>.</p>
 <p>This does not unref the pad. If the pad was created by using
-<a class="link" href="GstElement.html#gst-element-get-request-pad" title="gst_element_get_request_pad ()"><code class="function">gst_element_get_request_pad()</code></a>, <a class="link" href="GstElement.html#gst-element-release-request-pad" title="gst_element_release_request_pad ()"><code class="function">gst_element_release_request_pad()</code></a> needs to be
+<a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a>, <a class="link" href="GstElement.html#gst-element-release-request-pad" title="gst_element_release_request_pad ()"><code class="function">gst_element_release_request_pad()</code></a> needs to be
 followed by <a class="link" href="GstObject.html#gst-object-unref" title="gst_object_unref ()"><code class="function">gst_object_unref()</code></a> to free the <em class="parameter"><code>pad</code></em>
 .</p>
 <p>MT safe.</p>
@@ -2072,7 +2071,7 @@
 referenced elsewhere using <a class="link" href="GstObject.html#gst-object-unparent" title="gst_object_unparent ()"><code class="function">gst_object_unparent()</code></a>.</p>
 <p>This function is used by plugin developers and should not be used
 by applications. Pads that were dynamically requested from elements
-with <a class="link" href="GstElement.html#gst-element-get-request-pad" title="gst_element_get_request_pad ()"><code class="function">gst_element_get_request_pad()</code></a> should be released with the
+with <a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a> should be released with the
 <a class="link" href="GstElement.html#gst-element-release-request-pad" title="gst_element_release_request_pad ()"><code class="function">gst_element_release_request_pad()</code></a> function instead.</p>
 <p>Pads are not automatically deactivated so elements should perform the needed
 steps to deactivate the pad in case this pad is removed in the PAUSED or
diff --git a/docs/gst/html/GstPadTemplate.html b/docs/gst/html/GstPadTemplate.html
index 9fe01fc..ab81f4b 100644
--- a/docs/gst/html/GstPadTemplate.html
+++ b/docs/gst/html/GstPadTemplate.html
@@ -688,7 +688,7 @@
 <td class="enum_member_name"><p><a name="GST-PAD-REQUEST:CAPS"></a>GST_PAD_REQUEST</p></td>
 <td class="enum_member_description">
 <p>the pad is only available on request with
- <a class="link" href="GstElement.html#gst-element-get-request-pad" title="gst_element_get_request_pad ()"><code class="function">gst_element_get_request_pad()</code></a>.</p>
+ <a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()"><code class="function">gst_element_request_pad()</code></a>.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
diff --git a/docs/gst/html/GstQuery.html b/docs/gst/html/GstQuery.html
index a0699c4..866c36b 100644
--- a/docs/gst/html/GstQuery.html
+++ b/docs/gst/html/GstQuery.html
@@ -3511,7 +3511,7 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_query_add_allocation_param (<em class="parameter"><code><a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> *query</code></em>,
                                 <em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> *allocator</code></em>,
-                                <em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                                <em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Add <em class="parameter"><code>allocator</code></em>
  and its <em class="parameter"><code>params</code></em>
  as a supported memory allocator.</p>
@@ -3536,7 +3536,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a>. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
 </tr>
 </tbody>
@@ -3582,7 +3582,7 @@
 gst_query_parse_nth_allocation_param (<em class="parameter"><code><a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> *query</code></em>,
                                       <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> index</code></em>,
                                       <em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> **allocator</code></em>,
-                                      <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                                      <em class="parameter"><code><a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Parse an available query and get the allocator and its params
 at <em class="parameter"><code>index</code></em>
  of the allocator array.</p>
@@ -3626,7 +3626,7 @@
 gst_query_set_nth_allocation_param (<em class="parameter"><code><a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a> *query</code></em>,
                                     <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> index</code></em>,
                                     <em class="parameter"><code><a class="link" href="GstAllocator.html" title="GstAllocator"><span class="type">GstAllocator</span></a> *allocator</code></em>,
-                                    <em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
+                                    <em class="parameter"><code>const <a class="link" href="GstAllocator.html#GstAllocationParams"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
 <p>Parse an available query and get the allocator and its params
 at <em class="parameter"><code>index</code></em>
  of the allocator array.</p>
diff --git a/docs/gst/html/api-index-full.html b/docs/gst/html/api-index-full.html
index e531644..6e774df 100644
--- a/docs/gst/html/api-index-full.html
+++ b/docs/gst/html/api-index-full.html
@@ -62,7 +62,7 @@
 <a name="api-index-full"></a>API Index</h1></div></div></div>
 <a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
 <dt>
-<a class="link" href="GstAllocator.html#GstAllocationParams" title="struct GstAllocationParams">GstAllocationParams</a>, struct in <a class="link" href="GstAllocator.html" title="GstAllocator">GstAllocator</a>
+<a class="link" href="GstAllocator.html#GstAllocationParams-struct" title="struct GstAllocationParams">GstAllocationParams</a>, struct in <a class="link" href="GstAllocator.html" title="GstAllocator">GstAllocator</a>
 </dt>
 <dd></dd>
 <dt>
@@ -599,6 +599,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBufferPool.html#gst-buffer-pool-config-validate-params" title="gst_buffer_pool_config_validate_params ()">gst_buffer_pool_config_validate_params</a>, function in <a class="link" href="GstBufferPool.html" title="GstBufferPool">GstBufferPool</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBufferPool.html#gst-buffer-pool-get-config" title="gst_buffer_pool_get_config ()">gst_buffer_pool_get_config</a>, function in <a class="link" href="GstBufferPool.html" title="GstBufferPool">GstBufferPool</a>
 </dt>
 <dd></dd>
@@ -1781,11 +1785,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file-with-ts" title="gst_debug_bin_to_dot_file_with_ts ()">gst_debug_bin_to_dot_file_with_ts</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+<a class="link" href="gstreamer-GstInfo.html#GST-DEBUG-BIN-TO-DOT-FILE-WITH-TS:CAPS" title="GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()">GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS</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-DEBUG-BIN-TO-DOT-FILE-WITH-TS:CAPS" title="GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()">GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
+<a class="link" href="gstreamer-GstInfo.html#gst-debug-bin-to-dot-file-with-ts" title="gst_debug_bin_to_dot_file_with_ts ()">gst_debug_bin_to_dot_file_with_ts</a>, function in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1957,11 +1961,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice">GstDevice</a>, struct in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+<a class="link" href="gstreamer-GstDevice.html#GST-DEVICE:CAPS" title="GST_DEVICE()">GST_DEVICE</a>, macro 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:CAPS" title="GST_DEVICE()">GST_DEVICE</a>, macro in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
+<a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice">GstDevice</a>, struct in <a class="link" href="gstreamer-GstDevice.html" title="GstDevice">GstDevice</a>
 </dt>
 <dd></dd>
 <dt>
@@ -2490,11 +2494,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstElement.html#GST-ELEMENT-IS-LOCKED-STATE:CAPS" title="GST_ELEMENT_IS_LOCKED_STATE()">GST_ELEMENT_IS_LOCKED_STATE</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+<a class="link" href="GstElement.html#gst-element-is-locked-state" title="gst_element_is_locked_state ()">gst_element_is_locked_state</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstElement.html#gst-element-is-locked-state" title="gst_element_is_locked_state ()">gst_element_is_locked_state</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+<a class="link" href="GstElement.html#GST-ELEMENT-IS-LOCKED-STATE:CAPS" title="GST_ELEMENT_IS_LOCKED_STATE()">GST_ELEMENT_IS_LOCKED_STATE</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
 <dt>
@@ -4646,11 +4650,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#gst-pad-is-linked" title="gst_pad_is_linked ()">gst_pad_is_linked</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#GST-PAD-IS-LINKED:CAPS" title="GST_PAD_IS_LINKED()">GST_PAD_IS_LINKED</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#GST-PAD-IS-LINKED:CAPS" title="GST_PAD_IS_LINKED()">GST_PAD_IS_LINKED</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#gst-pad-is-linked" title="gst_pad_is_linked ()">gst_pad_is_linked</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
@@ -4730,11 +4734,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#GST-PAD-NEEDS-RECONFIGURE:CAPS" title="GST_PAD_NEEDS_RECONFIGURE()">GST_PAD_NEEDS_RECONFIGURE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#gst-pad-needs-reconfigure" title="gst_pad_needs_reconfigure ()">gst_pad_needs_reconfigure</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstPad.html#gst-pad-needs-reconfigure" title="gst_pad_needs_reconfigure ()">gst_pad_needs_reconfigure</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+<a class="link" href="GstPad.html#GST-PAD-NEEDS-RECONFIGURE:CAPS" title="GST_PAD_NEEDS_RECONFIGURE()">GST_PAD_NEEDS_RECONFIGURE</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
 <dt>
diff --git a/docs/gst/html/gstreamer-1.0.devhelp2 b/docs/gst/html/gstreamer-1.0.devhelp2
index ffc1549..2b0e2cc 100644
--- a/docs/gst/html/gstreamer-1.0.devhelp2
+++ b/docs/gst/html/gstreamer-1.0.devhelp2
@@ -105,7 +105,7 @@
     <keyword type="struct" name="GstAllocator" link="GstAllocator.html#GstAllocator-struct"/>
     <keyword type="struct" name="struct GstAllocatorClass" link="GstAllocator.html#GstAllocatorClass"/>
     <keyword type="enum" name="enum GstAllocatorFlags" link="GstAllocator.html#GstAllocatorFlags"/>
-    <keyword type="struct" name="struct GstAllocationParams" link="GstAllocator.html#GstAllocationParams"/>
+    <keyword type="struct" name="struct GstAllocationParams" link="GstAllocator.html#GstAllocationParams-struct"/>
     <keyword type="macro" name="GST_ALLOCATOR_SYSMEM" link="GstAllocator.html#GST-ALLOCATOR-SYSMEM:CAPS"/>
     <keyword type="function" name="gst_atomic_queue_new ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-new"/>
     <keyword type="function" name="gst_atomic_queue_ref ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-ref"/>
@@ -236,6 +236,7 @@
     <keyword type="function" name="gst_buffer_pool_new ()" link="GstBufferPool.html#gst-buffer-pool-new"/>
     <keyword type="function" name="gst_buffer_pool_config_get_params ()" link="GstBufferPool.html#gst-buffer-pool-config-get-params"/>
     <keyword type="function" name="gst_buffer_pool_config_set_params ()" link="GstBufferPool.html#gst-buffer-pool-config-set-params"/>
+    <keyword type="function" name="gst_buffer_pool_config_validate_params ()" link="GstBufferPool.html#gst-buffer-pool-config-validate-params" since="1.4"/>
     <keyword type="function" name="gst_buffer_pool_config_get_allocator ()" link="GstBufferPool.html#gst-buffer-pool-config-get-allocator"/>
     <keyword type="function" name="gst_buffer_pool_config_set_allocator ()" link="GstBufferPool.html#gst-buffer-pool-config-set-allocator"/>
     <keyword type="function" name="gst_buffer_pool_config_n_options ()" link="GstBufferPool.html#gst-buffer-pool-config-n-options"/>
diff --git a/docs/gst/html/gstreamer-GstVersion.html b/docs/gst/html/gstreamer-GstVersion.html
index 92d84a9..fa3d072 100644
--- a/docs/gst/html/gstreamer-GstVersion.html
+++ b/docs/gst/html/gstreamer-GstVersion.html
@@ -104,7 +104,7 @@
 <hr>
 <div class="refsect2">
 <a name="GST-VERSION-MICRO:CAPS"></a><h3>GST_VERSION_MICRO</h3>
-<pre class="programlisting">#define GST_VERSION_MICRO (1)
+<pre class="programlisting">#define GST_VERSION_MICRO (2)
 </pre>
 <p>The micro version of GStreamer at compile time:</p>
 </div>
diff --git a/docs/gst/html/gstreamer-hierarchy.html b/docs/gst/html/gstreamer-hierarchy.html
index 1aa2212..fd9c1b1 100644
--- a/docs/gst/html/gstreamer-hierarchy.html
+++ b/docs/gst/html/gstreamer-hierarchy.html
@@ -66,6 +66,7 @@
     <span class="lineart">├──</span> <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
     <span class="lineart">├──</span> <a class="link" href="GstTagList.html" title="GstTagList">GstTagList</a>
     <span class="lineart">├──</span> <a class="link" href="GstDateTime.html" title="GstDateTime">GstDateTime</a>
+    <span class="lineart">├──</span> <a class="link" href="GstAllocator.html#GstAllocationParams">GstAllocationParams</a>
     <span class="lineart">├──</span> <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
     <span class="lineart">├──</span> <a class="link" href="gstreamer-GstParse.html#GstParseContext">GstParseContext</a>
     <span class="lineart">├──</span> <a class="link" href="GstMemory.html" title="GstMemory">GstMemory</a>
diff --git a/docs/gst/html/index.html b/docs/gst/html/index.html
index 2f809a9..18b7308 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.3.1)
+      for GStreamer Core 1.0 (1.3.2)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/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 6b1a181..576d116 100644
--- a/docs/gst/html/index.sgml
+++ b/docs/gst/html/index.sgml
@@ -22,6 +22,7 @@
 <ANCHOR id="gstreamer-Gst.other_details" href="gstreamer-1.0/gstreamer-Gst.html#gstreamer-Gst.other_details">
 <ANCHOR id="GstAllocator" href="gstreamer-1.0/GstAllocator.html">
 <ANCHOR id="GstAllocator.functions" href="gstreamer-1.0/GstAllocator.html#GstAllocator.functions">
+<ANCHOR id="GstAllocationParams" href="gstreamer-1.0/GstAllocator.html#GstAllocationParams">
 <ANCHOR id="GstAllocator.other" href="gstreamer-1.0/GstAllocator.html#GstAllocator.other">
 <ANCHOR id="GstAllocator.object-hierarchy" href="gstreamer-1.0/GstAllocator.html#GstAllocator.object-hierarchy">
 <ANCHOR id="GstAllocator.includes" href="gstreamer-1.0/GstAllocator.html#GstAllocator.includes">
@@ -41,7 +42,7 @@
 <ANCHOR id="GstAllocator-struct" href="gstreamer-1.0/GstAllocator.html#GstAllocator-struct">
 <ANCHOR id="GstAllocatorClass" href="gstreamer-1.0/GstAllocator.html#GstAllocatorClass">
 <ANCHOR id="GstAllocatorFlags" href="gstreamer-1.0/GstAllocator.html#GstAllocatorFlags">
-<ANCHOR id="GstAllocationParams" href="gstreamer-1.0/GstAllocator.html#GstAllocationParams">
+<ANCHOR id="GstAllocationParams-struct" href="gstreamer-1.0/GstAllocator.html#GstAllocationParams-struct">
 <ANCHOR id="GST-ALLOCATOR-SYSMEM:CAPS" href="gstreamer-1.0/GstAllocator.html#GST-ALLOCATOR-SYSMEM:CAPS">
 <ANCHOR id="GstAllocator.see-also" href="gstreamer-1.0/GstAllocator.html#GstAllocator.see-also">
 <ANCHOR id="gstreamer-GstAtomicQueue" href="gstreamer-1.0/gstreamer-GstAtomicQueue.html">
@@ -218,6 +219,7 @@
 <ANCHOR id="gst-buffer-pool-new" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-new">
 <ANCHOR id="gst-buffer-pool-config-get-params" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-config-get-params">
 <ANCHOR id="gst-buffer-pool-config-set-params" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-config-set-params">
+<ANCHOR id="gst-buffer-pool-config-validate-params" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-config-validate-params">
 <ANCHOR id="gst-buffer-pool-config-get-allocator" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-config-get-allocator">
 <ANCHOR id="gst-buffer-pool-config-set-allocator" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-config-set-allocator">
 <ANCHOR id="gst-buffer-pool-config-n-options" href="gstreamer-1.0/GstBufferPool.html#gst-buffer-pool-config-n-options">
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index 2cc3c1a..fbc0a71 100644
--- a/docs/libs/gstreamer-libs-sections.txt
+++ b/docs/libs/gstreamer-libs-sections.txt
@@ -764,8 +764,8 @@
 <TITLE>GstPushSrc</TITLE>
 <INCLUDE>gst/base/gstpushsrc.h</INCLUDE>
 GstPushSrc
-<SUBSECTION Standard>
 GstPushSrcClass
+<SUBSECTION Standard>
 GST_PUSH_SRC
 GST_IS_PUSH_SRC
 GST_TYPE_PUSH_SRC
diff --git a/docs/libs/gstreamer-libs.types b/docs/libs/gstreamer-libs.types
index 8681c4c..17a7dc1 100644
--- a/docs/libs/gstreamer-libs.types
+++ b/docs/libs/gstreamer-libs.types
@@ -3,6 +3,7 @@
 % base classes
 
 #include <gst/base/gstadapter.h>
+#include <gst/base/gstbaseparse.h>
 #include <gst/base/gstbasesrc.h>
 #include <gst/base/gstbasesink.h>
 #include <gst/base/gstbasetransform.h>
@@ -10,6 +11,7 @@
 #include <gst/base/gstpushsrc.h>
 
 gst_adapter_get_type
+gst_base_parse_get_type
 gst_base_src_get_type
 gst_base_sink_get_type
 gst_base_transform_get_type
diff --git a/docs/libs/html/gstreamer-libs-GstBaseParse.html b/docs/libs/html/GstBaseParse.html
similarity index 75%
rename from docs/libs/html/gstreamer-libs-GstBaseParse.html
rename to docs/libs/html/GstBaseParse.html
index 782b9ab..a5d91ea 100644
--- a/docs/libs/html/gstreamer-libs-GstBaseParse.html
+++ b/docs/libs/html/GstBaseParse.html
@@ -15,8 +15,9 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><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-GstBaseParse.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gstreamer-libs-GstBaseParse.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+                  <a href="#GstBaseParse.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
+                  <a href="#GstBaseParse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
+                  <a href="#GstBaseParse.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="gstreamer-base.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -24,16 +25,16 @@
 <td><a accesskey="n" href="GstBaseSrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
-<a name="gstreamer-libs-GstBaseParse"></a><div class="titlepage"></div>
+<a name="GstBaseParse"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
-<h2><span class="refentrytitle"><a name="gstreamer-libs-GstBaseParse.top_of_page"></a>GstBaseParse</span></h2>
+<h2><span class="refentrytitle"><a name="GstBaseParse.top_of_page"></a>GstBaseParse</span></h2>
 <p>GstBaseParse — Base class for stream parsers</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.functions"></a><h2>Functions</h2>
+<a name="GstBaseParse.functions"></a><h2>Functions</h2>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
@@ -45,7 +46,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-duration" title="gst_base_parse_set_duration ()">gst_base_parse_set_duration</a> <span class="c_punctuation">()</span>
+<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>
 <tr>
@@ -53,7 +54,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-average-bitrate" title="gst_base_parse_set_average_bitrate ()">gst_base_parse_set_average_bitrate</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-average-bitrate" title="gst_base_parse_set_average_bitrate ()">gst_base_parse_set_average_bitrate</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -61,7 +62,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()">gst_base_parse_set_min_frame_size</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()">gst_base_parse_set_min_frame_size</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -69,7 +70,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-passthrough" title="gst_base_parse_set_passthrough ()">gst_base_parse_set_passthrough</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-passthrough" title="gst_base_parse_set_passthrough ()">gst_base_parse_set_passthrough</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -77,7 +78,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()">gst_base_parse_set_syncable</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()">gst_base_parse_set_syncable</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -85,7 +86,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-has-timing-info" title="gst_base_parse_set_has_timing_info ()">gst_base_parse_set_has_timing_info</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-has-timing-info" title="gst_base_parse_set_has_timing_info ()">gst_base_parse_set_has_timing_info</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -93,7 +94,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-frame-rate" title="gst_base_parse_set_frame_rate ()">gst_base_parse_set_frame_rate</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-frame-rate" title="gst_base_parse_set_frame_rate ()">gst_base_parse_set_frame_rate</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -101,7 +102,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-latency" title="gst_base_parse_set_latency ()">gst_base_parse_set_latency</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-latency" title="gst_base_parse_set_latency ()">gst_base_parse_set_latency</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -109,7 +110,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-infer-ts" title="gst_base_parse_set_infer_ts ()">gst_base_parse_set_infer_ts</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-infer-ts" title="gst_base_parse_set_infer_ts ()">gst_base_parse_set_infer_ts</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -117,7 +118,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-pts-interpolation" title="gst_base_parse_set_pts_interpolation ()">gst_base_parse_set_pts_interpolation</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-pts-interpolation" title="gst_base_parse_set_pts_interpolation ()">gst_base_parse_set_pts_interpolation</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -125,7 +126,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-ts-at-offset" title="gst_base_parse_set_ts_at_offset ()">gst_base_parse_set_ts_at_offset</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-ts-at-offset" title="gst_base_parse_set_ts_at_offset ()">gst_base_parse_set_ts_at_offset</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -133,7 +134,7 @@
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-convert-default" title="gst_base_parse_convert_default ()">gst_base_parse_convert_default</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-convert-default" title="gst_base_parse_convert_default ()">gst_base_parse_convert_default</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -141,15 +142,15 @@
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-add-index-entry" title="gst_base_parse_add_index_entry ()">gst_base_parse_add_index_entry</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-add-index-entry" title="gst_base_parse_add_index_entry ()">gst_base_parse_add_index_entry</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
 <td class="function_type">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="returnvalue">GstBaseParseFrame</span></a> *
+<a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="returnvalue">GstBaseParseFrame</span></a> *
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-new" title="gst_base_parse_frame_new ()">gst_base_parse_frame_new</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-new" title="gst_base_parse_frame_new ()">gst_base_parse_frame_new</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -157,7 +158,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-init" title="gst_base_parse_frame_init ()">gst_base_parse_frame_init</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-init" title="gst_base_parse_frame_init ()">gst_base_parse_frame_init</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -165,7 +166,7 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()">gst_base_parse_frame_free</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()">gst_base_parse_frame_free</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -173,7 +174,7 @@
 <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-GstBaseParse.html#gst-base-parse-push-frame" title="gst_base_parse_push_frame ()">gst_base_parse_push_frame</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-push-frame" title="gst_base_parse_push_frame ()">gst_base_parse_push_frame</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -181,46 +182,61 @@
 <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-GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()">gst_base_parse_finish_frame</a> <span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()">gst_base_parse_finish_frame</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-GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS" title="GST_BASE_PARSE_DRAINING()">GST_BASE_PARSE_DRAINING</a><span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS" title="GST_BASE_PARSE_DRAINING()">GST_BASE_PARSE_DRAINING</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-GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS" title="GST_BASE_PARSE_FLAG_DRAINING">GST_BASE_PARSE_FLAG_DRAINING</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS" title="GST_BASE_PARSE_FLAG_DRAINING">GST_BASE_PARSE_FLAG_DRAINING</a></td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS" title="GST_BASE_PARSE_FLAG_LOST_SYNC">GST_BASE_PARSE_FLAG_LOST_SYNC</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS" title="GST_BASE_PARSE_FLAG_LOST_SYNC">GST_BASE_PARSE_FLAG_LOST_SYNC</a></td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS" title="GST_BASE_PARSE_LOST_SYNC()">GST_BASE_PARSE_LOST_SYNC</a><span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS" title="GST_BASE_PARSE_LOST_SYNC()">GST_BASE_PARSE_LOST_SYNC</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-GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS" title="GST_BASE_PARSE_SINK_PAD()">GST_BASE_PARSE_SINK_PAD</a><span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS" title="GST_BASE_PARSE_SINK_PAD()">GST_BASE_PARSE_SINK_PAD</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-GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS" title="GST_BASE_PARSE_SRC_PAD()">GST_BASE_PARSE_SRC_PAD</a><span class="c_punctuation">()</span>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS" title="GST_BASE_PARSE_SRC_PAD()">GST_BASE_PARSE_SRC_PAD</a><span class="c_punctuation">()</span>
 </td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.other"></a><h2>Types and Values</h2>
+<a name="GstBaseParse.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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="GstBaseParse.html#GstBaseParse--disable-passthrough" title="The “disable-passthrough” property">disable-passthrough</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="GstBaseParse.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
@@ -229,39 +245,43 @@
 <tbody>
 <tr>
 <td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse">GstBaseParse</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GstBaseParse-struct" title="struct GstBaseParse">GstBaseParse</a></td>
 </tr>
 <tr>
 <td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseClass" title="struct GstBaseParseClass">GstBaseParseClass</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GstBaseParseClass" title="struct GstBaseParseClass">GstBaseParseClass</a></td>
 </tr>
 <tr>
 <td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame">GstBaseParseFrame</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame">GstBaseParseFrame</a></td>
 </tr>
 <tr>
 <td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags">GstBaseParseFrameFlags</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags">GstBaseParseFrameFlags</a></td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS" title="GST_BASE_PARSE_FLOW_DROPPED">GST_BASE_PARSE_FLOW_DROPPED</a></td>
+<td class="function_name"><a class="link" href="GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS" title="GST_BASE_PARSE_FLOW_DROPPED">GST_BASE_PARSE_FLOW_DROPPED</a></td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">
+<a name="GstBaseParse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+    <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/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> GstBaseParse
 </pre>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.includes"></a><h2>Includes</h2>
+<a name="GstBaseParse.includes"></a><h2>Includes</h2>
 <pre class="synopsis">#include &lt;gst/base/gstbaseparse.h&gt;
 </pre>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.description"></a><h2>Description</h2>
+<a name="GstBaseParse.description"></a><h2>Description</h2>
 <p>This base class is for parser elements that process data and splits it
 into separate audio/video/whatever frames.</p>
 <p>It provides for:</p>
@@ -291,12 +311,12 @@
     GstBaseParse class calls <em class="parameter"><code>set_sink_caps</code></em> to inform the subclass about
     incoming sinkpad caps. Subclass could already set the srcpad caps
     accordingly, but this might be delayed until calling
-    <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a> with a non-queued frame.
+    <a class="link" href="GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a> with a non-queued frame.
   </p></li>
 <li class="listitem"><p>
      At least at this point subclass needs to tell the GstBaseParse class
      how big data chunks it wants to receive (min_frame_size). It can do
-     this with <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()"><code class="function">gst_base_parse_set_min_frame_size()</code></a>.
+     this with <a class="link" href="GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()"><code class="function">gst_base_parse_set_min_frame_size()</code></a>.
   </p></li>
 <li class="listitem"><p>
      GstBaseParse class sets up appropriate data passing mode (pull/push)
@@ -323,10 +343,10 @@
       data is available.  In push mode this amounts to an
       additional input buffer (thus minimal additional latency), in pull mode
       this amounts to some arbitrary reasonable buffer size increase.
-      Of course, <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()"><code class="function">gst_base_parse_set_min_frame_size()</code></a> could also be used if a
+      Of course, <a class="link" href="GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()"><code class="function">gst_base_parse_set_min_frame_size()</code></a> could also be used if a
       very specific known amount of additional data is required.
       If, however, the buffer holds a complete valid frame, it can pass
-      the size of this frame to <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a>.
+      the size of this frame to <a class="link" href="GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a>.
       If acting as a converter, it can also merely indicate consumed input data
       while simultaneously providing custom output data.
       Note that baseclass performs some processing (such as tracking
@@ -393,24 +413,24 @@
   </p></li>
 <li class="listitem"><p>
      Inform base class how big data chunks should be retrieved. This is
-     done with <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()"><code class="function">gst_base_parse_set_min_frame_size()</code></a> function.
+     done with <a class="link" href="GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()"><code class="function">gst_base_parse_set_min_frame_size()</code></a> function.
   </p></li>
 <li class="listitem"><p>
      Examine data chunks passed to subclass with <em class="parameter"><code>handle_frame</code></em> and pass
-     proper frame(s) to <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a>, and setting src pad
+     proper frame(s) to <a class="link" href="GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a>, and setting src pad
      caps and timestamps on frame.
   </p></li>
 <li class="listitem"><p>Provide conversion functions</p></li>
 <li class="listitem"><p>
-     Update the duration information with <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-duration" title="gst_base_parse_set_duration ()"><code class="function">gst_base_parse_set_duration()</code></a>
+     Update the duration information with <a class="link" href="GstBaseParse.html#gst-base-parse-set-duration" title="gst_base_parse_set_duration ()"><code class="function">gst_base_parse_set_duration()</code></a>
   </p></li>
 <li class="listitem"><p>
-     Optionally passthrough using <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-passthrough" title="gst_base_parse_set_passthrough ()"><code class="function">gst_base_parse_set_passthrough()</code></a>
+     Optionally passthrough using <a class="link" href="GstBaseParse.html#gst-base-parse-set-passthrough" title="gst_base_parse_set_passthrough ()"><code class="function">gst_base_parse_set_passthrough()</code></a>
   </p></li>
 <li class="listitem"><p>
      Configure various baseparse parameters using
-     <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-average-bitrate" title="gst_base_parse_set_average_bitrate ()"><code class="function">gst_base_parse_set_average_bitrate()</code></a>, <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()"><code class="function">gst_base_parse_set_syncable()</code></a>
-     and <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-frame-rate" title="gst_base_parse_set_frame_rate ()"><code class="function">gst_base_parse_set_frame_rate()</code></a>.
+     <a class="link" href="GstBaseParse.html#gst-base-parse-set-average-bitrate" title="gst_base_parse_set_average_bitrate ()"><code class="function">gst_base_parse_set_average_bitrate()</code></a>, <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>
+     and <a class="link" href="GstBaseParse.html#gst-base-parse-set-frame-rate" title="gst_base_parse_set_frame_rate ()"><code class="function">gst_base_parse_set_frame_rate()</code></a>.
   </p></li>
 <li class="listitem"><p>
      In particular, if subclass is unable to determine a duration, but
@@ -426,11 +446,11 @@
 </ul></div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.functions_details"></a><h2>Functions</h2>
+<a name="GstBaseParse.functions_details"></a><h2>Functions</h2>
 <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="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+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>,
                              <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> fmt</code></em>,
                              <em class="parameter"><code><span class="type">gint64</span> duration</code></em>,
                              <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> interval</code></em>);</pre>
@@ -442,7 +462,7 @@
 
 frames.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -452,7 +472,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -478,16 +498,16 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-average-bitrate"></a><h3>gst_base_parse_set_average_bitrate ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_average_bitrate (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_average_bitrate (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> bitrate</code></em>);</pre>
 <p>Optionally sets the average bitrate detected in media (if non-zero),
 e.g. based on metadata, as it will be posted to the application.</p>
 <p>By default, announced average bitrate is estimated. The average bitrate
 is used to estimate the total duration of the stream and to estimate
 a seek position, if there's no index and the format is syncable
-(see <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()"><code class="function">gst_base_parse_set_syncable()</code></a>).</p>
+(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.8.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -497,7 +517,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -513,12 +533,12 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-min-frame-size"></a><h3>gst_base_parse_set_min_frame_size ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_min_frame_size (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_min_frame_size (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> min_size</code></em>);</pre>
 <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.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -528,7 +548,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -545,7 +565,7 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-passthrough"></a><h3>gst_base_parse_set_passthrough ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_passthrough (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_passthrough (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> passthrough</code></em>);</pre>
 <p>Set if the nature of the format or configuration does not allow (much)
 parsing, and the parser should operate in passthrough mode (which only
@@ -559,7 +579,7 @@
 passthrough semantics in <em class="parameter"><code>pre_push_frame</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.5.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">
@@ -569,7 +589,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -585,13 +605,13 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-syncable"></a><h3>gst_base_parse_set_syncable ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_syncable (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_syncable (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> syncable</code></em>);</pre>
 <p>Set if frame starts can be identified. This is set by default and
 determines whether seeking based on bitrate averages
 is possible for a format/stream.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.6.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">
@@ -601,7 +621,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -617,13 +637,13 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-has-timing-info"></a><h3>gst_base_parse_set_has_timing_info ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_has_timing_info (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_has_timing_info (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> has_timing</code></em>);</pre>
 <p>Set if frames carry timing information which the subclass can (generally)
 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.8.7.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">
@@ -633,7 +653,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -649,7 +669,7 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-frame-rate"></a><h3>gst_base_parse_set_frame_rate ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_frame_rate (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_frame_rate (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> fps_num</code></em>,
                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> fps_den</code></em>,
                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> lead_in</code></em>,
@@ -662,7 +682,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.8.8.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">
@@ -672,7 +692,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> to set</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> to set</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -703,14 +723,14 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-latency"></a><h3>gst_base_parse_set_latency ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_latency (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_latency (<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/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> min_latency</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> max_latency</code></em>);</pre>
 <p>Sets the minimum and maximum (which may likely be equal) latency introduced
 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.8.9.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">
@@ -720,7 +740,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -741,14 +761,14 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-infer-ts"></a><h3>gst_base_parse_set_infer_ts ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_infer_ts (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_infer_ts (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> infer_ts</code></em>);</pre>
 <p>By default, the base class might try to infer PTS from DTS and vice
 versa.  While this is generally correct for audio data, it may not
 be otherwise. Sub-classes implementing such formats should disable
 timestamp inferring.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.10.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">
@@ -758,7 +778,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -774,14 +794,14 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-pts-interpolation"></a><h3>gst_base_parse_set_pts_interpolation ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_pts_interpolation (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_pts_interpolation (<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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> pts_interpolate</code></em>);</pre>
 <p>By default, the base class will guess PTS timestamps using a simple
 interpolation (previous timestamp + duration), which is incorrect for
 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.8.11.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">
@@ -791,7 +811,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -807,7 +827,7 @@
 <div class="refsect2">
 <a name="gst-base-parse-set-ts-at-offset"></a><h3>gst_base_parse_set_ts_at_offset ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_set_ts_at_offset (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_set_ts_at_offset (<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><span class="type">gsize</span> offset</code></em>);</pre>
 <p>This function should only be called from a <em class="parameter"><code>handle_frame</code></em>
  implementation.</p>
@@ -818,7 +838,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.8.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -828,7 +848,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>
@@ -845,14 +865,14 @@
 <div class="refsect2">
 <a name="gst-base-parse-convert-default"></a><h3>gst_base_parse_convert_default ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_base_parse_convert_default (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_convert_default (<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/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> src_format</code></em>,
                                 <em class="parameter"><code><span class="type">gint64</span> src_value</code></em>,
                                 <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> dest_format</code></em>,
                                 <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="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> class.</p>
+<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.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -862,7 +882,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -889,7 +909,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.13.6"></a><h4>Returns</h4>
 <p> TRUE if conversion was successful.</p>
 <p></p>
 </div>
@@ -898,7 +918,7 @@
 <div class="refsect2">
 <a name="gst-base-parse-add-index-entry"></a><h3>gst_base_parse_add_index_entry ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_base_parse_add_index_entry (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
+gst_base_parse_add_index_entry (<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><span class="type">guint64</span> offset</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> ts</code></em>,
                                 <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> key</code></em>,
@@ -911,7 +931,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.8.14.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">
@@ -921,7 +941,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -948,7 +968,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.14.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating whether entry was added</p>
 <p></p>
 </div>
@@ -956,15 +976,15 @@
 <hr>
 <div class="refsect2">
 <a name="gst-base-parse-frame-new"></a><h3>gst_base_parse_frame_new ()</h3>
-<pre class="programlisting"><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="returnvalue">GstBaseParseFrame</span></a> *
+<pre class="programlisting"><a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="returnvalue">GstBaseParseFrame</span></a> *
 gst_base_parse_frame_new (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a> *buffer</code></em>,
-                          <em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags"><span class="type">GstBaseParseFrameFlags</span></a> flags</code></em>,
+                          <em class="parameter"><code><a class="link" href="GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags"><span class="type">GstBaseParseFrameFlags</span></a> flags</code></em>,
                           <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> overhead</code></em>);</pre>
-<p>Allocates a new <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. This function is mainly for bindings,
+<p>Allocates a new <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. This function is mainly for bindings,
 elements written in C should usually allocate the frame on the stack and
-then use <a class="link" href="gstreamer-libs-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>
+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.8.15.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">
@@ -993,9 +1013,9 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.15.6"></a><h4>Returns</h4>
-<p> a newly-allocated <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. Free with
-<a class="link" href="gstreamer-libs-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>
+<a name="id-1.2.4.3.9.15.6"></a><h4>Returns</h4>
+<p> a newly-allocated <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. Free with
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()"><code class="function">gst_base_parse_frame_free()</code></a> when no longer needed.</p>
 <p></p>
 </div>
 </div>
@@ -1003,14 +1023,14 @@
 <div class="refsect2">
 <a name="gst-base-parse-frame-init"></a><h3>gst_base_parse_frame_init ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_frame_init (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>);</pre>
-<p>Sets a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> to initial state.  Currently this means
+gst_base_parse_frame_init (<em class="parameter"><code><a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>);</pre>
+<p>Sets a <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> to initial state.  Currently this means
 all public fields are zero-ed and a private flag is set to make
-sure <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()"><code class="function">gst_base_parse_frame_free()</code></a> only frees the contents but not
-the actual frame. Use this function to initialise a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>
+sure <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> only frees the contents but not
+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.8.16.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">
@@ -1019,7 +1039,7 @@
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>frame</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>.</p></td>
+<td class="parameter_description"><p><a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>.</p></td>
 <td class="parameter_annotations"> </td>
 </tr></tbody>
 </table></div>
@@ -1029,21 +1049,21 @@
 <div class="refsect2">
 <a name="gst-base-parse-frame-free"></a><h3>gst_base_parse_frame_free ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_base_parse_frame_free (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>);</pre>
+gst_base_parse_frame_free (<em class="parameter"><code><a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>);</pre>
 </div>
 <hr>
 <div class="refsect2">
 <a name="gst-base-parse-push-frame"></a><h3>gst_base_parse_push_frame ()</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_base_parse_push_frame (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
-                           <em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>);</pre>
+gst_base_parse_push_frame (<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 class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>);</pre>
 <p>Pushes the frame's buffer downstream, sends any pending events and
 does some timestamp and segment handling. Takes ownership of
 frame's buffer, though caller retains ownership of <em class="parameter"><code>frame</code></em>
 .</p>
 <p>This must be called with sinkpad STREAM_LOCK held.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.18.6"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.18.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1053,19 +1073,19 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a>.</p></td>
+<td class="parameter_description"><p><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>frame</p></td>
-<td class="parameter_description"><p> a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. </p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.18.7"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.18.7"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a></p>
 <p></p>
 </div>
@@ -1074,8 +1094,8 @@
 <div class="refsect2">
 <a name="gst-base-parse-finish-frame"></a><h3>gst_base_parse_finish_frame ()</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_base_parse_finish_frame (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> *parse</code></em>,
-                             <em class="parameter"><code><a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>,
+gst_base_parse_finish_frame (<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 class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a> *frame</code></em>,
                              <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> size</code></em>);</pre>
 <p>Collects parsed data and pushes this downstream.
 Source pad caps must be set when this is called.</p>
@@ -1091,7 +1111,7 @@
 caller retains ownership of <em class="parameter"><code>frame</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.19.7"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.19.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1101,12 +1121,12 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>parse</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a></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>frame</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a></p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1118,7 +1138,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.19.8"></a><h4>Returns</h4>
+<a name="id-1.2.4.3.9.19.8"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> that should be escalated to caller (of caller)</p>
 <p></p>
 </div>
@@ -1131,7 +1151,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.8.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1165,7 +1185,7 @@
 </pre>
 <p>Obtains current sync status.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.8.23.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.3.9.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1187,7 +1207,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.8.24.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">
@@ -1209,7 +1229,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.8.25.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">
@@ -1226,27 +1246,20 @@
 </div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.other_details"></a><h2>Types and Values</h2>
+<a name="GstBaseParse.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
-<a name="GstBaseParse"></a><h3>struct GstBaseParse</h3>
-<pre class="programlisting">struct GstBaseParse {
-  GstElement     element;
-};
-</pre>
-<p>The opaque <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> data structure.</p>
+<a name="GstBaseParse-struct"></a><h3>struct GstBaseParse</h3>
+<pre class="programlisting">struct GstBaseParse;</pre>
+<p>The opaque <a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> data structure.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.2.5"></a><h4>Members</h4>
+<a name="id-1.2.4.3.10.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
 <col width="200px" class="struct_members_annotations">
 </colgroup>
-<tbody><tr>
-<td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> <em class="structfield"><code><a name="GstBaseParse.element"></a>element</code></em>;</p></td>
-<td class="struct_member_description"><p>the parent element.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr></tbody>
+<tbody></tbody>
 </table></div>
 </div>
 </div>
@@ -1303,7 +1316,7 @@
  needs to be
 overridden.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.3.5"></a><h4>Members</h4>
+<a name="id-1.2.4.3.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1338,7 +1351,7 @@
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstBaseParseClass.handle-frame"></a>handle_frame</code></em> ()</p></td>
 <td class="struct_member_description"><p>Parses the input data into valid frames as defined by subclass
-which should be passed to <a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a>.
+which should be passed to <a class="link" href="GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()"><code class="function">gst_base_parse_finish_frame()</code></a>.
 The frame's input buffer is guaranteed writable,
 whereas the input frame ownership is held by caller
 (so subclass should make a copy if it needs to hang on).
@@ -1431,7 +1444,7 @@
 only to some a particular one.  These parameters are effectively zeroed at start
 of each frame's processing, i.e. parsing virtual method invocation sequence.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.4.5"></a><h4>Members</h4>
+<a name="id-1.2.4.3.10.4.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1451,9 +1464,9 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstBaseParseFrame.flags"></a>flags</code></em>;</p></td>
-<td class="struct_member_description"><p>a combination of input and output <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags"><span class="type">GstBaseParseFrameFlags</span></a> that
+<td class="struct_member_description"><p>a combination of input and output <a class="link" href="GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags"><span class="type">GstBaseParseFrameFlags</span></a> that
 convey additional context to subclass or allow subclass to tune
-subsequent <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse"><span class="type">GstBaseParse</span></a> actions.</p></td>
+subsequent <a class="link" href="GstBaseParse.html" title="GstBaseParse"><span class="type">GstBaseParse</span></a> actions.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -1477,9 +1490,9 @@
 <hr>
 <div class="refsect2">
 <a name="GstBaseParseFrameFlags"></a><h3>enum GstBaseParseFrameFlags</h3>
-<p>Flags to be used in a <a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>.</p>
+<p>Flags to be used in a <a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame"><span class="type">GstBaseParseFrame</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.4.3.9.5.4"></a><h4>Members</h4>
+<a name="id-1.2.4.3.10.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -1557,7 +1570,22 @@
 </div>
 </div>
 <div class="refsect1">
-<a name="gstreamer-libs-GstBaseParse.see-also"></a><h2>See Also</h2>
+<a name="GstBaseParse.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstBaseParse--disable-passthrough"></a><h3>The <code class="literal">“disable-passthrough”</code> property</h3>
+<pre class="programlisting">  “disable-passthrough”      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>If set to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a>, baseparse will unconditionally force parsing of the
+incoming data. This can be required in the rare cases where the incoming
+side-data (caps, pts, dts, ...) is not trusted by the user and wants to
+force validation and parsing of the incoming data.
+If set to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a>, decision of whether to parse the data or not is up to
+the implementation (standard behaviour).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="GstBaseParse.see-also"></a><h2>See Also</h2>
 <p><a class="link" href="GstBaseTransform.html" title="GstBaseTransform"><span class="type">GstBaseTransform</span></a></p>
 </div>
 </div>
diff --git a/docs/libs/html/GstBaseSrc.html b/docs/libs/html/GstBaseSrc.html
index c60876b..39cacb2 100644
--- a/docs/libs/html/GstBaseSrc.html
+++ b/docs/libs/html/GstBaseSrc.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-base.html" title="GStreamer Base and Utillity Classes">
-<link rel="prev" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">
+<link rel="prev" href="GstBaseParse.html" title="GstBaseParse">
 <link rel="next" href="GstBaseSink.html" title="GstBaseSink">
 <meta name="generator" content="GTK-Doc V1.20 (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-base.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gstreamer-libs-GstBaseParse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="GstBaseParse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="GstBaseSink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
diff --git a/docs/libs/html/GstPushSrc.html b/docs/libs/html/GstPushSrc.html
index 070f071..7f6a0d0 100644
--- a/docs/libs/html/GstPushSrc.html
+++ b/docs/libs/html/GstPushSrc.html
@@ -39,10 +39,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="GstPushSrc.html#GstPushSrc-struct" title="struct GstPushSrc">GstPushSrc</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="GstPushSrc.html#GstPushSrcClass" title="struct GstPushSrcClass">GstPushSrcClass</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -88,6 +94,22 @@
 <pre class="programlisting">struct GstPushSrc;</pre>
 <p>The opaque <a class="link" href="GstPushSrc.html" title="GstPushSrc"><span class="type">GstPushSrc</span></a> data structure.</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstPushSrcClass"></a><h3>struct GstPushSrcClass</h3>
+<pre class="programlisting">struct GstPushSrcClass {
+  GstBaseSrcClass parent_class;
+
+  /* ask the subclass to create a buffer, the default implementation
+   * uses alloc and fill */
+  GstFlowReturn (*create) (GstPushSrc *src, GstBuffer **buf);
+  /* allocate memory for a buffer */
+  GstFlowReturn (*alloc)  (GstPushSrc *src, GstBuffer **buf);
+  /* ask the subclass to fill a buffer */
+  GstFlowReturn (*fill)   (GstPushSrc *src, GstBuffer *buf);
+};
+</pre>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstPushSrc.see-also"></a><h2>See Also</h2>
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index 07344b7..7d7a18d 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -225,19 +225,23 @@
 <dd></dd>
 <a name="idxB"></a><h3 class="title">B</h3>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParse" title="struct GstBaseParse">GstBaseParse</a>, struct in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GstBaseParse-struct" title="struct GstBaseParse">GstBaseParse</a>, struct in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseClass" title="struct GstBaseParseClass">GstBaseParseClass</a>, struct in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GstBaseParse--disable-passthrough" title="The “disable-passthrough” property">GstBaseParse:disable-passthrough</a>, object property in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame">GstBaseParseFrame</a>, struct in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GstBaseParseClass" title="struct GstBaseParseClass">GstBaseParseClass</a>, struct in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags">GstBaseParseFrameFlags</a>, enum in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GstBaseParseFrame" title="GstBaseParseFrame">GstBaseParseFrame</a>, struct in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBaseParse.html#GstBaseParseFrameFlags" title="enum GstBaseParseFrameFlags">GstBaseParseFrameFlags</a>, enum in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
@@ -333,103 +337,103 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-add-index-entry" title="gst_base_parse_add_index_entry ()">gst_base_parse_add_index_entry</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-add-index-entry" title="gst_base_parse_add_index_entry ()">gst_base_parse_add_index_entry</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-convert-default" title="gst_base_parse_convert_default ()">gst_base_parse_convert_default</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-convert-default" title="gst_base_parse_convert_default ()">gst_base_parse_convert_default</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS" title="GST_BASE_PARSE_DRAINING()">GST_BASE_PARSE_DRAINING</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS" title="GST_BASE_PARSE_DRAINING()">GST_BASE_PARSE_DRAINING</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()">gst_base_parse_finish_frame</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-finish-frame" title="gst_base_parse_finish_frame ()">gst_base_parse_finish_frame</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS" title="GST_BASE_PARSE_FLAG_DRAINING">GST_BASE_PARSE_FLAG_DRAINING</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS" title="GST_BASE_PARSE_FLAG_DRAINING">GST_BASE_PARSE_FLAG_DRAINING</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS" title="GST_BASE_PARSE_FLAG_LOST_SYNC">GST_BASE_PARSE_FLAG_LOST_SYNC</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS" title="GST_BASE_PARSE_FLAG_LOST_SYNC">GST_BASE_PARSE_FLAG_LOST_SYNC</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS" title="GST_BASE_PARSE_FLOW_DROPPED">GST_BASE_PARSE_FLOW_DROPPED</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS" title="GST_BASE_PARSE_FLOW_DROPPED">GST_BASE_PARSE_FLOW_DROPPED</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()">gst_base_parse_frame_free</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-free" title="gst_base_parse_frame_free ()">gst_base_parse_frame_free</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-init" title="gst_base_parse_frame_init ()">gst_base_parse_frame_init</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-init" title="gst_base_parse_frame_init ()">gst_base_parse_frame_init</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-new" title="gst_base_parse_frame_new ()">gst_base_parse_frame_new</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-frame-new" title="gst_base_parse_frame_new ()">gst_base_parse_frame_new</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS" title="GST_BASE_PARSE_LOST_SYNC()">GST_BASE_PARSE_LOST_SYNC</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS" title="GST_BASE_PARSE_LOST_SYNC()">GST_BASE_PARSE_LOST_SYNC</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-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="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<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>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-average-bitrate" title="gst_base_parse_set_average_bitrate ()">gst_base_parse_set_average_bitrate</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-average-bitrate" title="gst_base_parse_set_average_bitrate ()">gst_base_parse_set_average_bitrate</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-duration" title="gst_base_parse_set_duration ()">gst_base_parse_set_duration</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-duration" title="gst_base_parse_set_duration ()">gst_base_parse_set_duration</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-frame-rate" title="gst_base_parse_set_frame_rate ()">gst_base_parse_set_frame_rate</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-frame-rate" title="gst_base_parse_set_frame_rate ()">gst_base_parse_set_frame_rate</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-has-timing-info" title="gst_base_parse_set_has_timing_info ()">gst_base_parse_set_has_timing_info</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-has-timing-info" title="gst_base_parse_set_has_timing_info ()">gst_base_parse_set_has_timing_info</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-infer-ts" title="gst_base_parse_set_infer_ts ()">gst_base_parse_set_infer_ts</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-infer-ts" title="gst_base_parse_set_infer_ts ()">gst_base_parse_set_infer_ts</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-latency" title="gst_base_parse_set_latency ()">gst_base_parse_set_latency</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-latency" title="gst_base_parse_set_latency ()">gst_base_parse_set_latency</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()">gst_base_parse_set_min_frame_size</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-min-frame-size" title="gst_base_parse_set_min_frame_size ()">gst_base_parse_set_min_frame_size</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-passthrough" title="gst_base_parse_set_passthrough ()">gst_base_parse_set_passthrough</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-passthrough" title="gst_base_parse_set_passthrough ()">gst_base_parse_set_passthrough</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-pts-interpolation" title="gst_base_parse_set_pts_interpolation ()">gst_base_parse_set_pts_interpolation</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-pts-interpolation" title="gst_base_parse_set_pts_interpolation ()">gst_base_parse_set_pts_interpolation</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()">gst_base_parse_set_syncable</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-syncable" title="gst_base_parse_set_syncable ()">gst_base_parse_set_syncable</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-ts-at-offset" title="gst_base_parse_set_ts_at_offset ()">gst_base_parse_set_ts_at_offset</a>, function in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#gst-base-parse-set-ts-at-offset" title="gst_base_parse_set_ts_at_offset ()">gst_base_parse_set_ts_at_offset</a>, function in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS" title="GST_BASE_PARSE_SINK_PAD()">GST_BASE_PARSE_SINK_PAD</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS" title="GST_BASE_PARSE_SINK_PAD()">GST_BASE_PARSE_SINK_PAD</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS" title="GST_BASE_PARSE_SRC_PAD()">GST_BASE_PARSE_SRC_PAD</a>, macro in <a class="link" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
+<a class="link" href="GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS" title="GST_BASE_PARSE_SRC_PAD()">GST_BASE_PARSE_SRC_PAD</a>, macro in <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
 </dt>
 <dd></dd>
 <dt>
@@ -793,11 +797,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBitReader.html#GST-BIT-READER-INIT:CAPS" title="GST_BIT_READER_INIT()">GST_BIT_READER_INIT</a>, macro in <a class="link" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">GstBitReader</a>
+<a class="link" href="gstreamer-libs-GstBitReader.html#gst-bit-reader-init" title="gst_bit_reader_init ()">gst_bit_reader_init</a>, function in <a class="link" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">GstBitReader</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstBitReader.html#gst-bit-reader-init" title="gst_bit_reader_init ()">gst_bit_reader_init</a>, function in <a class="link" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">GstBitReader</a>
+<a class="link" href="gstreamer-libs-GstBitReader.html#GST-BIT-READER-INIT:CAPS" title="GST_BIT_READER_INIT()">GST_BIT_READER_INIT</a>, macro in <a class="link" href="gstreamer-libs-GstBitReader.html" title="GstBitReader">GstBitReader</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1117,11 +1121,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-init" title="gst_byte_reader_init ()">gst_byte_reader_init</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+<a class="link" href="gstreamer-libs-GstByteReader.html#GST-BYTE-READER-INIT:CAPS" title="GST_BYTE_READER_INIT()">GST_BYTE_READER_INIT</a>, macro in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-libs-GstByteReader.html#GST-BYTE-READER-INIT:CAPS" title="GST_BYTE_READER_INIT()">GST_BYTE_READER_INIT</a>, macro in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
+<a class="link" href="gstreamer-libs-GstByteReader.html#gst-byte-reader-init" title="gst_byte_reader_init ()">gst_byte_reader_init</a>, function in <a class="link" href="gstreamer-libs-GstByteReader.html" title="GstByteReader">GstByteReader</a>
 </dt>
 <dd></dd>
 <dt>
@@ -2164,6 +2168,10 @@
 <a class="link" href="GstPushSrc.html#GstPushSrc-struct" title="struct GstPushSrc">GstPushSrc</a>, struct in <a class="link" href="GstPushSrc.html" title="GstPushSrc">GstPushSrc</a>
 </dt>
 <dd></dd>
+<dt>
+<a class="link" href="GstPushSrc.html#GstPushSrcClass" title="struct GstPushSrcClass">GstPushSrcClass</a>, struct in <a class="link" href="GstPushSrc.html" title="GstPushSrc">GstPushSrc</a>
+</dt>
+<dd></dd>
 <a name="idxQ"></a><h3 class="title">Q</h3>
 <dt>
 <a class="link" href="gstreamer-libs-GstQueueArray.html#GstQueueArray" title="GstQueueArray">GstQueueArray</a>, struct in <a class="link" href="gstreamer-libs-GstQueueArray.html" title="GstQueueArray">GstQueueArray</a>
diff --git a/docs/libs/html/gstreamer-base.html b/docs/libs/html/gstreamer-base.html
index 50d0d3d..18aaf1c 100644
--- a/docs/libs/html/gstreamer-base.html
+++ b/docs/libs/html/gstreamer-base.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
 <link rel="prev" href="gstreamer-libs.html" title="Part I. GStreamer Libraries">
-<link rel="next" href="gstreamer-libs-GstBaseParse.html" title="GstBaseParse">
+<link rel="next" href="GstBaseParse.html" title="GstBaseParse">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,14 +17,14 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-libs.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gstreamer-libs.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-libs-GstBaseParse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="GstBaseParse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
 <a name="gstreamer-base"></a>GStreamer Base and Utillity Classes</h2></div></div></div>
 <div class="toc"><dl class="toc">
 <dt>
-<span class="refentrytitle"><a href="gstreamer-libs-GstBaseParse.html">GstBaseParse</a></span><span class="refpurpose"> — Base class for stream parsers</span>
+<span class="refentrytitle"><a href="GstBaseParse.html">GstBaseParse</a></span><span class="refpurpose"> — Base class for stream parsers</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstBaseSrc.html">GstBaseSrc</a></span><span class="refpurpose"> — Base class for getrange based source elements</span>
diff --git a/docs/libs/html/gstreamer-hierarchy.html b/docs/libs/html/gstreamer-hierarchy.html
index 81942cc..9c83a6c 100644
--- a/docs/libs/html/gstreamer-hierarchy.html
+++ b/docs/libs/html/gstreamer-hierarchy.html
@@ -27,6 +27,7 @@
     <span class="lineart">├──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
     <span class="lineart">│</span>   <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+    <span class="lineart">│</span>       <span class="lineart">│</span>   <span class="lineart">├──</span> <a class="link" href="GstBaseParse.html" title="GstBaseParse">GstBaseParse</a>
     <span class="lineart">│</span>       <span class="lineart">│</span>   <span class="lineart">├──</span> <a class="link" href="GstBaseSrc.html" title="GstBaseSrc">GstBaseSrc</a>
     <span class="lineart">│</span>       <span class="lineart">│</span>   <span class="lineart">│</span>   <span class="lineart">╰──</span> <a class="link" href="GstPushSrc.html" title="GstPushSrc">GstPushSrc</a>
     <span class="lineart">│</span>       <span class="lineart">│</span>   <span class="lineart">├──</span> <a class="link" href="GstBaseSink.html" title="GstBaseSink">GstBaseSink</a>
diff --git a/docs/libs/html/gstreamer-libs-1.0.devhelp2 b/docs/libs/html/gstreamer-libs-1.0.devhelp2
index 6d836e9..c771320 100644
--- a/docs/libs/html/gstreamer-libs-1.0.devhelp2
+++ b/docs/libs/html/gstreamer-libs-1.0.devhelp2
@@ -4,7 +4,7 @@
   <chapters>
     <sub name="GStreamer Libraries" link="gstreamer-libs.html">
       <sub name="GStreamer Base and Utillity Classes" link="gstreamer-base.html">
-        <sub name="GstBaseParse" link="gstreamer-libs-GstBaseParse.html"/>
+        <sub name="GstBaseParse" link="GstBaseParse.html"/>
         <sub name="GstBaseSrc" link="GstBaseSrc.html"/>
         <sub name="GstBaseSink" link="GstBaseSink.html"/>
         <sub name="GstBaseTransform" link="GstBaseTransform.html"/>
@@ -44,35 +44,36 @@
     <sub name="Annotation Glossary" link="annotation-glossary.html"/>
   </chapters>
   <functions>
-    <keyword type="function" name="gst_base_parse_set_duration ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-duration"/>
-    <keyword type="function" name="gst_base_parse_set_average_bitrate ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-average-bitrate"/>
-    <keyword type="function" name="gst_base_parse_set_min_frame_size ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size"/>
-    <keyword type="function" name="gst_base_parse_set_passthrough ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-passthrough"/>
-    <keyword type="function" name="gst_base_parse_set_syncable ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-syncable"/>
-    <keyword type="function" name="gst_base_parse_set_has_timing_info ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-has-timing-info"/>
-    <keyword type="function" name="gst_base_parse_set_frame_rate ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-frame-rate"/>
-    <keyword type="function" name="gst_base_parse_set_latency ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-latency"/>
-    <keyword type="function" name="gst_base_parse_set_infer_ts ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-infer-ts"/>
-    <keyword type="function" name="gst_base_parse_set_pts_interpolation ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-pts-interpolation"/>
-    <keyword type="function" name="gst_base_parse_set_ts_at_offset ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-set-ts-at-offset" since="1.2"/>
-    <keyword type="function" name="gst_base_parse_convert_default ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-convert-default"/>
-    <keyword type="function" name="gst_base_parse_add_index_entry ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-add-index-entry"/>
-    <keyword type="function" name="gst_base_parse_frame_new ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-new"/>
-    <keyword type="function" name="gst_base_parse_frame_init ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-init"/>
-    <keyword type="function" name="gst_base_parse_frame_free ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-free"/>
-    <keyword type="function" name="gst_base_parse_push_frame ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-push-frame"/>
-    <keyword type="function" name="gst_base_parse_finish_frame ()" link="gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame"/>
-    <keyword type="macro" name="GST_BASE_PARSE_DRAINING()" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS"/>
-    <keyword type="macro" name="GST_BASE_PARSE_FLAG_DRAINING" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS"/>
-    <keyword type="macro" name="GST_BASE_PARSE_FLAG_LOST_SYNC" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS"/>
-    <keyword type="macro" name="GST_BASE_PARSE_LOST_SYNC()" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS"/>
-    <keyword type="macro" name="GST_BASE_PARSE_SINK_PAD()" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS"/>
-    <keyword type="macro" name="GST_BASE_PARSE_SRC_PAD()" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS"/>
-    <keyword type="struct" name="struct GstBaseParse" link="gstreamer-libs-GstBaseParse.html#GstBaseParse"/>
-    <keyword type="struct" name="struct GstBaseParseClass" link="gstreamer-libs-GstBaseParse.html#GstBaseParseClass"/>
-    <keyword type="struct" name="GstBaseParseFrame" link="gstreamer-libs-GstBaseParse.html#GstBaseParseFrame"/>
-    <keyword type="enum" name="enum GstBaseParseFrameFlags" link="gstreamer-libs-GstBaseParse.html#GstBaseParseFrameFlags"/>
-    <keyword type="macro" name="GST_BASE_PARSE_FLOW_DROPPED" link="gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS"/>
+    <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"/>
+    <keyword type="function" name="gst_base_parse_set_passthrough ()" link="GstBaseParse.html#gst-base-parse-set-passthrough"/>
+    <keyword type="function" name="gst_base_parse_set_syncable ()" link="GstBaseParse.html#gst-base-parse-set-syncable"/>
+    <keyword type="function" name="gst_base_parse_set_has_timing_info ()" link="GstBaseParse.html#gst-base-parse-set-has-timing-info"/>
+    <keyword type="function" name="gst_base_parse_set_frame_rate ()" link="GstBaseParse.html#gst-base-parse-set-frame-rate"/>
+    <keyword type="function" name="gst_base_parse_set_latency ()" link="GstBaseParse.html#gst-base-parse-set-latency"/>
+    <keyword type="function" name="gst_base_parse_set_infer_ts ()" link="GstBaseParse.html#gst-base-parse-set-infer-ts"/>
+    <keyword type="function" name="gst_base_parse_set_pts_interpolation ()" link="GstBaseParse.html#gst-base-parse-set-pts-interpolation"/>
+    <keyword type="function" name="gst_base_parse_set_ts_at_offset ()" link="GstBaseParse.html#gst-base-parse-set-ts-at-offset" since="1.2"/>
+    <keyword type="function" name="gst_base_parse_convert_default ()" link="GstBaseParse.html#gst-base-parse-convert-default"/>
+    <keyword type="function" name="gst_base_parse_add_index_entry ()" link="GstBaseParse.html#gst-base-parse-add-index-entry"/>
+    <keyword type="function" name="gst_base_parse_frame_new ()" link="GstBaseParse.html#gst-base-parse-frame-new"/>
+    <keyword type="function" name="gst_base_parse_frame_init ()" link="GstBaseParse.html#gst-base-parse-frame-init"/>
+    <keyword type="function" name="gst_base_parse_frame_free ()" link="GstBaseParse.html#gst-base-parse-frame-free"/>
+    <keyword type="function" name="gst_base_parse_push_frame ()" link="GstBaseParse.html#gst-base-parse-push-frame"/>
+    <keyword type="function" name="gst_base_parse_finish_frame ()" link="GstBaseParse.html#gst-base-parse-finish-frame"/>
+    <keyword type="macro" name="GST_BASE_PARSE_DRAINING()" link="GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS"/>
+    <keyword type="macro" name="GST_BASE_PARSE_FLAG_DRAINING" link="GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS"/>
+    <keyword type="macro" name="GST_BASE_PARSE_FLAG_LOST_SYNC" link="GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS"/>
+    <keyword type="macro" name="GST_BASE_PARSE_LOST_SYNC()" link="GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS"/>
+    <keyword type="macro" name="GST_BASE_PARSE_SINK_PAD()" link="GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS"/>
+    <keyword type="macro" name="GST_BASE_PARSE_SRC_PAD()" link="GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS"/>
+    <keyword type="struct" name="struct GstBaseParse" link="GstBaseParse.html#GstBaseParse-struct"/>
+    <keyword type="struct" name="struct GstBaseParseClass" link="GstBaseParse.html#GstBaseParseClass"/>
+    <keyword type="struct" name="GstBaseParseFrame" link="GstBaseParse.html#GstBaseParseFrame"/>
+    <keyword type="enum" name="enum GstBaseParseFrameFlags" link="GstBaseParse.html#GstBaseParseFrameFlags"/>
+    <keyword type="macro" name="GST_BASE_PARSE_FLOW_DROPPED" link="GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS"/>
+    <keyword type="property" name="The “disable-passthrough” property" link="GstBaseParse.html#GstBaseParse--disable-passthrough"/>
     <keyword type="" name="Controlled shutdown of live sources in applications" link="GstBaseSrc.html#id-1.2.4.4.8.19"/>
     <keyword type="function" name="gst_base_src_wait_playing ()" link="GstBaseSrc.html#gst-base-src-wait-playing"/>
     <keyword type="function" name="gst_base_src_start_wait ()" link="GstBaseSrc.html#gst-base-src-start-wait"/>
@@ -177,6 +178,7 @@
     <keyword type="macro" name="GST_BASE_TRANSFORM_FLOW_DROPPED" link="GstBaseTransform.html#GST-BASE-TRANSFORM-FLOW-DROPPED:CAPS"/>
     <keyword type="property" name="The “qos” property" link="GstBaseTransform.html#GstBaseTransform--qos"/>
     <keyword type="struct" name="struct GstPushSrc" link="GstPushSrc.html#GstPushSrc-struct"/>
+    <keyword type="struct" name="struct GstPushSrcClass" link="GstPushSrc.html#GstPushSrcClass"/>
     <keyword type="function" name="gst_adapter_new ()" link="GstAdapter.html#gst-adapter-new"/>
     <keyword type="function" name="gst_adapter_clear ()" link="GstAdapter.html#gst-adapter-clear"/>
     <keyword type="function" name="gst_adapter_push ()" link="GstAdapter.html#gst-adapter-push"/>
diff --git a/docs/libs/html/gstreamer-libs.html b/docs/libs/html/gstreamer-libs.html
index 6bade93..4505d88 100644
--- a/docs/libs/html/gstreamer-libs.html
+++ b/docs/libs/html/gstreamer-libs.html
@@ -28,7 +28,7 @@
 <dt><span class="chapter"><a href="gstreamer-base.html">GStreamer Base and Utillity Classes</a></span></dt>
 <dd><dl>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-libs-GstBaseParse.html">GstBaseParse</a></span><span class="refpurpose"> — Base class for stream parsers</span>
+<span class="refentrytitle"><a href="GstBaseParse.html">GstBaseParse</a></span><span class="refpurpose"> — Base class for stream parsers</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstBaseSrc.html">GstBaseSrc</a></span><span class="refpurpose"> — Base class for getrange based source elements</span>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 1665ea5..fdad30d 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.3.1)
+      for GStreamer Library 1.0 (1.3.2)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/</a>.
     </p></div>
@@ -28,7 +28,7 @@
 <dt><span class="chapter"><a href="gstreamer-base.html">GStreamer Base and Utillity Classes</a></span></dt>
 <dd><dl>
 <dt>
-<span class="refentrytitle"><a href="gstreamer-libs-GstBaseParse.html">GstBaseParse</a></span><span class="refpurpose"> — Base class for stream parsers</span>
+<span class="refentrytitle"><a href="GstBaseParse.html">GstBaseParse</a></span><span class="refpurpose"> — Base class for stream parsers</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="GstBaseSrc.html">GstBaseSrc</a></span><span class="refpurpose"> — Base class for getrange based source elements</span>
diff --git a/docs/libs/html/index.sgml b/docs/libs/html/index.sgml
index 143270d..f2ab5a2 100644
--- a/docs/libs/html/index.sgml
+++ b/docs/libs/html/index.sgml
@@ -1,42 +1,45 @@
 <ONLINE href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/">
-<ANCHOR id="gstreamer-libs-GstBaseParse" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html">
-<ANCHOR id="gstreamer-libs-GstBaseParse.functions" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.functions">
-<ANCHOR id="gstreamer-libs-GstBaseParse.other" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.other">
-<ANCHOR id="gstreamer-libs-GstBaseParse.object-hierarchy" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.object-hierarchy">
-<ANCHOR id="gstreamer-libs-GstBaseParse.includes" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.includes">
-<ANCHOR id="gstreamer-libs-GstBaseParse.description" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.description">
-<ANCHOR id="gstreamer-libs-GstBaseParse.functions_details" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.functions_details">
-<ANCHOR id="gst-base-parse-set-duration" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-duration">
-<ANCHOR id="gst-base-parse-set-average-bitrate" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-average-bitrate">
-<ANCHOR id="gst-base-parse-set-min-frame-size" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-min-frame-size">
-<ANCHOR id="gst-base-parse-set-passthrough" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-passthrough">
-<ANCHOR id="gst-base-parse-set-syncable" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-syncable">
-<ANCHOR id="gst-base-parse-set-has-timing-info" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-has-timing-info">
-<ANCHOR id="gst-base-parse-set-frame-rate" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-frame-rate">
-<ANCHOR id="gst-base-parse-set-latency" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-latency">
-<ANCHOR id="gst-base-parse-set-infer-ts" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-infer-ts">
-<ANCHOR id="gst-base-parse-set-pts-interpolation" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-pts-interpolation">
-<ANCHOR id="gst-base-parse-set-ts-at-offset" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-set-ts-at-offset">
-<ANCHOR id="gst-base-parse-convert-default" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-convert-default">
-<ANCHOR id="gst-base-parse-add-index-entry" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-add-index-entry">
-<ANCHOR id="gst-base-parse-frame-new" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-new">
-<ANCHOR id="gst-base-parse-frame-init" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-init">
-<ANCHOR id="gst-base-parse-frame-free" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-frame-free">
-<ANCHOR id="gst-base-parse-push-frame" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-push-frame">
-<ANCHOR id="gst-base-parse-finish-frame" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gst-base-parse-finish-frame">
-<ANCHOR id="GST-BASE-PARSE-DRAINING:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS">
-<ANCHOR id="GST-BASE-PARSE-FLAG-DRAINING:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS">
-<ANCHOR id="GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS">
-<ANCHOR id="GST-BASE-PARSE-LOST-SYNC:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS">
-<ANCHOR id="GST-BASE-PARSE-SINK-PAD:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS">
-<ANCHOR id="GST-BASE-PARSE-SRC-PAD:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS">
-<ANCHOR id="gstreamer-libs-GstBaseParse.other_details" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.other_details">
-<ANCHOR id="GstBaseParse" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GstBaseParse">
-<ANCHOR id="GstBaseParseClass" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GstBaseParseClass">
-<ANCHOR id="GstBaseParseFrame" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GstBaseParseFrame">
-<ANCHOR id="GstBaseParseFrameFlags" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GstBaseParseFrameFlags">
-<ANCHOR id="GST-BASE-PARSE-FLOW-DROPPED:CAPS" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS">
-<ANCHOR id="gstreamer-libs-GstBaseParse.see-also" href="gstreamer-libs-1.0/gstreamer-libs-GstBaseParse.html#gstreamer-libs-GstBaseParse.see-also">
+<ANCHOR id="GstBaseParse" href="gstreamer-libs-1.0/GstBaseParse.html">
+<ANCHOR id="GstBaseParse.functions" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.functions">
+<ANCHOR id="GstBaseParse.properties" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.properties">
+<ANCHOR id="GstBaseParse.other" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.other">
+<ANCHOR id="GstBaseParse.object-hierarchy" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.object-hierarchy">
+<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-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">
+<ANCHOR id="gst-base-parse-set-passthrough" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-passthrough">
+<ANCHOR id="gst-base-parse-set-syncable" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-syncable">
+<ANCHOR id="gst-base-parse-set-has-timing-info" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-has-timing-info">
+<ANCHOR id="gst-base-parse-set-frame-rate" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-frame-rate">
+<ANCHOR id="gst-base-parse-set-latency" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-latency">
+<ANCHOR id="gst-base-parse-set-infer-ts" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-infer-ts">
+<ANCHOR id="gst-base-parse-set-pts-interpolation" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-pts-interpolation">
+<ANCHOR id="gst-base-parse-set-ts-at-offset" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-set-ts-at-offset">
+<ANCHOR id="gst-base-parse-convert-default" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-convert-default">
+<ANCHOR id="gst-base-parse-add-index-entry" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-add-index-entry">
+<ANCHOR id="gst-base-parse-frame-new" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-frame-new">
+<ANCHOR id="gst-base-parse-frame-init" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-frame-init">
+<ANCHOR id="gst-base-parse-frame-free" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-frame-free">
+<ANCHOR id="gst-base-parse-push-frame" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-push-frame">
+<ANCHOR id="gst-base-parse-finish-frame" href="gstreamer-libs-1.0/GstBaseParse.html#gst-base-parse-finish-frame">
+<ANCHOR id="GST-BASE-PARSE-DRAINING:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-DRAINING:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FLAG-DRAINING:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FLAG-DRAINING:CAPS">
+<ANCHOR id="GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FLAG-LOST-SYNC:CAPS">
+<ANCHOR id="GST-BASE-PARSE-LOST-SYNC:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-LOST-SYNC:CAPS">
+<ANCHOR id="GST-BASE-PARSE-SINK-PAD:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-SINK-PAD:CAPS">
+<ANCHOR id="GST-BASE-PARSE-SRC-PAD:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-SRC-PAD:CAPS">
+<ANCHOR id="GstBaseParse.other_details" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.other_details">
+<ANCHOR id="GstBaseParse-struct" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse-struct">
+<ANCHOR id="GstBaseParseClass" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParseClass">
+<ANCHOR id="GstBaseParseFrame" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParseFrame">
+<ANCHOR id="GstBaseParseFrameFlags" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParseFrameFlags">
+<ANCHOR id="GST-BASE-PARSE-FLOW-DROPPED:CAPS" href="gstreamer-libs-1.0/GstBaseParse.html#GST-BASE-PARSE-FLOW-DROPPED:CAPS">
+<ANCHOR id="GstBaseParse.property-details" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.property-details">
+<ANCHOR id="GstBaseParse--disable-passthrough" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse--disable-passthrough">
+<ANCHOR id="GstBaseParse.see-also" href="gstreamer-libs-1.0/GstBaseParse.html#GstBaseParse.see-also">
 <ANCHOR id="GstBaseSrc" href="gstreamer-libs-1.0/GstBaseSrc.html">
 <ANCHOR id="GstBaseSrc.functions" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc.functions">
 <ANCHOR id="GstBaseSrc.properties" href="gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc.properties">
@@ -178,6 +181,7 @@
 <ANCHOR id="GstPushSrc.functions_details" href="gstreamer-libs-1.0/GstPushSrc.html#GstPushSrc.functions_details">
 <ANCHOR id="GstPushSrc.other_details" href="gstreamer-libs-1.0/GstPushSrc.html#GstPushSrc.other_details">
 <ANCHOR id="GstPushSrc-struct" href="gstreamer-libs-1.0/GstPushSrc.html#GstPushSrc-struct">
+<ANCHOR id="GstPushSrcClass" href="gstreamer-libs-1.0/GstPushSrc.html#GstPushSrcClass">
 <ANCHOR id="GstPushSrc.see-also" href="gstreamer-libs-1.0/GstPushSrc.html#GstPushSrc.see-also">
 <ANCHOR id="GstAdapter" href="gstreamer-libs-1.0/GstAdapter.html">
 <ANCHOR id="GstAdapter.functions" href="gstreamer-libs-1.0/GstAdapter.html#GstAdapter.functions">
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 19f28da..1bab2b7 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -55,6 +55,7 @@
 
 EXTRA_HFILES = \
 	$(top_srcdir)/plugins/elements/gstcapsfilter.h \
+	$(top_srcdir)/plugins/elements/gstdownloadbuffer.h \
 	$(top_srcdir)/plugins/elements/gstfakesrc.h \
 	$(top_srcdir)/plugins/elements/gstfakesink.h \
 	$(top_srcdir)/plugins/elements/gstfdsink.h \
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index fc288f3..b11e737 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -497,6 +497,7 @@
 # the registry won't have the element
 EXTRA_HFILES = \
 	$(top_srcdir)/plugins/elements/gstcapsfilter.h \
+	$(top_srcdir)/plugins/elements/gstdownloadbuffer.h \
 	$(top_srcdir)/plugins/elements/gstfakesrc.h \
 	$(top_srcdir)/plugins/elements/gstfakesink.h \
 	$(top_srcdir)/plugins/elements/gstfdsink.h \
diff --git a/docs/plugins/gstreamer-plugins-docs.sgml b/docs/plugins/gstreamer-plugins-docs.sgml
index 7996320..72c2e79 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-downloadbuffer.xml" />
     <xi:include href="xml/element-fakesrc.xml" />
     <xi:include href="xml/element-fakesink.xml" />
     <xi:include href="xml/element-fdsink.xml" />
diff --git a/docs/plugins/gstreamer-plugins-sections.txt b/docs/plugins/gstreamer-plugins-sections.txt
index 83e0857..ac4451c 100644
--- a/docs/plugins/gstreamer-plugins-sections.txt
+++ b/docs/plugins/gstreamer-plugins-sections.txt
@@ -126,6 +126,21 @@
 </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
diff --git a/docs/plugins/gstreamer-plugins.args b/docs/plugins/gstreamer-plugins.args
index 88dfe0e..5d3afc5 100644
--- a/docs/plugins/gstreamer-plugins.args
+++ b/docs/plugins/gstreamer-plugins.args
@@ -998,3 +998,73 @@
 <DEFAULT></DEFAULT>
 </ARG>
 
+<ARG>
+<NAME>GstDownloadBuffer::high-percent</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,100]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>High percent</NICK>
+<BLURB>High threshold for buffering to finish. Only used if use-buffering is True.</BLURB>
+<DEFAULT>99</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDownloadBuffer::low-percent</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,100]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Low percent</NICK>
+<BLURB>Low threshold for buffering to start. Only used if use-buffering is True.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDownloadBuffer::max-size-bytes</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (kB)</NICK>
+<BLURB>Max. amount of data to buffer (bytes, 0=disable).</BLURB>
+<DEFAULT>2097152</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDownloadBuffer::max-size-time</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (ns)</NICK>
+<BLURB>Max. amount of data to buffer (in ns, 0=disable).</BLURB>
+<DEFAULT>2000000000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDownloadBuffer::temp-location</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Temporary File Location</NICK>
+<BLURB>Location to store temporary files in (Only read this property, use temp-template to configure the name template).</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDownloadBuffer::temp-remove</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Remove the Temporary File</NICK>
+<BLURB>Remove the temp-location after use.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDownloadBuffer::temp-template</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Temporary File Template</NICK>
+<BLURB>File template to store temporary files in, should contain directory and XXXXXX. (NULL == disabled).</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gstreamer-plugins.hierarchy b/docs/plugins/gstreamer-plugins.hierarchy
index 8f411fe..9195eb1 100644
--- a/docs/plugins/gstreamer-plugins.hierarchy
+++ b/docs/plugins/gstreamer-plugins.hierarchy
@@ -22,6 +22,7 @@
           GstIdentity
         GstBin
           GstPipeline
+        GstDownloadBuffer
         GstFunnel
         GstInputSelector
         GstMultiQueue
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index cbdfc1f..7797b66 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"> — Pass data without modification, limiting formats</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"> — Download Buffer element</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-fakesrc.html">fakesrc</a></span><span class="refpurpose"> — Push empty (no data) buffers around</span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2 b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
index 13c05ac..e8c221e 100644
--- a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
@@ -4,6 +4,7 @@
   <chapters>
     <sub name="gstreamer Elements" link="ch01.html">
       <sub name="capsfilter" link="gstreamer-plugins-capsfilter.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"/>
       <sub name="fdsink" link="gstreamer-plugins-fdsink.html"/>
@@ -31,9 +32,19 @@
     <keyword type="" name="Element Pads" link="gstreamer-plugins-capsfilter.html#id-1.2.2.7.4.2"/>
     <keyword type="struct" name="struct GstCapsFilter" link="gstreamer-plugins-capsfilter.html#GstCapsFilter-struct"/>
     <keyword type="property" name="The “caps” property" link="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesrc.html#id-1.2.3.8.4"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesrc.html#id-1.2.3.8.5.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesrc.html#id-1.2.3.8.5.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-downloadbuffer.html#id-1.2.3.7.8.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-downloadbuffer.html#id-1.2.3.7.8.2"/>
+    <keyword type="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"/>
+    <keyword type="property" name="The “max-size-bytes” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--max-size-bytes"/>
+    <keyword type="property" name="The “max-size-time” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--max-size-time"/>
+    <keyword type="property" name="The “temp-location” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-location"/>
+    <keyword type="property" name="The “temp-remove” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-remove"/>
+    <keyword type="property" name="The “temp-template” property" link="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-template"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesrc.html#id-1.2.4.8.4"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesrc.html#id-1.2.4.8.5.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesrc.html#id-1.2.4.8.5.2"/>
     <keyword type="struct" name="struct GstFakeSrc" link="gstreamer-plugins-fakesrc.html#GstFakeSrc-struct"/>
     <keyword type="enum" name="enum GstFakeSrcDataType" link="gstreamer-plugins-fakesrc.html#GstFakeSrcDataType"/>
     <keyword type="enum" name="enum GstFakeSrcFillType" link="gstreamer-plugins-fakesrc.html#GstFakeSrcFillType"/>
@@ -57,9 +68,9 @@
     <keyword type="property" name="The “sizetype” property" link="gstreamer-plugins-fakesrc.html#GstFakeSrc--sizetype"/>
     <keyword type="property" name="The “sync” property" link="gstreamer-plugins-fakesrc.html#GstFakeSrc--sync"/>
     <keyword type="signal" name="The “handoff” signal" link="gstreamer-plugins-fakesrc.html#GstFakeSrc-handoff"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesink.html#id-1.2.4.8.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesink.html#id-1.2.4.8.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesink.html#id-1.2.4.8.4.2"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesink.html#id-1.2.5.8.3"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesink.html#id-1.2.5.8.4.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesink.html#id-1.2.5.8.4.2"/>
     <keyword type="struct" name="struct GstFakeSink" link="gstreamer-plugins-fakesink.html#GstFakeSink-struct"/>
     <keyword type="enum" name="enum GstFakeSinkStateError" link="gstreamer-plugins-fakesink.html#GstFakeSinkStateError"/>
     <keyword type="property" name="The “can-activate-pull” property" link="gstreamer-plugins-fakesink.html#GstFakeSink--can-activate-pull"/>
@@ -72,34 +83,34 @@
     <keyword type="property" name="The “state-error” property" link="gstreamer-plugins-fakesink.html#GstFakeSink--state-error"/>
     <keyword type="signal" name="The “handoff” signal" link="gstreamer-plugins-fakesink.html#GstFakeSink-handoff"/>
     <keyword type="signal" name="The “preroll-handoff” signal" link="gstreamer-plugins-fakesink.html#GstFakeSink-preroll-handoff"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsink.html#id-1.2.5.8.3.2.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsink.html#id-1.2.5.8.3.2.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsink.html#id-1.2.6.8.3.2.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsink.html#id-1.2.6.8.3.2.2"/>
     <keyword type="struct" name="struct GstFdSink" link="gstreamer-plugins-fdsink.html#GstFdSink-struct"/>
     <keyword type="property" name="The “fd” property" link="gstreamer-plugins-fdsink.html#GstFdSink--fd"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fdsrc.html#id-1.2.6.8.8"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsrc.html#id-1.2.6.8.9.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsrc.html#id-1.2.6.8.9.2"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-fdsrc.html#id-1.2.7.8.8"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsrc.html#id-1.2.7.8.9.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsrc.html#id-1.2.7.8.9.2"/>
     <keyword type="struct" name="struct GstFdSrc" link="gstreamer-plugins-fdsrc.html#GstFdSrc-struct"/>
     <keyword type="property" name="The “fd” property" link="gstreamer-plugins-fdsrc.html#GstFdSrc--fd"/>
     <keyword type="property" name="The “timeout” property" link="gstreamer-plugins-fdsrc.html#GstFdSrc--timeout"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesrc.html#id-1.2.7.8.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-filesrc.html#id-1.2.7.8.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesrc.html#id-1.2.7.8.4.2"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesrc.html#id-1.2.8.8.3"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-filesrc.html#id-1.2.8.8.4.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesrc.html#id-1.2.8.8.4.2"/>
     <keyword type="struct" name="struct GstFileSrc" link="gstreamer-plugins-filesrc.html#GstFileSrc-struct"/>
     <keyword type="property" name="The “location” property" link="gstreamer-plugins-filesrc.html#GstFileSrc--location"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesink.html#id-1.2.8.8.3"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-filesink.html#id-1.2.8.8.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesink.html#id-1.2.8.8.4.2"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesink.html#id-1.2.9.8.3"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-filesink.html#id-1.2.9.8.4.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesink.html#id-1.2.9.8.4.2"/>
     <keyword type="struct" name="struct GstFileSink" link="gstreamer-plugins-filesink.html#GstFileSink-struct"/>
     <keyword type="property" name="The “append” property" link="gstreamer-plugins-filesink.html#GstFileSink--append"/>
     <keyword type="property" name="The “buffer-mode” property" link="gstreamer-plugins-filesink.html#GstFileSink--buffer-mode"/>
     <keyword type="property" name="The “buffer-size” property" link="gstreamer-plugins-filesink.html#GstFileSink--buffer-size"/>
     <keyword type="property" name="The “location” property" link="gstreamer-plugins-filesink.html#GstFileSink--location"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-funnel.html#id-1.2.9.6.3.2.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-funnel.html#id-1.2.9.6.3.2.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-funnel.html#id-1.2.10.6.3.2.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-funnel.html#id-1.2.10.6.3.2.2"/>
     <keyword type="struct" name="struct GstFunnel" link="gstreamer-plugins-funnel.html#GstFunnel-struct"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-identity.html#id-1.2.10.8.2.1.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-identity.html#id-1.2.10.8.2.1.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-identity.html#id-1.2.11.8.2.1.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-identity.html#id-1.2.11.8.2.1.2"/>
     <keyword type="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"/>
@@ -114,8 +125,8 @@
     <keyword type="property" name="The “sleep-time” property" link="gstreamer-plugins-identity.html#GstIdentity--sleep-time"/>
     <keyword type="property" name="The “sync” property" link="gstreamer-plugins-identity.html#GstIdentity--sync"/>
     <keyword type="signal" name="The “handoff” signal" link="gstreamer-plugins-identity.html#GstIdentity-handoff"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-input-selector.html#id-1.2.11.8.5.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-input-selector.html#id-1.2.11.8.5.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-input-selector.html#id-1.2.12.8.5.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-input-selector.html#id-1.2.12.8.5.2"/>
     <keyword type="struct" name="struct GstInputSelector" link="gstreamer-plugins-input-selector.html#GstInputSelector-struct"/>
     <keyword type="enum" name="enum GstInputSelectorSyncMode" link="gstreamer-plugins-input-selector.html#GstInputSelectorSyncMode"/>
     <keyword type="property" name="The “active-pad” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--active-pad"/>
@@ -124,9 +135,9 @@
     <keyword type="property" name="The “sync-mode” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--sync-mode"/>
     <keyword type="property" name="The “sync-streams” property" link="gstreamer-plugins-input-selector.html#GstInputSelector--sync-streams"/>
     <keyword type="signal" name="The “block” signal" link="gstreamer-plugins-input-selector.html#GstInputSelector-block"/>
-    <keyword type="" name="" link="gstreamer-plugins-multiqueue.html#id-1.2.12.8.2"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-multiqueue.html#id-1.2.12.8.3.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-multiqueue.html#id-1.2.12.8.3.2"/>
+    <keyword type="" name="" link="gstreamer-plugins-multiqueue.html#id-1.2.13.8.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-multiqueue.html#id-1.2.13.8.3.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-multiqueue.html#id-1.2.13.8.3.2"/>
     <keyword type="struct" name="struct GstMultiQueue" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-struct"/>
     <keyword type="property" name="The “extra-size-buffers” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-buffers"/>
     <keyword type="property" name="The “extra-size-bytes” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-bytes"/>
@@ -140,15 +151,15 @@
     <keyword type="property" name="The “use-buffering” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-buffering"/>
     <keyword type="signal" name="The “overrun” signal" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun"/>
     <keyword type="signal" name="The “underrun” signal" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-output-selector.html#id-1.2.13.7.2.1.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-output-selector.html#id-1.2.13.7.2.1.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-output-selector.html#id-1.2.14.7.2.1.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-output-selector.html#id-1.2.14.7.2.1.2"/>
     <keyword type="struct" name="struct GstOutputSelector" link="gstreamer-plugins-output-selector.html#GstOutputSelector-struct"/>
     <keyword type="enum" name="enum GstOutputSelectorPadNegotiationMode" link="gstreamer-plugins-output-selector.html#GstOutputSelectorPadNegotiationMode"/>
     <keyword type="property" name="The “active-pad” property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--active-pad"/>
     <keyword type="property" name="The “pad-negotiation-mode” property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--pad-negotiation-mode"/>
     <keyword type="property" name="The “resend-latest” property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--resend-latest"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-queue.html#id-1.2.14.8.7.3.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue.html#id-1.2.14.8.7.3.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-queue.html#id-1.2.15.8.7.3.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue.html#id-1.2.15.8.7.3.2"/>
     <keyword type="struct" name="struct GstQueue" link="gstreamer-plugins-queue.html#GstQueue-struct"/>
     <keyword type="enum" name="enum GstQueueLeaky" link="gstreamer-plugins-queue.html#GstQueueLeaky"/>
     <keyword type="property" name="The “current-level-buffers” property" link="gstreamer-plugins-queue.html#GstQueue--current-level-buffers"/>
@@ -167,8 +178,8 @@
     <keyword type="signal" name="The “pushing” signal" link="gstreamer-plugins-queue.html#GstQueue-pushing"/>
     <keyword type="signal" name="The “running” signal" link="gstreamer-plugins-queue.html#GstQueue-running"/>
     <keyword type="signal" name="The “underrun” signal" link="gstreamer-plugins-queue.html#GstQueue-underrun"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-queue2.html#id-1.2.15.7.7.1.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue2.html#id-1.2.15.7.7.1.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-queue2.html#id-1.2.16.7.7.1.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue2.html#id-1.2.16.7.7.1.2"/>
     <keyword type="struct" name="struct GstQueue2" link="gstreamer-plugins-queue2.html#GstQueue2-struct"/>
     <keyword type="property" name="The “current-level-buffers” property" link="gstreamer-plugins-queue2.html#GstQueue2--current-level-buffers"/>
     <keyword type="property" name="The “current-level-bytes” property" link="gstreamer-plugins-queue2.html#GstQueue2--current-level-bytes"/>
@@ -184,9 +195,9 @@
     <keyword type="property" name="The “temp-template” property" link="gstreamer-plugins-queue2.html#GstQueue2--temp-template"/>
     <keyword type="property" name="The “use-buffering” property" link="gstreamer-plugins-queue2.html#GstQueue2--use-buffering"/>
     <keyword type="property" name="The “use-rate-estimate” property" link="gstreamer-plugins-queue2.html#GstQueue2--use-rate-estimate"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-tee.html#id-1.2.16.7.4"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-tee.html#id-1.2.16.7.5.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-tee.html#id-1.2.16.7.5.2"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-tee.html#id-1.2.17.7.4"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-tee.html#id-1.2.17.7.5.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-tee.html#id-1.2.17.7.5.2"/>
     <keyword type="struct" name="struct 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"/>
@@ -195,15 +206,15 @@
     <keyword type="property" name="The “num-src-pads” property" link="gstreamer-plugins-tee.html#GstTee--num-src-pads"/>
     <keyword type="property" name="The “pull-mode” property" link="gstreamer-plugins-tee.html#GstTee--pull-mode"/>
     <keyword type="property" name="The “silent” property" link="gstreamer-plugins-tee.html#GstTee--silent"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-typefind.html#id-1.2.17.8.4.2.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-typefind.html#id-1.2.17.8.4.2.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-typefind.html#id-1.2.18.8.4.2.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-typefind.html#id-1.2.18.8.4.2.2"/>
     <keyword type="struct" name="struct GstTypeFindElement" link="gstreamer-plugins-typefind.html#GstTypeFindElement-struct"/>
     <keyword type="property" name="The “caps” property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--caps"/>
     <keyword type="property" name="The “force-caps” property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--force-caps"/>
     <keyword type="property" name="The “minimum” property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--minimum"/>
     <keyword type="signal" name="The “have-type” signal" link="gstreamer-plugins-typefind.html#GstTypeFindElement-have-type"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-valve.html#id-1.2.18.7.3.4.1"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-valve.html#id-1.2.18.7.3.4.2"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-valve.html#id-1.2.19.7.3.4.1"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-valve.html#id-1.2.19.7.3.4.2"/>
     <keyword type="struct" name="struct GstValve" link="gstreamer-plugins-valve.html#GstValve-struct"/>
     <keyword type="property" name="The “drop” property" link="gstreamer-plugins-valve.html#GstValve--drop"/>
   </functions>
diff --git a/docs/plugins/html/gstreamer-plugins-capsfilter.html b/docs/plugins/html/gstreamer-plugins-capsfilter.html
index 0532746..b220ac9 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-fakesrc.html" title="fakesrc">
+<link rel="next" href="gstreamer-plugins-downloadbuffer.html" title="downloadbuffer">
 <meta name="generator" content="GTK-Doc V1.20 (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-fakesrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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-capsfilter"></a><div class="titlepage"></div>
diff --git a/docs/plugins/html/gstreamer-plugins-downloadbuffer.html b/docs/plugins/html/gstreamer-plugins-downloadbuffer.html
new file mode 100644
index 0000000..ae54e55
--- /dev/null
+++ b/docs/plugins/html/gstreamer-plugins-downloadbuffer.html
@@ -0,0 +1,290 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GStreamer Core Plugins 1.0 Plugins Reference Manual: downloadbuffer</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-fakesrc.html" title="fakesrc">
+<meta name="generator" content="GTK-Doc V1.20 (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="10"><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-downloadbuffer.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-downloadbuffer.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
+                  <a href="#gstreamer-plugins-downloadbuffer.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-fakesrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-plugins-downloadbuffer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-plugins-downloadbuffer.top_of_page"></a>downloadbuffer</span></h2>
+<p>downloadbuffer — Download Buffer element</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.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://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--high-percent" title="The “high-percent” property">high-percent</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--low-percent" title="The “low-percent” property">low-percent</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--max-size-bytes" title="The “max-size-bytes” property">max-size-bytes</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--max-size-time" title="The “max-size-time” property">max-size-time</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-location" title="The “temp-location” property">temp-location</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-remove" title="The “temp-remove” property">temp-remove</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-template" title="The “temp-template” property">temp-template</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstDownloadBuffer"></a><div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.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-downloadbuffer.html#GstDownloadBuffer-struct" title="struct GstDownloadBuffer">GstDownloadBuffer</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+    <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/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> GstDownloadBuffer
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.description"></a><h2>Description</h2>
+<p>The downloadbuffer element provides on-disk buffering and caching of, typically,
+a network file. temp-template should be set to a value such as
+/tmp/gstreamer-XXXXXX and the element will allocate a random free filename and
+buffer the data in the file.</p>
+<p>With max-size-bytes and max-size-time you can configure the buffering limits.
+The downloadbuffer element will try to read-ahead these amounts of data. When
+the amount of read-ahead data drops below low-percent of the configured max,
+the element will start emiting BUFFERING messages until high-percent of max is
+reached again.</p>
+<p>The downloadbuffer provides push and pull based scheduling on its source pad
+and will efficiently seek in the upstream element when needed.</p>
+<p>The temp-location property will be used to notify the application of the
+allocated filename.</p>
+<p>When the downloadbuffer has completely downloaded the media, it will
+post an application message named  <code class="classname">"GstCacheDownloadComplete"</code>
+with the following information:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+  G_TYPE_STRING
+  <code class="classname">"location"</code>:
+  the location of the completely downloaded file.
+  </p></li></ul></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.3.7.8.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>Wim Taymans &lt;wim.taymans@gmail.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.8.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</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>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.functions_details"></a><h2>Functions</h2>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstDownloadBuffer-struct"></a><h3>struct GstDownloadBuffer</h3>
+<pre class="programlisting">struct GstDownloadBuffer;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-plugins-downloadbuffer.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstDownloadBuffer--high-percent"></a><h3>The <code class="literal">“high-percent”</code> property</h3>
+<pre class="programlisting">  “high-percent”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>High threshold for buffering to finish. Only used if use-buffering is True.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 99</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDownloadBuffer--low-percent"></a><h3>The <code class="literal">“low-percent”</code> property</h3>
+<pre class="programlisting">  “low-percent”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Low threshold for buffering to start. Only used if use-buffering is True.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDownloadBuffer--max-size-bytes"></a><h3>The <code class="literal">“max-size-bytes”</code> property</h3>
+<pre class="programlisting">  “max-size-bytes”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Max. amount of data to buffer (bytes, 0=disable).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 2097152</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDownloadBuffer--max-size-time"></a><h3>The <code class="literal">“max-size-time”</code> property</h3>
+<pre class="programlisting">  “max-size-time”            <span class="type">guint64</span></pre>
+<p>Max. amount of data to buffer (in ns, 0=disable).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 2000000000</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDownloadBuffer--temp-location"></a><h3>The <code class="literal">“temp-location”</code> property</h3>
+<pre class="programlisting">  “temp-location”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location to store temporary files in (Only read this property, use temp-template to configure the name template).</p>
+<p>Flags: Read</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDownloadBuffer--temp-remove"></a><h3>The <code class="literal">“temp-remove”</code> property</h3>
+<pre class="programlisting">  “temp-remove”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When temp-template is set, remove the temporary file when going to READY.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDownloadBuffer--temp-template"></a><h3>The <code class="literal">“temp-template”</code> property</h3>
+<pre class="programlisting">  “temp-template”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>File template to store temporary files in, should contain directory and XXXXXX. (NULL == disabled).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.20</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gstreamer-plugins-fakesink.html b/docs/plugins/html/gstreamer-plugins-fakesink.html
index f8bd603..11c05e7 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.4.8.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.5.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.4.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.5.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.4.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.5.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -229,7 +229,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.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">
@@ -369,7 +369,7 @@
                <a href="http://library.gnome.org/devel/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.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">
@@ -412,7 +412,7 @@
                <a href="http://library.gnome.org/devel/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.4.12.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.5.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 69185b4..ba08125 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesrc.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-downloadbuffer.html" title="downloadbuffer">
 <link rel="next" href="gstreamer-plugins-fakesink.html" title="fakesink">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -22,7 +22,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-downloadbuffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-plugins-fakesink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -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.3.8.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.4.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.3.8.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.4.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.3.8.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.4.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -284,7 +284,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.3.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.4.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -315,7 +315,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.3.10.4.4"></a><h4>Members</h4>
+<a name="id-1.2.4.10.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -367,7 +367,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.3.10.5.4"></a><h4>Members</h4>
+<a name="id-1.2.4.10.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -440,7 +440,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.3.10.6.4"></a><h4>Members</h4>
+<a name="id-1.2.4.10.6.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -627,7 +627,7 @@
                <a href="http://library.gnome.org/devel/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.3.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.4.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 bde50d0..aa6f8d8 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.5.8.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.6.8.3.2.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.5.8.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.6.8.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gstreamer-plugins-fdsrc.html b/docs/plugins/html/gstreamer-plugins-fdsrc.html
index bd07eed..2611d00 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.6.8.8"></a><h3>Example launch line</h3>
+<a name="id-1.2.7.8.8"></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.6.8.9.1"></a><h3>Element Information</h3>
+<a name="id-1.2.7.8.9.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.6.8.9.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.7.8.9.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 6bab434..249bf86 100644
--- a/docs/plugins/html/gstreamer-plugins-filesink.html
+++ b/docs/plugins/html/gstreamer-plugins-filesink.html
@@ -100,7 +100,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.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>
@@ -116,7 +116,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">
@@ -142,7 +142,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-filesrc.html b/docs/plugins/html/gstreamer-plugins-filesrc.html
index b0094ce..60652dc 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.7.8.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.8.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.7.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.8.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.7.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.8.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 cbd3ce5..4c720d2 100644
--- a/docs/plugins/html/gstreamer-plugins-funnel.html
+++ b/docs/plugins/html/gstreamer-plugins-funnel.html
@@ -66,7 +66,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.9.6.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.10.6.3.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -92,7 +92,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.9.6.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.10.6.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gstreamer-plugins-identity.html b/docs/plugins/html/gstreamer-plugins-identity.html
index 575a32d..98e878a 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.10.8.2.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.11.8.2.1.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.10.8.2.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.11.8.2.1.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -354,7 +354,7 @@
                <a href="http://library.gnome.org/devel/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.10.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.11.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 26741c4..552ccfc 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.11.8.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.12.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.11.8.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.12.8.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 @@
 <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.11.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.12.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -327,7 +327,7 @@
 the current switch segment, as a running time, or 0 if there is no current
 active pad or the current active pad never received data.</p>
 <div class="refsect3">
-<a name="id-1.2.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-multiqueue.html b/docs/plugins/html/gstreamer-plugins-multiqueue.html
index a0d3e5b..9548b54 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.12.8.2"></a><p>
+<a name="id-1.2.13.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>
@@ -157,7 +157,7 @@
     'sometimes' src pads (src%u).
   </p>
 <p>
-    When requesting a given sinkpad with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-request-pad"><code class="function">gst_element_get_request_pad()</code></a>,
+    When requesting a given sinkpad with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-request-pad"><code class="function">gst_element_request_pad()</code></a>,
     the associated srcpad for that stream will be created.
     Example: requesting sink1 will generate src1.
   </p>
@@ -228,7 +228,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.12.8.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.13.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.12.8.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.13.8.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -421,7 +421,7 @@
 GObject properties.</p>
 <p>This can be used as an indicator of pre-roll.</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -454,7 +454,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.12.12.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.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 a15a6a2..38eb008 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.13.7.2.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.14.7.2.1.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.13.7.2.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.14.7.2.1.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -191,7 +191,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.13.9.3.4"></a><h4>Members</h4>
+<a name="id-1.2.14.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 1c373b0..54aa747 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.3.1</td>
+<td>1.3.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -71,6 +71,10 @@
 <td>Pass data without modification, limiting formats</td>
 </tr>
 <tr>
+<td><p><span class="term"><a class="link" href="gstreamer-plugins-downloadbuffer.html" title="downloadbuffer">downloadbuffer</a></span></p></td>
+<td>Download Buffer element</td>
+</tr>
+<tr>
 <td><p><span class="term"><a class="link" href="gstreamer-plugins-fakesink.html" title="fakesink">fakesink</a></span></p></td>
 <td>Black hole for data</td>
 </tr>
diff --git a/docs/plugins/html/gstreamer-plugins-queue.html b/docs/plugins/html/gstreamer-plugins-queue.html
index 054d558..a0c0717 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.14.8.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.15.8.7.3.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.14.8.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.15.8.7.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -289,7 +289,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.14.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.15.10.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -442,7 +442,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.14.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -474,7 +474,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.14.12.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -507,7 +507,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.14.12.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -541,7 +541,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.14.12.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.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 290f778..81dd439 100644
--- a/docs/plugins/html/gstreamer-plugins-queue2.html
+++ b/docs/plugins/html/gstreamer-plugins-queue2.html
@@ -161,7 +161,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.15.7.7.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.16.7.7.1.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.15.7.7.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.16.7.7.1.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-tee.html b/docs/plugins/html/gstreamer-plugins-tee.html
index cb723ef..5c9d2d7 100644
--- a/docs/plugins/html/gstreamer-plugins-tee.html
+++ b/docs/plugins/html/gstreamer-plugins-tee.html
@@ -115,7 +115,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.16.7.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.17.7.4"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -132,7 +132,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.16.7.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.17.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -158,7 +158,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.16.7.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.17.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -229,7 +229,7 @@
 
 disables pull mode.</p>
 <div class="refsect3">
-<a name="id-1.2.16.9.3.4"></a><h4>Members</h4>
+<a name="id-1.2.17.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 65e9f35..f39b0e0 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.17.8.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.18.8.4.2.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.17.8.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.18.8.4.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -241,7 +241,7 @@
 <p>This signal gets emitted when the type and its probability has
 been found.</p>
 <div class="refsect3">
-<a name="id-1.2.17.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.18.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 c397307..979326d 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.18.7.3.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.19.7.3.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.18.7.3.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.19.7.3.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 ad4aad0..90c8933 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.3.1)
+      for GStreamer Core Plugins 1.0 (1.3.2)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/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"> — Pass data without modification, limiting formats</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-plugins-downloadbuffer.html">downloadbuffer</a></span><span class="refpurpose"> — Download Buffer element</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-fakesrc.html">fakesrc</a></span><span class="refpurpose"> — Push empty (no data) buffers around</span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index e9d8e62..99195c8 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -10,6 +10,23 @@
 <ANCHOR id="GstCapsFilter-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-capsfilter.html#GstCapsFilter-struct">
 <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="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">
+<ANCHOR id="gstreamer-plugins-downloadbuffer.other" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.other">
+<ANCHOR id="gstreamer-plugins-downloadbuffer.object-hierarchy" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.object-hierarchy">
+<ANCHOR id="gstreamer-plugins-downloadbuffer.description" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.description">
+<ANCHOR id="gstreamer-plugins-downloadbuffer.functions_details" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.functions_details">
+<ANCHOR id="gstreamer-plugins-downloadbuffer.other_details" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.other_details">
+<ANCHOR id="GstDownloadBuffer-struct" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer-struct">
+<ANCHOR id="gstreamer-plugins-downloadbuffer.property-details" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#gstreamer-plugins-downloadbuffer.property-details">
+<ANCHOR id="GstDownloadBuffer--high-percent" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--high-percent">
+<ANCHOR id="GstDownloadBuffer--low-percent" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--low-percent">
+<ANCHOR id="GstDownloadBuffer--max-size-bytes" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--max-size-bytes">
+<ANCHOR id="GstDownloadBuffer--max-size-time" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--max-size-time">
+<ANCHOR id="GstDownloadBuffer--temp-location" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-location">
+<ANCHOR id="GstDownloadBuffer--temp-remove" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-remove">
+<ANCHOR id="GstDownloadBuffer--temp-template" href="gstreamer-plugins-1.0/gstreamer-plugins-downloadbuffer.html#GstDownloadBuffer--temp-template">
 <ANCHOR id="gstreamer-plugins-fakesrc" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html">
 <ANCHOR id="gstreamer-plugins-fakesrc.properties" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#gstreamer-plugins-fakesrc.properties">
 <ANCHOR id="gstreamer-plugins-fakesrc.signals" href="gstreamer-plugins-1.0/gstreamer-plugins-fakesrc.html#gstreamer-plugins-fakesrc.signals">
diff --git a/docs/plugins/inspect/plugin-coreelements.xml b/docs/plugins/inspect/plugin-coreelements.xml
index b7c52aa..67f7b7b 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.3.1</version>
+  <version>1.3.2</version>
   <license>LGPL</license>
   <source>gstreamer</source>
   <package>GStreamer source release</package>
@@ -31,6 +31,27 @@
       </pads>
     </element>
     <element>
+      <name>downloadbuffer</name>
+      <longname>DownloadBuffer</longname>
+      <class>Generic</class>
+      <description>Download Buffer element</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
       <name>fakesink</name>
       <longname>Fake Sink</longname>
       <class>Sink</class>
diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c
index 999422e..55f8cf7 100644
--- a/gst/gstbufferpool.c
+++ b/gst/gstbufferpool.c
@@ -575,9 +575,11 @@
  * @pool: a #GstBufferPool
  * @config: (transfer full): a #GstStructure
  *
- * Set the configuration of the pool. The pool must be inactive and all buffers
- * allocated form this pool must be returned or else this function will do
- * nothing and return FALSE.
+ * Set the configuration of the pool. If the pool is already configured, and
+ * the configuration haven't change, this function will return %TRUE. If the
+ * pool is active, this function will try deactivating it. Buffers allocated
+ * form this pool must be returned or else this function will do nothing and
+ * return FALSE.
  *
  * @config is a #GstStructure that contains the configuration parameters for
  * the pool. A default and mandatory set of parameters can be configured with
@@ -605,9 +607,24 @@
   priv = pool->priv;
 
   GST_BUFFER_POOL_LOCK (pool);
+
+  /* nothing to do if config is unchanged */
+  if (priv->configured && gst_structure_is_equal (config, priv->config))
+    goto config_unchanged;
+
   /* can't change the settings when active */
-  if (priv->active)
-    goto was_active;
+  if (priv->active) {
+    GST_BUFFER_POOL_UNLOCK (pool);
+    if (!gst_buffer_pool_set_active (pool, FALSE)) {
+      GST_BUFFER_POOL_LOCK (pool);
+      goto was_active;
+    }
+    GST_BUFFER_POOL_LOCK (pool);
+
+    /* not likely but as we released the lock */
+    if (priv->active)
+      goto was_active;
+  }
 
   /* we can't change when outstanding buffers */
   if (g_atomic_int_get (&priv->outstanding) != 0)
@@ -621,20 +638,26 @@
   else
     result = FALSE;
 
-  if (result) {
-    if (priv->config)
-      gst_structure_free (priv->config);
-    priv->config = config;
+  /* save the config regardless of the result so user can read back the
+   * modified config and evaluate if the changes are acceptable */
+  if (priv->config)
+    gst_structure_free (priv->config);
+  priv->config = config;
 
+  if (result) {
     /* now we are configured */
     priv->configured = TRUE;
-  } else {
-    gst_structure_free (config);
   }
   GST_BUFFER_POOL_UNLOCK (pool);
 
   return result;
 
+config_unchanged:
+  {
+    gst_structure_free (config);
+    GST_BUFFER_POOL_UNLOCK (pool);
+    return TRUE;
+  }
   /* ERRORS */
 was_active:
   {
@@ -983,6 +1006,44 @@
   return TRUE;
 }
 
+/**
+ * gst_buffer_pool_config_validate_params:
+ * @config: (transfer none): a #GstBufferPool configuration
+ * @caps: (transfer none): the excepted caps of buffers
+ * @size: the expected size of each buffer, not including prefix and padding
+ * @min_buffers: the expected minimum amount of buffers to allocate.
+ * @max_buffers: the expect maximum amount of buffers to allocate or 0 for unlimited.
+ *
+ * Validate that changes made to @config are still valid in the context of the
+ * expected parameters. This function is a helper that can be used to validate
+ * changes made by a pool to a config when gst_buffer_pool_set_config()
+ * returns %FALSE. This expects that @caps and @size haven't changed, and that
+ * @min_buffers aren't lower then what we initially expected. This does not check
+ * if options or allocator parameters.
+ *
+ * Since: 1.4
+ *
+ * Returns: %TRUE, if the parameters are valid in this context.
+ */
+gboolean
+gst_buffer_pool_config_validate_params (GstStructure * config, GstCaps * caps,
+    guint size, guint min_buffers, G_GNUC_UNUSED guint max_buffers)
+{
+  GstCaps *newcaps;
+  guint newsize, newmin;
+  gboolean ret = FALSE;
+
+  g_return_val_if_fail (config != NULL, FALSE);
+
+  gst_buffer_pool_config_get_params (config, &newcaps, &newsize, &newmin, NULL);
+
+  if (gst_caps_is_equal (caps, newcaps) && (size == newsize)
+      && (newmin >= min_buffers))
+    ret = TRUE;
+
+  return ret;
+}
+
 static GstFlowReturn
 default_acquire_buffer (GstBufferPool * pool, GstBuffer ** buffer,
     GstBufferPoolAcquireParams * params)
diff --git a/gst/gstbufferpool.h b/gst/gstbufferpool.h
index ec100e0..90f9310 100644
--- a/gst/gstbufferpool.h
+++ b/gst/gstbufferpool.h
@@ -201,6 +201,8 @@
 void             gst_buffer_pool_config_add_option  (GstStructure *config, const gchar *option);
 const gchar *    gst_buffer_pool_config_get_option  (GstStructure *config, guint index);
 gboolean         gst_buffer_pool_config_has_option  (GstStructure *config, const gchar *option);
+gboolean         gst_buffer_pool_config_validate_params (GstStructure *config, GstCaps *caps,
+                                                         guint size, guint min_buffers, guint max_buffers);
 
 /* buffer management */
 GstFlowReturn    gst_buffer_pool_acquire_buffer  (GstBufferPool *pool, GstBuffer **buffer,
diff --git a/gst/gstcaps.c b/gst/gstcaps.c
index c315e71..b729b79 100644
--- a/gst/gstcaps.c
+++ b/gst/gstcaps.c
@@ -2299,12 +2299,15 @@
 
     if (!priv_gst_structure_parse_fields (s, &s, structure)) {
       gst_structure_free (structure);
+      if (features)
+        gst_caps_features_free (features);
       g_free (copy);
       return FALSE;
     }
 
   append:
     gst_caps_append_structure_unchecked (caps, structure, features);
+    features = NULL;
     if (*s == '\0')
       break;
   } while (TRUE);
diff --git a/gst/gstelement.c b/gst/gstelement.c
index dc29053..cc96d25 100644
--- a/gst/gstelement.c
+++ b/gst/gstelement.c
@@ -43,8 +43,7 @@
  *
  * An existing pad of an element can be retrieved by name with
  * gst_element_get_static_pad(). A new dynamic pad can be created using
- * gst_element_request_pad() with a #GstPadTemplate or 
- * gst_element_get_request_pad() with the template name such as "src_\%u".
+ * gst_element_request_pad() with a #GstPadTemplate.
  * An iterator of all pads can be retrieved with gst_element_iterate_pads().
  *
  * Elements can be linked through their pads.
@@ -306,10 +305,10 @@
  * @pad: the #GstPad to release.
  *
  * Makes the element free the previously requested pad as obtained
- * with gst_element_get_request_pad().
+ * with gst_element_request_pad().
  *
  * This does not unref the pad. If the pad was created by using
- * gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
+ * gst_element_request_pad(), gst_element_release_request_pad() needs to be
  * followed by gst_object_unref() to free the @pad.
  *
  * MT safe.
@@ -733,7 +732,7 @@
  *
  * This function is used by plugin developers and should not be used
  * by applications. Pads that were dynamically requested from elements
- * with gst_element_get_request_pad() should be released with the
+ * with gst_element_request_pad() should be released with the
  * gst_element_release_request_pad() function instead.
  *
  * Pads are not automatically deactivated so elements should perform the needed
diff --git a/gst/gstpadtemplate.h b/gst/gstpadtemplate.h
index 2700e9b..636b143 100644
--- a/gst/gstpadtemplate.h
+++ b/gst/gstpadtemplate.h
@@ -52,7 +52,7 @@
  * @GST_PAD_ALWAYS: the pad is always available
  * @GST_PAD_SOMETIMES: the pad will become available depending on the media stream
  * @GST_PAD_REQUEST: the pad is only available on request with
- *  gst_element_get_request_pad().
+ *  gst_element_request_pad().
  *
  * Indicates when this pad will become available.
  */
diff --git a/gst/gstplugin.c b/gst/gstplugin.c
index c12ce4c..6251b14 100644
--- a/gst/gstplugin.c
+++ b/gst/gstplugin.c
@@ -657,6 +657,9 @@
 #define CHECK_PLUGIN_DESC_FIELD(desc,field,fn)                               \
   if (G_UNLIKELY ((desc)->field == NULL || *(desc)->field == '\0')) {        \
     g_warning ("Plugin description for '%s' has no valid %s field", fn, G_STRINGIFY (field)); \
+    g_set_error (error, GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, \
+        "Plugin %s has invalid plugin description field '%s'", \
+        filename, G_STRINGIFY (field)); \
     goto return_error;                                                       \
   }
 
diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c
index 9235136..96d4994 100644
--- a/gst/gstpluginloader.c
+++ b/gst/gstpluginloader.c
@@ -528,6 +528,7 @@
 gboolean
 _gst_plugin_loader_client_run (void)
 {
+  gboolean res = TRUE;
   GstPluginLoader *l;
 
   l = plugin_loader_new (NULL);
@@ -544,7 +545,8 @@
     dup_fd = dup (0);           /* STDIN */
     if (dup_fd == -1) {
       GST_ERROR ("Failed to start. Could no dup STDIN, errno %d", errno);
-      return FALSE;
+      res = FALSE;
+      goto beach;
     }
     l->fd_r.fd = dup_fd;
     close (0);
@@ -552,7 +554,8 @@
     dup_fd = dup (1);           /* STDOUT */
     if (dup_fd == -1) {
       GST_ERROR ("Failed to start. Could no dup STDOUT, errno %d", errno);
-      return FALSE;
+      res = FALSE;
+      goto beach;
     }
     l->fd_w.fd = dup_fd;
     close (1);
@@ -578,9 +581,13 @@
   /* Loop, listening for incoming packets on the fd and writing responses */
   while (!l->rx_done && exchange_packets (l));
 
+#ifndef G_OS_WIN32
+beach:
+#endif
+
   plugin_loader_free (l);
 
-  return TRUE;
+  return res;
 }
 
 static void
diff --git a/gst/gstvalue.c b/gst/gstvalue.c
index 26ff861..86f6154 100644
--- a/gst/gstvalue.c
+++ b/gst/gstvalue.c
@@ -2530,7 +2530,7 @@
 {
   gboolean ret = FALSE;
   gchar *end;
-  guint64 mask = -1;
+  guint64 mask = ~0;
 
   errno = 0;
   *to = g_ascii_strtoull (s, &end, 0);
@@ -5840,6 +5840,51 @@
   return GST_VALUE_UNORDERED;
 }
 
+
+/***********************
+ * GstAllocationParams *
+ ***********************/
+static gint
+gst_value_compare_allocation_params (const GValue * value1,
+    const GValue * value2)
+{
+  GstAllocationParams *v1, *v2;
+
+  v1 = value1->data[0].v_pointer;
+  v2 = value2->data[0].v_pointer;
+
+  if (v1 == NULL && v1 == v2)
+    return GST_VALUE_EQUAL;
+
+  if (v1 == NULL || v2 == NULL)
+    return GST_VALUE_UNORDERED;
+
+  if (v1->flags == v2->flags && v1->align == v2->align &&
+      v1->prefix == v2->prefix && v1->padding == v2->padding)
+    return GST_VALUE_EQUAL;
+
+  return GST_VALUE_UNORDERED;
+}
+
+
+/************
+ * GObject *
+ ************/
+
+static gint
+gst_value_compare_object (const GValue * value1, const GValue * value2)
+{
+  gpointer v1, v2;
+
+  v1 = value1->data[0].v_pointer;
+  v2 = value2->data[0].v_pointer;
+
+  if (v1 == v2)
+    return GST_VALUE_EQUAL;
+
+  return GST_VALUE_UNORDERED;
+}
+
 static void
 gst_value_transform_object_string (const GValue * src_value,
     GValue * dest_value)
@@ -6239,6 +6284,30 @@
     gst_value_register (&gst_value);
   }
 
+  {
+    static GstValueTable gst_value = {
+      0,
+      gst_value_compare_allocation_params,
+      NULL,
+      NULL,
+    };
+
+    gst_value.type = gst_allocation_params_get_type ();
+    gst_value_register (&gst_value);
+  }
+
+  {
+    static GstValueTable gst_value = {
+      0,
+      gst_value_compare_object,
+      NULL,
+      NULL,
+    };
+
+    gst_value.type = G_TYPE_OBJECT;
+    gst_value_register (&gst_value);
+  }
+
   REGISTER_SERIALIZATION (G_TYPE_DOUBLE, double);
   REGISTER_SERIALIZATION (G_TYPE_FLOAT, float);
 
diff --git a/gstreamer.doap b/gstreamer.doap
index 8be4897..f106767 100644
--- a/gstreamer.doap
+++ b/gstreamer.doap
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.3.2</revision>
+   <branch>1.3</branch>
+   <name></name>
+   <created>2014-05-21</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.3.2.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.3.1</revision>
    <branch>1.3</branch>
    <name></name>
diff --git a/gstreamer.spec b/gstreamer.spec
index 2627ff8..3dd45f8 100644
--- a/gstreamer.spec
+++ b/gstreamer.spec
@@ -4,7 +4,7 @@
 %define 	_glib2		2.32.0
 
 Name: 		%{gstreamer}
-Version: 	1.3.1
+Version: 	1.3.2
 Release: 	1
 Summary: 	GStreamer streaming media framework runtime
 
diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c
index 14ed000..132e942 100644
--- a/libs/gst/base/gstbasesrc.c
+++ b/libs/gst/base/gstbasesrc.c
@@ -3055,7 +3055,25 @@
     config = gst_buffer_pool_get_config (pool);
     gst_buffer_pool_config_set_params (config, outcaps, size, min, max);
     gst_buffer_pool_config_set_allocator (config, allocator, &params);
-    gst_buffer_pool_set_config (pool, config);
+
+    /* buffer pool may have to do some changes */
+    if (!gst_buffer_pool_set_config (pool, config)) {
+      config = gst_buffer_pool_get_config (pool);
+
+      /* If change are not acceptable, fallback to generic pool */
+      if (!gst_buffer_pool_config_validate_params (config, outcaps, size, min,
+              max)) {
+        GST_DEBUG_OBJECT (basesrc, "unsuported pool, making new pool");
+
+        gst_object_unref (pool);
+        pool = gst_buffer_pool_new ();
+        gst_buffer_pool_config_set_params (config, outcaps, size, min, max);
+        gst_buffer_pool_config_set_allocator (config, allocator, &params);
+      }
+
+      if (!gst_buffer_pool_set_config (pool, config))
+        goto config_failed;
+    }
   }
 
   if (update_allocator)
@@ -3071,6 +3089,12 @@
   }
 
   return TRUE;
+
+config_failed:
+  GST_ELEMENT_ERROR (basesrc, RESOURCE, SETTINGS,
+      ("Failed to configure the buffer pool"),
+      ("Configuration is most likely invalid, please report this issue."));
+  return FALSE;
 }
 
 static gboolean
diff --git a/libs/gst/base/gstbasetransform.c b/libs/gst/base/gstbasetransform.c
index e2e5e14..f82a9b8 100644
--- a/libs/gst/base/gstbasetransform.c
+++ b/libs/gst/base/gstbasetransform.c
@@ -899,7 +899,25 @@
     config = gst_buffer_pool_get_config (pool);
     gst_buffer_pool_config_set_params (config, outcaps, size, min, max);
     gst_buffer_pool_config_set_allocator (config, allocator, &params);
-    gst_buffer_pool_set_config (pool, config);
+
+    /* buffer pool may have to do some changes */
+    if (!gst_buffer_pool_set_config (pool, config)) {
+      config = gst_buffer_pool_get_config (pool);
+
+      /* If change are not acceptable, fallback to generic pool */
+      if (!gst_buffer_pool_config_validate_params (config, outcaps, size, min,
+              max)) {
+        GST_DEBUG_OBJECT (trans, "unsuported pool, making new pool");
+
+        gst_object_unref (pool);
+        pool = gst_buffer_pool_new ();
+        gst_buffer_pool_config_set_params (config, outcaps, size, min, max);
+        gst_buffer_pool_config_set_allocator (config, allocator, &params);
+      }
+
+      if (!gst_buffer_pool_set_config (pool, config))
+        goto config_failed;
+    }
   }
 
   if (update_allocator)
@@ -915,6 +933,12 @@
   }
 
   return TRUE;
+
+config_failed:
+  GST_ELEMENT_ERROR (trans, RESOURCE, SETTINGS,
+      ("Failed to configure the buffer pool"),
+      ("Configuration is most likely invalid, please report this issue."));
+  return FALSE;
 }
 
 static gboolean
diff --git a/libs/gst/check/libcheck/check.c b/libs/gst/check/libcheck/check.c
index 9aba434..2b7f481 100644
--- a/libs/gst/check/libcheck/check.c
+++ b/libs/gst/check/libcheck/check.c
@@ -248,7 +248,7 @@
     send_failure_info (buf);
     if (cur_fork_status () == CK_FORK) {
 #ifdef _POSIX_VERSION
-      exit (1);
+      _exit (1);
 #endif /* _POSIX_VERSION */
     }
   }
diff --git a/libs/gst/net/gstnettimeprovider.c b/libs/gst/net/gstnettimeprovider.c
index d975812..8e030d7 100644
--- a/libs/gst/net/gstnettimeprovider.c
+++ b/libs/gst/net/gstnettimeprovider.c
@@ -322,7 +322,8 @@
     GST_DEBUG_OBJECT (self, "notifying port %d", port);
     g_object_notify (G_OBJECT (self), "port");
   }
-  GST_DEBUG_OBJECT (self, "bound on UDP address %s, port %d", address, port);
+  GST_DEBUG_OBJECT (self, "bound on UDP address %s, port %d",
+      self->priv->address, port);
   g_object_unref (bound_addr);
 
   self->priv->socket = socket;
diff --git a/plugins/elements/Makefile.am b/plugins/elements/Makefile.am
index 5166c02..164c4a9 100644
--- a/plugins/elements/Makefile.am
+++ b/plugins/elements/Makefile.am
@@ -4,6 +4,7 @@
 libgstcoreelements_la_DEPENDENCIES = $(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la
 libgstcoreelements_la_SOURCES =	\
 	gstcapsfilter.c		\
+	gstdownloadbuffer.c     \
 	gstelements.c		\
 	gstfakesrc.c		\
 	gstfakesink.c		\
@@ -18,6 +19,7 @@
 	gstmultiqueue.c		\
 	gstqueue.c		\
 	gstqueue2.c		\
+	gstsparsefile.c		\
 	gsttee.c		\
 	gsttypefindelement.c	\
 	gstvalve.c
@@ -31,6 +33,7 @@
 
 noinst_HEADERS =		\
 	gstcapsfilter.h		\
+	gstdownloadbuffer.h	\
 	gstfakesink.h		\
 	gstfakesrc.h		\
 	gstfdsrc.h		\
@@ -44,6 +47,7 @@
 	gstmultiqueue.h		\
 	gstqueue.h		\
 	gstqueue2.h		\
+	gstsparsefile.h		\
 	gsttee.h		\
 	gsttypefindelement.h	\
 	gstvalve.h
diff --git a/plugins/elements/Makefile.in b/plugins/elements/Makefile.in
index 3d0c1db..0bf9347 100644
--- a/plugins/elements/Makefile.in
+++ b/plugins/elements/Makefile.in
@@ -157,6 +157,7 @@
 am__DEPENDENCIES_1 =
 am_libgstcoreelements_la_OBJECTS =  \
 	libgstcoreelements_la-gstcapsfilter.lo \
+	libgstcoreelements_la-gstdownloadbuffer.lo \
 	libgstcoreelements_la-gstelements.lo \
 	libgstcoreelements_la-gstfakesrc.lo \
 	libgstcoreelements_la-gstfakesink.lo \
@@ -171,6 +172,7 @@
 	libgstcoreelements_la-gstmultiqueue.lo \
 	libgstcoreelements_la-gstqueue.lo \
 	libgstcoreelements_la-gstqueue2.lo \
+	libgstcoreelements_la-gstsparsefile.lo \
 	libgstcoreelements_la-gsttee.lo \
 	libgstcoreelements_la-gsttypefindelement.lo \
 	libgstcoreelements_la-gstvalve.lo
@@ -525,6 +527,7 @@
 libgstcoreelements_la_DEPENDENCIES = $(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la
 libgstcoreelements_la_SOURCES = \
 	gstcapsfilter.c		\
+	gstdownloadbuffer.c     \
 	gstelements.c		\
 	gstfakesrc.c		\
 	gstfakesink.c		\
@@ -539,6 +542,7 @@
 	gstmultiqueue.c		\
 	gstqueue.c		\
 	gstqueue2.c		\
+	gstsparsefile.c		\
 	gsttee.c		\
 	gsttypefindelement.c	\
 	gstvalve.c
@@ -552,6 +556,7 @@
 libgstcoreelements_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 noinst_HEADERS = \
 	gstcapsfilter.h		\
+	gstdownloadbuffer.h	\
 	gstfakesink.h		\
 	gstfakesrc.h		\
 	gstfdsrc.h		\
@@ -565,6 +570,7 @@
 	gstmultiqueue.h		\
 	gstqueue.h		\
 	gstqueue2.h		\
+	gstsparsefile.h		\
 	gsttee.h		\
 	gsttypefindelement.h	\
 	gstvalve.h
@@ -653,6 +659,7 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstcapsfilter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstelements.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstfakesink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstfakesrc.Plo@am__quote@
@@ -667,6 +674,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstoutputselector.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstqueue.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstqueue2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstsparsefile.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gsttee.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gsttypefindelement.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoreelements_la-gstvalve.Plo@am__quote@
@@ -702,6 +710,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gstcapsfilter.lo `test -f 'gstcapsfilter.c' || echo '$(srcdir)/'`gstcapsfilter.c
 
+libgstcoreelements_la-gstdownloadbuffer.lo: gstdownloadbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gstdownloadbuffer.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Tpo -c -o libgstcoreelements_la-gstdownloadbuffer.lo `test -f 'gstdownloadbuffer.c' || echo '$(srcdir)/'`gstdownloadbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Tpo $(DEPDIR)/libgstcoreelements_la-gstdownloadbuffer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstdownloadbuffer.c' object='libgstcoreelements_la-gstdownloadbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gstdownloadbuffer.lo `test -f 'gstdownloadbuffer.c' || echo '$(srcdir)/'`gstdownloadbuffer.c
+
 libgstcoreelements_la-gstelements.lo: gstelements.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gstelements.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gstelements.Tpo -c -o libgstcoreelements_la-gstelements.lo `test -f 'gstelements.c' || echo '$(srcdir)/'`gstelements.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gstelements.Tpo $(DEPDIR)/libgstcoreelements_la-gstelements.Plo
@@ -800,6 +815,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gstqueue2.lo `test -f 'gstqueue2.c' || echo '$(srcdir)/'`gstqueue2.c
 
+libgstcoreelements_la-gstsparsefile.lo: gstsparsefile.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gstsparsefile.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gstsparsefile.Tpo -c -o libgstcoreelements_la-gstsparsefile.lo `test -f 'gstsparsefile.c' || echo '$(srcdir)/'`gstsparsefile.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gstsparsefile.Tpo $(DEPDIR)/libgstcoreelements_la-gstsparsefile.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstsparsefile.c' object='libgstcoreelements_la-gstsparsefile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -c -o libgstcoreelements_la-gstsparsefile.lo `test -f 'gstsparsefile.c' || echo '$(srcdir)/'`gstsparsefile.c
+
 libgstcoreelements_la-gsttee.lo: gsttee.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoreelements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoreelements_la_CFLAGS) $(CFLAGS) -MT libgstcoreelements_la-gsttee.lo -MD -MP -MF $(DEPDIR)/libgstcoreelements_la-gsttee.Tpo -c -o libgstcoreelements_la-gsttee.lo `test -f 'gsttee.c' || echo '$(srcdir)/'`gsttee.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoreelements_la-gsttee.Tpo $(DEPDIR)/libgstcoreelements_la-gsttee.Plo
diff --git a/plugins/elements/gstdownloadbuffer.c b/plugins/elements/gstdownloadbuffer.c
new file mode 100644
index 0000000..9b155fc
--- /dev/null
+++ b/plugins/elements/gstdownloadbuffer.c
@@ -0,0 +1,1894 @@
+/* GStreamer
+ * Copyright (C) 2014 Wim Taymans <wim.taymans@gmail.com>
+ *
+ * gstdownloadbuffer.c:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-downloadbuffer
+ *
+ * The downloadbuffer element provides on-disk buffering and caching of, typically,
+ * a network file. temp-template should be set to a value such as
+ * /tmp/gstreamer-XXXXXX and the element will allocate a random free filename and
+ * buffer the data in the file.
+ *
+ * With max-size-bytes and max-size-time you can configure the buffering limits.
+ * The downloadbuffer element will try to read-ahead these amounts of data. When
+ * the amount of read-ahead data drops below low-percent of the configured max,
+ * the element will start emiting BUFFERING messages until high-percent of max is
+ * reached again.
+ *
+ * The downloadbuffer provides push and pull based scheduling on its source pad
+ * and will efficiently seek in the upstream element when needed.
+ *
+ * The temp-location property will be used to notify the application of the
+ * allocated filename.
+ *
+ * When the downloadbuffer has completely downloaded the media, it will
+ * post an application message named  <classname>&quot;GstCacheDownloadComplete&quot;</classname>
+ * with the following information:
+ * <itemizedlist>
+ * <listitem>
+ *   <para>
+ *   G_TYPE_STRING
+ *   <classname>&quot;location&quot;</classname>:
+ *   the location of the completely downloaded file.
+ *   </para>
+ * </listitem>
+ * </itemizedlist>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstdownloadbuffer.h"
+
+#include <glib/gstdio.h>
+
+#include "gst/gst-i18n-lib.h"
+#include "gst/glib-compat-private.h"
+
+#include <string.h>
+
+#ifdef G_OS_WIN32
+#include <io.h>                 /* lseek, open, close, read */
+#undef lseek
+#define lseek _lseeki64
+#undef off_t
+#define off_t guint64
+#else
+#include <unistd.h>
+#endif
+
+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);
+
+GST_DEBUG_CATEGORY_STATIC (downloadbuffer_debug);
+#define GST_CAT_DEFAULT (downloadbuffer_debug)
+
+enum
+{
+  LAST_SIGNAL
+};
+
+/* other defines */
+#define DEFAULT_BUFFER_SIZE 4096
+
+/* default property values */
+#define DEFAULT_MAX_SIZE_BYTES     (2 * 1024 * 1024)    /* 2 MB */
+#define DEFAULT_MAX_SIZE_TIME      2 * GST_SECOND       /* 2 seconds */
+#define DEFAULT_LOW_PERCENT        10
+#define DEFAULT_HIGH_PERCENT       99
+#define DEFAULT_TEMP_REMOVE        TRUE
+
+enum
+{
+  PROP_0,
+  PROP_MAX_SIZE_BYTES,
+  PROP_MAX_SIZE_TIME,
+  PROP_LOW_PERCENT,
+  PROP_HIGH_PERCENT,
+  PROP_TEMP_TEMPLATE,
+  PROP_TEMP_LOCATION,
+  PROP_TEMP_REMOVE,
+  PROP_LAST
+};
+
+#define GST_DOWNLOAD_BUFFER_CLEAR_LEVEL(l) G_STMT_START {         \
+  l.bytes = 0;                                          \
+  l.time = 0;                                           \
+} G_STMT_END
+
+#define STATUS(elem, pad, msg) \
+  GST_LOG_OBJECT (elem, "(%s:%s) " msg ": %u of %u " \
+                      "bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
+                      " ns", \
+                      GST_DEBUG_PAD_NAME (pad), \
+                      elem->cur_level.bytes, \
+                      elem->max_level.bytes, \
+                      elem->cur_level.time, \
+                      elem->max_level.time)
+
+#define GST_DOWNLOAD_BUFFER_MUTEX_LOCK(q) G_STMT_START {                          \
+  g_mutex_lock (&q->qlock);                                              \
+} G_STMT_END
+
+#define GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK(q,res,label) G_STMT_START {         \
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK (q);                                            \
+  if (res != GST_FLOW_OK)                                               \
+    goto label;                                                         \
+} G_STMT_END
+
+#define GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK(q) G_STMT_START {                        \
+  g_mutex_unlock (&q->qlock);                                            \
+} G_STMT_END
+
+#define GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK(q, res, o, label) G_STMT_START {       \
+  STATUS (q, q->srcpad, "wait for ADD");                            \
+  q->waiting_add = TRUE;                                                \
+  q->waiting_offset = o;                                                \
+  g_cond_wait (&q->item_add, &q->qlock);                                \
+  q->waiting_add = FALSE;                                               \
+  if (res != GST_FLOW_OK) {                                             \
+    STATUS (q, q->srcpad, "received ADD wakeup");                   \
+    goto label;                                                         \
+  }                                                                     \
+  STATUS (q, q->srcpad, "received ADD");                            \
+} G_STMT_END
+
+#define GST_DOWNLOAD_BUFFER_SIGNAL_ADD(q, o) G_STMT_START {                       \
+  if (q->waiting_add && q->waiting_offset <= o) {                       \
+    STATUS (q, q->sinkpad, "signal ADD");                               \
+    g_cond_signal (&q->item_add);                                       \
+  }                                                                     \
+} G_STMT_END
+
+#define _do_init \
+    GST_DEBUG_CATEGORY_INIT (downloadbuffer_debug, "downloadbuffer", 0, \
+        "downloadbuffer element");
+
+#define gst_download_buffer_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstDownloadBuffer, gst_download_buffer,
+    GST_TYPE_ELEMENT, _do_init);
+
+static void update_buffering (GstDownloadBuffer * dlbuf);
+
+static void gst_download_buffer_finalize (GObject * object);
+
+static void gst_download_buffer_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_download_buffer_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec);
+
+static GstFlowReturn gst_download_buffer_chain (GstPad * pad,
+    GstObject * parent, GstBuffer * buffer);
+static void gst_download_buffer_loop (GstPad * pad);
+
+static gboolean gst_download_buffer_handle_sink_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
+static gboolean gst_download_buffer_handle_sink_query (GstPad * pad,
+    GstObject * parent, GstQuery * query);
+
+static gboolean gst_download_buffer_handle_src_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
+static gboolean gst_download_buffer_handle_src_query (GstPad * pad,
+    GstObject * parent, GstQuery * query);
+static gboolean gst_download_buffer_handle_query (GstElement * element,
+    GstQuery * query);
+
+static GstFlowReturn gst_download_buffer_get_range (GstPad * pad,
+    GstObject * parent, guint64 offset, guint length, GstBuffer ** buffer);
+
+static gboolean gst_download_buffer_src_activate_mode (GstPad * pad,
+    GstObject * parent, GstPadMode mode, gboolean active);
+static gboolean gst_download_buffer_sink_activate_mode (GstPad * pad,
+    GstObject * parent, GstPadMode mode, gboolean active);
+static GstStateChangeReturn gst_download_buffer_change_state (GstElement *
+    element, GstStateChange transition);
+
+/* static guint gst_download_buffer_signals[LAST_SIGNAL] = { 0 }; */
+
+static void
+gst_download_buffer_class_init (GstDownloadBufferClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+  gobject_class->set_property = gst_download_buffer_set_property;
+  gobject_class->get_property = gst_download_buffer_get_property;
+
+  /* properties */
+  g_object_class_install_property (gobject_class, PROP_MAX_SIZE_BYTES,
+      g_param_spec_uint ("max-size-bytes", "Max. size (kB)",
+          "Max. amount of data to buffer (bytes, 0=disable)",
+          0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME,
+      g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
+          "Max. amount of data to buffer (in ns, 0=disable)", 0, G_MAXUINT64,
+          DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_LOW_PERCENT,
+      g_param_spec_int ("low-percent", "Low percent",
+          "Low threshold for buffering to start. Only used if use-buffering is True",
+          0, 100, DEFAULT_LOW_PERCENT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_HIGH_PERCENT,
+      g_param_spec_int ("high-percent", "High percent",
+          "High threshold for buffering to finish. Only used if use-buffering is True",
+          0, 100, DEFAULT_HIGH_PERCENT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_TEMP_TEMPLATE,
+      g_param_spec_string ("temp-template", "Temporary File Template",
+          "File template to store temporary files in, should contain directory "
+          "and XXXXXX. (NULL == disabled)",
+          NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_TEMP_LOCATION,
+      g_param_spec_string ("temp-location", "Temporary File Location",
+          "Location to store temporary files in (Only read this property, "
+          "use temp-template to configure the name template)",
+          NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GstDownloadBuffer:temp-remove
+   *
+   * When temp-template is set, remove the temporary file when going to READY.
+   */
+  g_object_class_install_property (gobject_class, PROP_TEMP_REMOVE,
+      g_param_spec_boolean ("temp-remove", "Remove the Temporary File",
+          "Remove the temp-location after use",
+          DEFAULT_TEMP_REMOVE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  /* set several parent class virtual functions */
+  gobject_class->finalize = gst_download_buffer_finalize;
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&sinktemplate));
+
+  gst_element_class_set_static_metadata (gstelement_class, "DownloadBuffer",
+      "Generic", "Download Buffer element",
+      "Wim Taymans <wim.taymans@gmail.com>");
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_download_buffer_change_state);
+  gstelement_class->query =
+      GST_DEBUG_FUNCPTR (gst_download_buffer_handle_query);
+}
+
+static void
+gst_download_buffer_init (GstDownloadBuffer * dlbuf)
+{
+  dlbuf->sinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink");
+
+  gst_pad_set_chain_function (dlbuf->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_chain));
+  gst_pad_set_activatemode_function (dlbuf->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_sink_activate_mode));
+  gst_pad_set_event_function (dlbuf->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_handle_sink_event));
+  gst_pad_set_query_function (dlbuf->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_handle_sink_query));
+  GST_PAD_SET_PROXY_CAPS (dlbuf->sinkpad);
+  gst_element_add_pad (GST_ELEMENT (dlbuf), dlbuf->sinkpad);
+
+  dlbuf->srcpad = gst_pad_new_from_static_template (&srctemplate, "src");
+
+  gst_pad_set_activatemode_function (dlbuf->srcpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_src_activate_mode));
+  gst_pad_set_getrange_function (dlbuf->srcpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_get_range));
+  gst_pad_set_event_function (dlbuf->srcpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_handle_src_event));
+  gst_pad_set_query_function (dlbuf->srcpad,
+      GST_DEBUG_FUNCPTR (gst_download_buffer_handle_src_query));
+  GST_PAD_SET_PROXY_CAPS (dlbuf->srcpad);
+  gst_element_add_pad (GST_ELEMENT (dlbuf), dlbuf->srcpad);
+
+  /* levels */
+  GST_DOWNLOAD_BUFFER_CLEAR_LEVEL (dlbuf->cur_level);
+  dlbuf->max_level.bytes = DEFAULT_MAX_SIZE_BYTES;
+  dlbuf->max_level.time = DEFAULT_MAX_SIZE_TIME;
+  dlbuf->low_percent = DEFAULT_LOW_PERCENT;
+  dlbuf->high_percent = DEFAULT_HIGH_PERCENT;
+
+  dlbuf->srcresult = GST_FLOW_FLUSHING;
+  dlbuf->sinkresult = GST_FLOW_FLUSHING;
+  dlbuf->in_timer = g_timer_new ();
+  dlbuf->out_timer = g_timer_new ();
+
+  g_mutex_init (&dlbuf->qlock);
+  dlbuf->waiting_add = FALSE;
+  g_cond_init (&dlbuf->item_add);
+
+  dlbuf->buffering_percent = 100;
+
+  /* tempfile related */
+  dlbuf->temp_template = NULL;
+  dlbuf->temp_location = NULL;
+  dlbuf->temp_remove = DEFAULT_TEMP_REMOVE;
+}
+
+/* called only once, as opposed to dispose */
+static void
+gst_download_buffer_finalize (GObject * object)
+{
+  GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (object);
+
+  g_mutex_clear (&dlbuf->qlock);
+  g_cond_clear (&dlbuf->item_add);
+  g_timer_destroy (dlbuf->in_timer);
+  g_timer_destroy (dlbuf->out_timer);
+
+  /* temp_file path cleanup  */
+  g_free (dlbuf->temp_template);
+  g_free (dlbuf->temp_location);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+reset_rate_timer (GstDownloadBuffer * dlbuf)
+{
+  dlbuf->bytes_in = 0;
+  dlbuf->bytes_out = 0;
+  dlbuf->byte_in_rate = 0.0;
+  dlbuf->byte_in_period = 0;
+  dlbuf->byte_out_rate = 0.0;
+  dlbuf->last_in_elapsed = 0.0;
+  dlbuf->last_out_elapsed = 0.0;
+  dlbuf->in_timer_started = FALSE;
+  dlbuf->out_timer_started = FALSE;
+}
+
+/* the interval in seconds to recalculate the rate */
+#define RATE_INTERVAL    0.2
+/* Tuning for rate estimation. We use a large window for the input rate because
+ * it should be stable when connected to a network. The output rate is less
+ * stable (the elements preroll, queues behind a demuxer fill, ...) and should
+ * therefore adapt more quickly.
+ * However, initial input rate may be subject to a burst, and should therefore
+ * initially also adapt more quickly to changes, and only later on give higher
+ * weight to previous values. */
+#define AVG_IN(avg,val,w1,w2)  ((avg) * (w1) + (val) * (w2)) / ((w1) + (w2))
+#define AVG_OUT(avg,val) ((avg) * 3.0 + (val)) / 4.0
+
+static void
+update_time_level (GstDownloadBuffer * dlbuf)
+{
+  if (dlbuf->byte_in_rate > 0.0) {
+    dlbuf->cur_level.time =
+        dlbuf->cur_level.bytes / dlbuf->byte_in_rate * GST_SECOND;
+  }
+  GST_DEBUG ("levels: bytes %u/%u, time %" GST_TIME_FORMAT "/%" GST_TIME_FORMAT,
+      dlbuf->cur_level.bytes, dlbuf->max_level.bytes,
+      GST_TIME_ARGS (dlbuf->cur_level.time),
+      GST_TIME_ARGS (dlbuf->max_level.time));
+  /* update the buffering */
+  update_buffering (dlbuf);
+}
+
+static void
+update_levels (GstDownloadBuffer * dlbuf, guint bytes)
+{
+  dlbuf->cur_level.bytes = bytes;
+  update_time_level (dlbuf);
+}
+
+static void
+update_in_rates (GstDownloadBuffer * dlbuf)
+{
+  gdouble elapsed, period;
+  gdouble byte_in_rate;
+
+  if (!dlbuf->in_timer_started) {
+    dlbuf->in_timer_started = TRUE;
+    g_timer_start (dlbuf->in_timer);
+    return;
+  }
+
+  elapsed = g_timer_elapsed (dlbuf->in_timer, NULL);
+
+  /* recalc after each interval. */
+  if (dlbuf->last_in_elapsed + RATE_INTERVAL < elapsed) {
+    period = elapsed - dlbuf->last_in_elapsed;
+
+    GST_DEBUG_OBJECT (dlbuf,
+        "rates: period %f, in %" G_GUINT64_FORMAT ", global period %f",
+        period, dlbuf->bytes_in, dlbuf->byte_in_period);
+
+    byte_in_rate = dlbuf->bytes_in / period;
+
+    if (dlbuf->byte_in_rate == 0.0)
+      dlbuf->byte_in_rate = byte_in_rate;
+    else
+      dlbuf->byte_in_rate = AVG_IN (dlbuf->byte_in_rate, byte_in_rate,
+          (double) dlbuf->byte_in_period, period);
+
+    /* another data point, cap at 16 for long time running average */
+    if (dlbuf->byte_in_period < 16 * RATE_INTERVAL)
+      dlbuf->byte_in_period += period;
+
+    /* reset the values to calculate rate over the next interval */
+    dlbuf->last_in_elapsed = elapsed;
+    dlbuf->bytes_in = 0;
+    GST_DEBUG_OBJECT (dlbuf, "rates: in %f", dlbuf->byte_in_rate);
+  }
+}
+
+static void
+update_out_rates (GstDownloadBuffer * dlbuf)
+{
+  gdouble elapsed, period;
+  gdouble byte_out_rate;
+
+  if (!dlbuf->out_timer_started) {
+    dlbuf->out_timer_started = TRUE;
+    g_timer_start (dlbuf->out_timer);
+    return;
+  }
+
+  elapsed = g_timer_elapsed (dlbuf->out_timer, NULL);
+
+  /* recalc after each interval. */
+  if (dlbuf->last_out_elapsed + RATE_INTERVAL < elapsed) {
+    period = elapsed - dlbuf->last_out_elapsed;
+
+    GST_DEBUG_OBJECT (dlbuf,
+        "rates: period %f, out %" G_GUINT64_FORMAT, period, dlbuf->bytes_out);
+
+    byte_out_rate = dlbuf->bytes_out / period;
+
+    if (dlbuf->byte_out_rate == 0.0)
+      dlbuf->byte_out_rate = byte_out_rate;
+    else
+      dlbuf->byte_out_rate = AVG_OUT (dlbuf->byte_out_rate, byte_out_rate);
+
+    /* reset the values to calculate rate over the next interval */
+    dlbuf->last_out_elapsed = elapsed;
+    dlbuf->bytes_out = 0;
+    GST_DEBUG_OBJECT (dlbuf, "rates: out %f", dlbuf->byte_out_rate);
+  }
+}
+
+static gboolean
+get_buffering_percent (GstDownloadBuffer * dlbuf, gboolean * is_buffering,
+    gint * percent)
+{
+  gint perc;
+
+  if (dlbuf->high_percent <= 0) {
+    if (percent)
+      *percent = 100;
+    if (is_buffering)
+      *is_buffering = FALSE;
+    return FALSE;
+  }
+
+  /* Ensure the variables used to calculate buffering state are up-to-date. */
+  update_in_rates (dlbuf);
+  update_out_rates (dlbuf);
+
+  /* figure out the percent we are filled, we take the max of all formats. */
+  if (dlbuf->max_level.bytes > 0) {
+    if (dlbuf->cur_level.bytes >= dlbuf->max_level.bytes)
+      perc = 100;
+    else
+      perc = dlbuf->cur_level.bytes * 100 / dlbuf->max_level.bytes;
+  } else
+    perc = 0;
+
+  if (dlbuf->max_level.time > 0) {
+    if (dlbuf->cur_level.time >= dlbuf->max_level.time)
+      perc = 100;
+    else
+      perc = MAX (perc, dlbuf->cur_level.time * 100 / dlbuf->max_level.time);
+  } else
+    perc = MAX (0, perc);
+
+  if (is_buffering)
+    *is_buffering = dlbuf->is_buffering;
+
+  /* scale to high percent so that it becomes the 100% mark */
+  perc = perc * 100 / dlbuf->high_percent;
+  /* clip */
+  if (perc > 100)
+    perc = 100;
+
+  if (percent)
+    *percent = perc;
+
+  GST_DEBUG_OBJECT (dlbuf, "buffering %d, percent %d", dlbuf->is_buffering,
+      perc);
+
+  return TRUE;
+}
+
+static void
+get_buffering_stats (GstDownloadBuffer * dlbuf, gint percent,
+    GstBufferingMode * mode, gint * avg_in, gint * avg_out,
+    gint64 * buffering_left)
+{
+  if (mode)
+    *mode = GST_BUFFERING_DOWNLOAD;
+
+  if (avg_in)
+    *avg_in = dlbuf->byte_in_rate;
+  if (avg_out)
+    *avg_out = dlbuf->byte_out_rate;
+
+  if (buffering_left) {
+    guint64 max, cur;
+
+    *buffering_left = (percent == 100 ? 0 : -1);
+
+    max = dlbuf->max_level.time;
+    cur = dlbuf->cur_level.time;
+
+    if (percent != 100 && max > cur)
+      *buffering_left = (max - cur) / 1000000;
+  }
+}
+
+static void
+update_buffering (GstDownloadBuffer * dlbuf)
+{
+  gint percent;
+  gboolean post = FALSE;
+
+  if (!get_buffering_percent (dlbuf, NULL, &percent))
+    return;
+
+  if (dlbuf->is_buffering) {
+    post = TRUE;
+    /* if we were buffering see if we reached the high watermark */
+    if (percent >= dlbuf->high_percent)
+      dlbuf->is_buffering = FALSE;
+  } else {
+    /* we were not buffering, check if we need to start buffering if we drop
+     * below the low threshold */
+    if (percent < dlbuf->low_percent) {
+      dlbuf->is_buffering = TRUE;
+      post = TRUE;
+    }
+  }
+
+  if (post) {
+    if (percent == dlbuf->buffering_percent)
+      post = FALSE;
+    else
+      dlbuf->buffering_percent = percent;
+  }
+
+  if (post) {
+    GstMessage *message;
+    GstBufferingMode mode;
+    gint avg_in, avg_out;
+    gint64 buffering_left;
+
+    get_buffering_stats (dlbuf, percent, &mode, &avg_in, &avg_out,
+        &buffering_left);
+
+    message = gst_message_new_buffering (GST_OBJECT_CAST (dlbuf),
+        (gint) percent);
+    gst_message_set_buffering_stats (message, mode,
+        avg_in, avg_out, buffering_left);
+
+    gst_element_post_message (GST_ELEMENT_CAST (dlbuf), message);
+  }
+}
+
+static gboolean
+perform_seek_to_offset (GstDownloadBuffer * dlbuf, guint64 offset)
+{
+  GstEvent *event;
+  gboolean res;
+
+  if (dlbuf->seeking)
+    return TRUE;
+
+  /* until we receive the FLUSH_STOP from this seek, we skip data */
+  dlbuf->seeking = TRUE;
+  dlbuf->write_pos = offset;
+  dlbuf->filling = FALSE;
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  GST_DEBUG_OBJECT (dlbuf, "Seeking to %" G_GUINT64_FORMAT, offset);
+
+  event =
+      gst_event_new_seek (1.0, GST_FORMAT_BYTES,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, offset,
+      GST_SEEK_TYPE_NONE, -1);
+
+  res = gst_pad_push_event (dlbuf->sinkpad, event);
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+
+  return res;
+}
+
+/* get the threshold for when we decide to seek rather than wait */
+static guint64
+get_seek_threshold (GstDownloadBuffer * dlbuf)
+{
+  guint64 threshold;
+
+  /* FIXME, find a good threshold based on the incoming rate. */
+  threshold = 1024 * 512;
+
+  return threshold;
+}
+
+static void
+gst_download_buffer_update_upstream_size (GstDownloadBuffer * dlbuf)
+{
+  gint64 upstream_size = 0;
+
+  if (gst_pad_peer_query_duration (dlbuf->sinkpad, GST_FORMAT_BYTES,
+          &upstream_size)) {
+    GST_INFO_OBJECT (dlbuf, "upstream size: %" G_GINT64_FORMAT, upstream_size);
+    dlbuf->upstream_size = upstream_size;
+  }
+}
+
+/* called with DOWNLOAD_BUFFER_MUTEX */
+static GstFlowReturn
+gst_download_buffer_wait_for_data (GstDownloadBuffer * dlbuf, guint64 offset,
+    guint length)
+{
+  gsize start, stop;
+  guint64 wanted;
+  gboolean started;
+
+  GST_DEBUG_OBJECT (dlbuf, "wait for %" G_GUINT64_FORMAT ", length %u",
+      offset, length);
+
+  wanted = offset + length;
+
+  /* pause the timer while we wait. The fact that we are waiting does not mean
+   * the byterate on the output pad is lower */
+  if ((started = dlbuf->out_timer_started))
+    g_timer_stop (dlbuf->out_timer);
+
+  /* check range before us */
+  if (gst_sparse_file_get_range_before (dlbuf->file, offset, &start, &stop)) {
+    GST_DEBUG_OBJECT (dlbuf,
+        "range before %" G_GSIZE_FORMAT " - %" G_GSIZE_FORMAT, start, stop);
+    if (start <= offset && offset < stop) {
+      GST_DEBUG_OBJECT (dlbuf, "we have the offset");
+      /* we have the range, continue it */
+      offset = stop;
+    } else {
+      guint64 threshold, dist;
+
+      /* there is a range before us, check how far away it is */
+      threshold = get_seek_threshold (dlbuf);
+      dist = offset - stop;
+
+      if (dist <= threshold) {
+        GST_DEBUG_OBJECT (dlbuf, "not too far");
+        /* not far away, continue it */
+        offset = stop;
+      }
+    }
+  }
+
+  if (dlbuf->write_pos != offset)
+    perform_seek_to_offset (dlbuf, offset);
+
+  dlbuf->filling = TRUE;
+  if (dlbuf->write_pos > dlbuf->read_pos)
+    update_levels (dlbuf, dlbuf->write_pos - dlbuf->read_pos);
+  else
+    update_levels (dlbuf, 0);
+
+  /* now wait for more data */
+  GST_DEBUG_OBJECT (dlbuf, "waiting for more data");
+  GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK (dlbuf, dlbuf->srcresult, wanted,
+      out_flushing);
+  GST_DEBUG_OBJECT (dlbuf, "got more data");
+
+  /* and continue if we were running before */
+  if (started)
+    g_timer_continue (dlbuf->out_timer);
+
+  return GST_FLOW_OK;
+
+out_flushing:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "we are flushing");
+    return GST_FLOW_FLUSHING;
+  }
+}
+
+static gboolean
+check_upstream_size (GstDownloadBuffer * dlbuf, gsize offset, guint * length)
+{
+  gsize stop = offset + *length;
+  /* catch any reads beyond the size of the file here to make sure cache
+   * doesn't send seek events beyond the size of the file upstream, since
+   * that would confuse elements such as souphttpsrc and/or http servers.
+   * Demuxers often just loop until EOS at the end of the file to figure out
+   * when they've read all the end-headers or index chunks. */
+  if (G_UNLIKELY (dlbuf->upstream_size == -1 || stop >= dlbuf->upstream_size)) {
+    gst_download_buffer_update_upstream_size (dlbuf);
+  }
+
+  if (dlbuf->upstream_size != -1) {
+    if (offset >= dlbuf->upstream_size)
+      return FALSE;
+
+    if (G_UNLIKELY (stop > dlbuf->upstream_size)) {
+      *length = dlbuf->upstream_size - offset;
+      GST_DEBUG_OBJECT (dlbuf, "adjusting length downto %u", *length);
+    }
+  }
+  return TRUE;
+}
+
+/* called with DOWNLOAD_BUFFER_MUTEX */
+static GstFlowReturn
+gst_download_buffer_read_buffer (GstDownloadBuffer * dlbuf, guint64 offset,
+    guint length, GstBuffer ** buffer)
+{
+  GstBuffer *buf;
+  GstMapInfo info;
+  GstFlowReturn ret = GST_FLOW_OK;
+  gsize res, remaining;
+  GError *error = NULL;
+
+  length = (length == -1) ? DEFAULT_BUFFER_SIZE : length;
+  offset = (offset == -1) ? dlbuf->read_pos : offset;
+
+  if (!check_upstream_size (dlbuf, offset, &length))
+    goto hit_eos;
+
+  /* allocate the output buffer of the requested size */
+  if (*buffer == NULL)
+    buf = gst_buffer_new_allocate (NULL, length, NULL);
+  else
+    buf = *buffer;
+
+  gst_buffer_map (buf, &info, GST_MAP_WRITE);
+
+  GST_DEBUG_OBJECT (dlbuf, "Reading %u bytes from %" G_GUINT64_FORMAT, length,
+      offset);
+
+  dlbuf->read_pos = offset;
+
+  do {
+    res =
+        gst_sparse_file_read (dlbuf->file, offset, info.data, length,
+        &remaining, &error);
+    if (G_UNLIKELY (res == 0)) {
+      switch (error->code) {
+        case GST_SPARSE_FILE_IO_ERROR_WOULD_BLOCK:
+          /* we don't have the requested data in the file, decide what to
+           * do next. */
+          ret = gst_download_buffer_wait_for_data (dlbuf, offset, length);
+          if (ret != GST_FLOW_OK)
+            goto out_flushing;
+          break;
+        default:
+          goto read_error;
+      }
+      g_clear_error (&error);
+    }
+  } while (res == 0);
+
+  gst_buffer_unmap (buf, &info);
+  gst_buffer_resize (buf, 0, res);
+
+  dlbuf->bytes_out += res;
+  dlbuf->read_pos += res;
+
+  GST_DEBUG_OBJECT (dlbuf,
+      "Read %" G_GSIZE_FORMAT " bytes, remaining %" G_GSIZE_FORMAT, res,
+      remaining);
+
+  if (dlbuf->read_pos + remaining == dlbuf->upstream_size)
+    update_levels (dlbuf, dlbuf->max_level.bytes);
+  else
+    update_levels (dlbuf, remaining);
+
+  GST_BUFFER_OFFSET (buf) = offset;
+  GST_BUFFER_OFFSET_END (buf) = offset + res;
+
+  *buffer = buf;
+
+  return ret;
+
+  /* ERRORS */
+hit_eos:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "EOS hit");
+    return GST_FLOW_EOS;
+  }
+out_flushing:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "we are flushing");
+    gst_buffer_unmap (buf, &info);
+    if (*buffer == NULL)
+      gst_buffer_unref (buf);
+    return GST_FLOW_FLUSHING;
+  }
+read_error:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "we have a read error: %s", error->message);
+    g_clear_error (&error);
+    gst_buffer_unmap (buf, &info);
+    if (*buffer == NULL)
+      gst_buffer_unref (buf);
+    return ret;
+  }
+}
+
+/* must be called with MUTEX_LOCK. Will briefly release the lock when notifying
+ * the temp filename. */
+static gboolean
+gst_download_buffer_open_temp_location_file (GstDownloadBuffer * dlbuf)
+{
+  gint fd = -1;
+  gchar *name = NULL;
+
+  if (dlbuf->file)
+    goto already_opened;
+
+  GST_DEBUG_OBJECT (dlbuf, "opening temp file %s", dlbuf->temp_template);
+
+  /* If temp_template was set, allocate a filename and open that filen */
+
+  /* nothing to do */
+  if (dlbuf->temp_template == NULL)
+    goto no_directory;
+
+  /* make copy of the template, we don't want to change this */
+  name = g_strdup (dlbuf->temp_template);
+  fd = g_mkstemp (name);
+  if (fd == -1)
+    goto mkstemp_failed;
+
+  /* open the file for update/writing */
+  dlbuf->file = gst_sparse_file_new ();
+  /* error creating file */
+  if (!gst_sparse_file_set_fd (dlbuf->file, fd))
+    goto open_failed;
+
+  g_free (dlbuf->temp_location);
+  dlbuf->temp_location = name;
+  dlbuf->temp_fd = fd;
+
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  /* we can't emit the notify with the lock */
+  g_object_notify (G_OBJECT (dlbuf), "temp-location");
+
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+
+  GST_DEBUG_OBJECT (dlbuf, "opened temp file %s", dlbuf->temp_template);
+
+  return TRUE;
+
+  /* ERRORS */
+already_opened:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "temp file was already open");
+    return TRUE;
+  }
+no_directory:
+  {
+    GST_ELEMENT_ERROR (dlbuf, RESOURCE, NOT_FOUND,
+        (_("No Temp directory specified.")), (NULL));
+    return FALSE;
+  }
+mkstemp_failed:
+  {
+    GST_ELEMENT_ERROR (dlbuf, RESOURCE, OPEN_READ,
+        (_("Could not create temp file \"%s\"."), dlbuf->temp_template),
+        GST_ERROR_SYSTEM);
+    g_free (name);
+    return FALSE;
+  }
+open_failed:
+  {
+    GST_ELEMENT_ERROR (dlbuf, RESOURCE, OPEN_READ,
+        (_("Could not open file \"%s\" for reading."), name), GST_ERROR_SYSTEM);
+    g_free (name);
+    if (fd != -1)
+      close (fd);
+    return FALSE;
+  }
+}
+
+static void
+gst_download_buffer_close_temp_location_file (GstDownloadBuffer * dlbuf)
+{
+  /* nothing to do */
+  if (dlbuf->file == NULL)
+    return;
+
+  GST_DEBUG_OBJECT (dlbuf, "closing sparse file");
+
+  if (dlbuf->temp_remove) {
+    if (remove (dlbuf->temp_location) < 0) {
+      GST_WARNING_OBJECT (dlbuf, "Failed to remove temporary file %s: %s",
+          dlbuf->temp_location, g_strerror (errno));
+    }
+  }
+  gst_sparse_file_free (dlbuf->file);
+  close (dlbuf->temp_fd);
+  dlbuf->file = NULL;
+}
+
+static void
+gst_download_buffer_flush_temp_file (GstDownloadBuffer * dlbuf)
+{
+  if (dlbuf->file == NULL)
+    return;
+
+  GST_DEBUG_OBJECT (dlbuf, "flushing temp file");
+
+  gst_sparse_file_clear (dlbuf->file);
+}
+
+static void
+gst_download_buffer_locked_flush (GstDownloadBuffer * dlbuf, gboolean full,
+    gboolean clear_temp)
+{
+  if (clear_temp)
+    gst_download_buffer_flush_temp_file (dlbuf);
+  GST_DOWNLOAD_BUFFER_CLEAR_LEVEL (dlbuf->cur_level);
+  gst_event_replace (&dlbuf->stream_start_event, NULL);
+  gst_event_replace (&dlbuf->segment_event, NULL);
+}
+
+static gboolean
+gst_download_buffer_handle_sink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  gboolean ret = TRUE;
+  GstDownloadBuffer *dlbuf;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_START:
+    {
+      GST_LOG_OBJECT (dlbuf, "received flush start event");
+      if (GST_PAD_MODE (dlbuf->srcpad) == GST_PAD_MODE_PUSH) {
+        /* forward event */
+        ret = gst_pad_push_event (dlbuf->srcpad, event);
+
+        /* now unblock the chain function */
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        dlbuf->srcresult = GST_FLOW_FLUSHING;
+        dlbuf->sinkresult = GST_FLOW_FLUSHING;
+        /* unblock the loop and chain functions */
+        GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, -1);
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+        /* make sure it pauses, this should happen since we sent
+         * flush_start downstream. */
+        gst_pad_pause_task (dlbuf->srcpad);
+        GST_LOG_OBJECT (dlbuf, "loop stopped");
+      } else {
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        /* flush the sink pad */
+        dlbuf->sinkresult = GST_FLOW_FLUSHING;
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+        gst_event_unref (event);
+      }
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:
+    {
+      GST_LOG_OBJECT (dlbuf, "received flush stop event");
+
+      if (GST_PAD_MODE (dlbuf->srcpad) == GST_PAD_MODE_PUSH) {
+        /* forward event */
+        ret = gst_pad_push_event (dlbuf->srcpad, event);
+
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        gst_download_buffer_locked_flush (dlbuf, FALSE, TRUE);
+        dlbuf->srcresult = GST_FLOW_OK;
+        dlbuf->sinkresult = GST_FLOW_OK;
+        dlbuf->unexpected = FALSE;
+        dlbuf->seeking = FALSE;
+        /* reset rate counters */
+        reset_rate_timer (dlbuf);
+        gst_pad_start_task (dlbuf->srcpad,
+            (GstTaskFunction) gst_download_buffer_loop, dlbuf->srcpad, NULL);
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+      } else {
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        dlbuf->unexpected = FALSE;
+        dlbuf->sinkresult = GST_FLOW_OK;
+        dlbuf->seeking = FALSE;
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+        gst_event_unref (event);
+      }
+      break;
+    }
+    default:
+      if (GST_EVENT_IS_SERIALIZED (event)) {
+        /* serialized events go in the buffer */
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->sinkresult,
+            out_flushing);
+        switch (GST_EVENT_TYPE (event)) {
+          case GST_EVENT_EOS:
+            GST_DEBUG_OBJECT (dlbuf, "we have EOS");
+            /* Zero the thresholds, this makes sure the dlbuf is completely
+             * filled and we can read all data from the dlbuf. */
+            /* update the buffering status */
+            update_levels (dlbuf, dlbuf->max_level.bytes);
+            /* wakeup the waiter and let it recheck */
+            GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, -1);
+            break;
+          case GST_EVENT_SEGMENT:
+            gst_event_replace (&dlbuf->segment_event, event);
+            /* a new segment allows us to accept more buffers if we got EOS
+             * from downstream */
+            dlbuf->unexpected = FALSE;
+            break;
+          case GST_EVENT_STREAM_START:
+            gst_event_replace (&dlbuf->stream_start_event, event);
+            break;
+          default:
+            break;
+        }
+        gst_event_unref (event);
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+      } else {
+        /* non-serialized events are passed upstream. */
+        ret = gst_pad_push_event (dlbuf->srcpad, event);
+      }
+      break;
+  }
+  return ret;
+
+  /* ERRORS */
+out_flushing:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "refusing event, we are flushing");
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+    gst_event_unref (event);
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_download_buffer_handle_sink_query (GstPad * pad, GstObject * parent,
+    GstQuery * query)
+{
+  GstDownloadBuffer *dlbuf;
+  gboolean res;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  switch (GST_QUERY_TYPE (query)) {
+    default:
+      if (GST_QUERY_IS_SERIALIZED (query)) {
+        GST_LOG_OBJECT (dlbuf, "received query %p", query);
+        GST_DEBUG_OBJECT (dlbuf, "refusing query, we are not using the dlbuf");
+        res = FALSE;
+      } else {
+        res = gst_pad_query_default (pad, parent, query);
+      }
+      break;
+  }
+  return res;
+}
+
+static GstFlowReturn
+gst_download_buffer_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  GstDownloadBuffer *dlbuf;
+  GstMapInfo info;
+  guint64 offset;
+  gsize res, available;
+  GError *error = NULL;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  GST_LOG_OBJECT (dlbuf, "received buffer %p of "
+      "size %" G_GSIZE_FORMAT ", time %" GST_TIME_FORMAT ", duration %"
+      GST_TIME_FORMAT, buffer, gst_buffer_get_size (buffer),
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)),
+      GST_TIME_ARGS (GST_BUFFER_DURATION (buffer)));
+
+  /* we have to lock the dlbuf since we span threads */
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->sinkresult, out_flushing);
+  /* when we received unexpected from downstream, refuse more buffers */
+  if (dlbuf->unexpected)
+    goto out_eos;
+
+  /* while we didn't receive the newsegment, we're seeking and we skip data */
+  if (dlbuf->seeking)
+    goto out_seeking;
+
+  /* put buffer in dlbuf now */
+  offset = dlbuf->write_pos;
+
+  /* sanity check */
+  if (GST_BUFFER_OFFSET_IS_VALID (buffer) &&
+      GST_BUFFER_OFFSET (buffer) != offset) {
+    GST_WARNING_OBJECT (dlbuf, "buffer offset does not match current writing "
+        "position! %" G_GINT64_FORMAT " != %" G_GINT64_FORMAT,
+        GST_BUFFER_OFFSET (buffer), offset);
+  }
+
+  gst_buffer_map (buffer, &info, GST_MAP_READ);
+
+  GST_DEBUG_OBJECT (dlbuf, "Writing %" G_GSIZE_FORMAT " bytes to %"
+      G_GUINT64_FORMAT, info.size, offset);
+
+  res =
+      gst_sparse_file_write (dlbuf->file, offset, info.data, info.size,
+      &available, &error);
+  if (res == 0)
+    goto write_error;
+
+  gst_buffer_unmap (buffer, &info);
+  gst_buffer_unref (buffer);
+
+  dlbuf->write_pos = offset + info.size;
+  dlbuf->bytes_in += info.size;
+
+  GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, dlbuf->write_pos + available);
+
+  /* we hit the end, see what to do */
+  if (dlbuf->write_pos + available == dlbuf->upstream_size) {
+    gsize start, stop;
+
+    /* we have everything up to the end, find a region to fill */
+    if (gst_sparse_file_get_range_after (dlbuf->file, 0, &start, &stop)) {
+      if (stop < dlbuf->upstream_size) {
+        /* a hole to fill, seek to its end */
+        perform_seek_to_offset (dlbuf, stop);
+      } else {
+        /* we filled all the holes, we are done */
+        goto completed;
+      }
+    }
+  } else {
+    /* see if we need to skip this region or just read it again. The idea
+     * is that when the region is not big, we want to avoid a seek and just
+     * let it reread */
+    guint64 threshold = get_seek_threshold (dlbuf);
+
+    if (available > threshold) {
+      /* further than threshold, it's better to skip than to reread */
+      perform_seek_to_offset (dlbuf, dlbuf->write_pos + available);
+    }
+  }
+  if (dlbuf->filling) {
+    if (dlbuf->write_pos > dlbuf->read_pos)
+      update_levels (dlbuf, dlbuf->write_pos - dlbuf->read_pos);
+    else
+      update_levels (dlbuf, 0);
+  }
+
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  return GST_FLOW_OK;
+
+  /* ERRORS */
+out_flushing:
+  {
+    GstFlowReturn ret = dlbuf->sinkresult;
+    GST_LOG_OBJECT (dlbuf,
+        "exit because task paused, reason: %s", gst_flow_get_name (ret));
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+    gst_buffer_unref (buffer);
+    return ret;
+  }
+out_eos:
+  {
+    GST_LOG_OBJECT (dlbuf, "exit because we received EOS");
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+    gst_buffer_unref (buffer);
+    return GST_FLOW_EOS;
+  }
+out_seeking:
+  {
+    GST_LOG_OBJECT (dlbuf, "exit because we are seeking");
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+    gst_buffer_unref (buffer);
+    return GST_FLOW_OK;
+  }
+write_error:
+  {
+    gst_buffer_unmap (buffer, &info);
+    gst_buffer_unref (buffer);
+    GST_ELEMENT_ERROR (dlbuf, RESOURCE, WRITE,
+        (_("Error while writing to download file.")), ("%s", error->message));
+    g_clear_error (&error);
+    return GST_FLOW_ERROR;
+  }
+completed:
+  {
+    GST_LOG_OBJECT (dlbuf, "we completed the download");
+    dlbuf->write_pos = dlbuf->upstream_size;
+    dlbuf->filling = FALSE;
+    update_levels (dlbuf, dlbuf->max_level.bytes);
+    gst_element_post_message (GST_ELEMENT_CAST (dlbuf),
+        gst_message_new_element (GST_OBJECT_CAST (dlbuf),
+            gst_structure_new ("GstCacheDownloadComplete",
+                "location", G_TYPE_STRING, dlbuf->temp_location, NULL)));
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+    return GST_FLOW_EOS;
+  }
+}
+
+/* called repeatedly with @pad as the source pad. This function should push out
+ * data to the peer element. */
+static void
+gst_download_buffer_loop (GstPad * pad)
+{
+  GstDownloadBuffer *dlbuf;
+  GstFlowReturn ret;
+  GstBuffer *buffer = NULL;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (GST_PAD_PARENT (pad));
+
+  /* have to lock for thread-safety */
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->srcresult, out_flushing);
+
+  if (dlbuf->stream_start_event != NULL) {
+    gst_pad_push_event (dlbuf->srcpad, dlbuf->stream_start_event);
+    dlbuf->stream_start_event = NULL;
+  }
+  if (dlbuf->segment_event != NULL) {
+    gst_pad_push_event (dlbuf->srcpad, dlbuf->segment_event);
+    dlbuf->segment_event = NULL;
+  }
+
+  ret = gst_download_buffer_read_buffer (dlbuf, -1, -1, &buffer);
+  if (ret != GST_FLOW_OK)
+    goto out_flushing;
+
+  g_atomic_int_set (&dlbuf->downstream_may_block, 1);
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  ret = gst_pad_push (dlbuf->srcpad, buffer);
+  g_atomic_int_set (&dlbuf->downstream_may_block, 0);
+
+  /* need to check for srcresult here as well */
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->srcresult, out_flushing);
+  dlbuf->srcresult = ret;
+  dlbuf->sinkresult = ret;
+  if (ret != GST_FLOW_OK)
+    goto out_flushing;
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  return;
+
+  /* ERRORS */
+out_flushing:
+  {
+    GstFlowReturn ret = dlbuf->srcresult;
+
+    gst_pad_pause_task (dlbuf->srcpad);
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+    GST_LOG_OBJECT (dlbuf, "pause task, reason:  %s", gst_flow_get_name (ret));
+    /* let app know about us giving up if upstream is not expected to do so */
+    if (ret == GST_FLOW_EOS) {
+      /* FIXME perform EOS logic, this is really a basesrc operating on a
+       * file. */
+      gst_pad_push_event (dlbuf->srcpad, gst_event_new_eos ());
+    } else if ((ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS)) {
+      GST_ELEMENT_ERROR (dlbuf, STREAM, FAILED,
+          (_("Internal data flow error.")),
+          ("streaming task paused, reason %s (%d)",
+              gst_flow_get_name (ret), ret));
+      gst_pad_push_event (dlbuf->srcpad, gst_event_new_eos ());
+    }
+    return;
+  }
+}
+
+static gboolean
+gst_download_buffer_handle_src_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  gboolean res = TRUE;
+  GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+#ifndef GST_DISABLE_GST_DEBUG
+  GST_DEBUG_OBJECT (dlbuf, "got event %p (%s)",
+      event, GST_EVENT_TYPE_NAME (event));
+#endif
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_START:
+      /* now unblock the getrange function */
+      GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+      GST_DEBUG_OBJECT (dlbuf, "flushing");
+      dlbuf->srcresult = GST_FLOW_FLUSHING;
+      GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, -1);
+      GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+      /* when using a temp file, we eat the event */
+      res = TRUE;
+      gst_event_unref (event);
+      break;
+    case GST_EVENT_FLUSH_STOP:
+      /* now unblock the getrange function */
+      GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+      dlbuf->srcresult = GST_FLOW_OK;
+      GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+      /* when using a temp file, we eat the event */
+      res = TRUE;
+      gst_event_unref (event);
+      break;
+    case GST_EVENT_RECONFIGURE:
+      GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+      /* assume downstream is linked now and try to push again */
+      if (dlbuf->srcresult == GST_FLOW_NOT_LINKED) {
+        dlbuf->srcresult = GST_FLOW_OK;
+        dlbuf->sinkresult = GST_FLOW_OK;
+        if (GST_PAD_MODE (pad) == GST_PAD_MODE_PUSH) {
+          gst_pad_start_task (pad, (GstTaskFunction) gst_download_buffer_loop,
+              pad, NULL);
+        }
+      }
+      GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+      res = gst_pad_push_event (dlbuf->sinkpad, event);
+      break;
+    default:
+      res = gst_pad_push_event (dlbuf->sinkpad, event);
+      break;
+  }
+
+  return res;
+}
+
+static gboolean
+gst_download_buffer_handle_src_query (GstPad * pad, GstObject * parent,
+    GstQuery * query)
+{
+  GstDownloadBuffer *dlbuf;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+    {
+      gint64 peer_pos;
+      GstFormat format;
+
+      if (!gst_pad_peer_query (dlbuf->sinkpad, query))
+        goto peer_failed;
+
+      /* get peer position */
+      gst_query_parse_position (query, &format, &peer_pos);
+
+      /* FIXME: this code assumes that there's no discont in the dlbuf */
+      switch (format) {
+        case GST_FORMAT_BYTES:
+          peer_pos -= dlbuf->cur_level.bytes;
+          break;
+        case GST_FORMAT_TIME:
+          peer_pos -= dlbuf->cur_level.time;
+          break;
+        default:
+          GST_WARNING_OBJECT (dlbuf, "dropping query in %s format, don't "
+              "know how to adjust value", gst_format_get_name (format));
+          return FALSE;
+      }
+      /* set updated position */
+      gst_query_set_position (query, format, peer_pos);
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GST_DEBUG_OBJECT (dlbuf, "doing peer query");
+
+      if (!gst_pad_peer_query (dlbuf->sinkpad, query))
+        goto peer_failed;
+
+      GST_DEBUG_OBJECT (dlbuf, "peer query success");
+      break;
+    }
+    case GST_QUERY_BUFFERING:
+    {
+      gint percent;
+      gboolean is_buffering;
+      GstBufferingMode mode;
+      gint avg_in, avg_out;
+      gint64 buffering_left;
+
+      GST_DEBUG_OBJECT (dlbuf, "query buffering");
+
+      get_buffering_percent (dlbuf, &is_buffering, &percent);
+      gst_query_set_buffering_percent (query, is_buffering, percent);
+
+      get_buffering_stats (dlbuf, percent, &mode, &avg_in, &avg_out,
+          &buffering_left);
+      gst_query_set_buffering_stats (query, mode, avg_in, avg_out,
+          buffering_left);
+
+      {
+        /* add ranges for download and ringbuffer buffering */
+        GstFormat format;
+        gint64 start, stop;
+        guint64 write_pos;
+        gint64 estimated_total;
+        gint64 duration;
+        gsize offset, range_start, range_stop;
+
+        write_pos = dlbuf->write_pos;
+
+        /* get duration of upstream in bytes */
+        gst_download_buffer_update_upstream_size (dlbuf);
+        duration = dlbuf->upstream_size;
+
+        GST_DEBUG_OBJECT (dlbuf, "percent %d, duration %" G_GINT64_FORMAT
+            ", writing %" G_GINT64_FORMAT, percent, duration, write_pos);
+
+        /* calculate remaining and total download time */
+        if (duration > write_pos && avg_in > 0.0)
+          estimated_total = ((duration - write_pos) * 1000) / avg_in;
+        else
+          estimated_total = -1;
+
+        GST_DEBUG_OBJECT (dlbuf, "estimated-total %" G_GINT64_FORMAT,
+            estimated_total);
+
+        gst_query_parse_buffering_range (query, &format, NULL, NULL, NULL);
+
+        switch (format) {
+          case GST_FORMAT_PERCENT:
+            start = 0;
+            /* get our available data relative to the duration */
+            if (duration != -1)
+              stop =
+                  gst_util_uint64_scale (GST_FORMAT_PERCENT_MAX, write_pos,
+                  duration);
+            else
+              stop = -1;
+            break;
+          case GST_FORMAT_BYTES:
+            start = 0;
+            stop = write_pos;
+            break;
+          default:
+            start = -1;
+            stop = -1;
+            break;
+        }
+
+        gst_query_set_buffering_range (query, format, start, stop,
+            estimated_total);
+
+        /* fill out the buffered ranges */
+        offset = 0;
+        while (gst_sparse_file_get_range_after (dlbuf->file, offset,
+                &range_start, &range_stop)) {
+          offset = range_stop;
+
+          switch (format) {
+            case GST_FORMAT_PERCENT:
+              if (duration == -1) {
+                range_start = 0;
+                range_stop = 0;
+              } else {
+                range_start = gst_util_uint64_scale (GST_FORMAT_PERCENT_MAX,
+                    range_start, duration);
+                range_stop = gst_util_uint64_scale (GST_FORMAT_PERCENT_MAX,
+                    range_stop, duration);
+              }
+              break;
+            case GST_FORMAT_BYTES:
+              break;
+            default:
+              range_start = -1;
+              range_stop = -1;
+              break;
+          }
+          if (range_start == range_stop)
+            continue;
+          GST_DEBUG_OBJECT (dlbuf,
+              "range starting at %" G_GSIZE_FORMAT " and finishing at %"
+              G_GSIZE_FORMAT, range_start, range_stop);
+          gst_query_add_buffering_range (query, range_start, range_stop);
+        }
+      }
+      break;
+    }
+    case GST_QUERY_SCHEDULING:
+    {
+      GstSchedulingFlags flags = 0;
+
+      if (!gst_pad_peer_query (dlbuf->sinkpad, query))
+        goto peer_failed;
+
+      gst_query_parse_scheduling (query, &flags, NULL, NULL, NULL);
+
+      /* we can operate in pull mode when we are using a tempfile */
+      flags |= GST_SCHEDULING_FLAG_SEEKABLE;
+      gst_query_set_scheduling (query, flags, 0, -1, 0);
+      gst_query_add_scheduling_mode (query, GST_PAD_MODE_PULL);
+      gst_query_add_scheduling_mode (query, GST_PAD_MODE_PUSH);
+      break;
+    }
+    default:
+      /* peer handled other queries */
+      if (!gst_pad_query_default (pad, parent, query))
+        goto peer_failed;
+      break;
+  }
+
+  return TRUE;
+
+  /* ERRORS */
+peer_failed:
+  {
+    GST_DEBUG_OBJECT (dlbuf, "failed peer query");
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_download_buffer_handle_query (GstElement * element, GstQuery * query)
+{
+  GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (element);
+
+  /* simply forward to the srcpad query function */
+  return gst_download_buffer_handle_src_query (dlbuf->srcpad,
+      GST_OBJECT_CAST (element), query);
+}
+
+static GstFlowReturn
+gst_download_buffer_get_range (GstPad * pad, GstObject * parent, guint64 offset,
+    guint length, GstBuffer ** buffer)
+{
+  GstDownloadBuffer *dlbuf;
+  GstFlowReturn ret;
+
+  dlbuf = GST_DOWNLOAD_BUFFER_CAST (parent);
+
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->srcresult, out_flushing);
+  /* FIXME - function will block when the range is not yet available */
+  ret = gst_download_buffer_read_buffer (dlbuf, offset, length, buffer);
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+  return ret;
+
+  /* ERRORS */
+out_flushing:
+  {
+    ret = dlbuf->srcresult;
+
+    GST_DEBUG_OBJECT (dlbuf, "we are flushing");
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+    return ret;
+  }
+}
+
+/* sink currently only operates in push mode */
+static gboolean
+gst_download_buffer_sink_activate_mode (GstPad * pad, GstObject * parent,
+    GstPadMode mode, gboolean active)
+{
+  gboolean result;
+  GstDownloadBuffer *dlbuf;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  switch (mode) {
+    case GST_PAD_MODE_PUSH:
+      if (active) {
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        GST_DEBUG_OBJECT (dlbuf, "activating push mode");
+        dlbuf->srcresult = GST_FLOW_OK;
+        dlbuf->sinkresult = GST_FLOW_OK;
+        dlbuf->unexpected = FALSE;
+        reset_rate_timer (dlbuf);
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+      } else {
+        /* unblock chain function */
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        GST_DEBUG_OBJECT (dlbuf, "deactivating push mode");
+        dlbuf->srcresult = GST_FLOW_FLUSHING;
+        dlbuf->sinkresult = GST_FLOW_FLUSHING;
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+        /* wait until it is unblocked and clean up */
+        GST_PAD_STREAM_LOCK (pad);
+        GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+        gst_download_buffer_locked_flush (dlbuf, TRUE, FALSE);
+        GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+        GST_PAD_STREAM_UNLOCK (pad);
+      }
+      result = TRUE;
+      break;
+    default:
+      result = FALSE;
+      break;
+  }
+  return result;
+}
+
+/* src operating in push mode, we start a task on the source pad that pushes out
+ * buffers from the dlbuf */
+static gboolean
+gst_download_buffer_src_activate_push (GstPad * pad, GstObject * parent,
+    gboolean active)
+{
+  gboolean result = FALSE;
+  GstDownloadBuffer *dlbuf;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  if (active) {
+    GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+    GST_DEBUG_OBJECT (dlbuf, "activating push mode");
+    dlbuf->srcresult = GST_FLOW_OK;
+    dlbuf->sinkresult = GST_FLOW_OK;
+    dlbuf->unexpected = FALSE;
+    result =
+        gst_pad_start_task (pad, (GstTaskFunction) gst_download_buffer_loop,
+        pad, NULL);
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+  } else {
+    /* unblock loop function */
+    GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+    GST_DEBUG_OBJECT (dlbuf, "deactivating push mode");
+    dlbuf->srcresult = GST_FLOW_FLUSHING;
+    dlbuf->sinkresult = GST_FLOW_FLUSHING;
+    /* the item add signal will unblock */
+    GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, -1);
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+
+    /* step 2, make sure streaming finishes */
+    result = gst_pad_stop_task (pad);
+  }
+
+  return result;
+}
+
+/* pull mode, downstream will call our getrange function */
+static gboolean
+gst_download_buffer_src_activate_pull (GstPad * pad, GstObject * parent,
+    gboolean active)
+{
+  gboolean result;
+  GstDownloadBuffer *dlbuf;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (parent);
+
+  if (active) {
+    GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+    /* open the temp file now */
+    result = gst_download_buffer_open_temp_location_file (dlbuf);
+    GST_DEBUG_OBJECT (dlbuf, "activating pull mode");
+    dlbuf->srcresult = GST_FLOW_OK;
+    dlbuf->sinkresult = GST_FLOW_OK;
+    dlbuf->unexpected = FALSE;
+    dlbuf->upstream_size = 0;
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+  } else {
+    GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+    GST_DEBUG_OBJECT (dlbuf, "deactivating pull mode");
+    dlbuf->srcresult = GST_FLOW_FLUSHING;
+    dlbuf->sinkresult = GST_FLOW_FLUSHING;
+    /* this will unlock getrange */
+    GST_DOWNLOAD_BUFFER_SIGNAL_ADD (dlbuf, -1);
+    result = TRUE;
+    GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+  }
+
+  return result;
+}
+
+static gboolean
+gst_download_buffer_src_activate_mode (GstPad * pad, GstObject * parent,
+    GstPadMode mode, gboolean active)
+{
+  gboolean res;
+
+  switch (mode) {
+    case GST_PAD_MODE_PULL:
+      res = gst_download_buffer_src_activate_pull (pad, parent, active);
+      break;
+    case GST_PAD_MODE_PUSH:
+      res = gst_download_buffer_src_activate_push (pad, parent, active);
+      break;
+    default:
+      GST_LOG_OBJECT (pad, "unknown activation mode %d", mode);
+      res = FALSE;
+      break;
+  }
+  return res;
+}
+
+static GstStateChangeReturn
+gst_download_buffer_change_state (GstElement * element,
+    GstStateChange transition)
+{
+  GstDownloadBuffer *dlbuf;
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+  dlbuf = GST_DOWNLOAD_BUFFER (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+      if (!gst_download_buffer_open_temp_location_file (dlbuf))
+        ret = GST_STATE_CHANGE_FAILURE;
+      gst_event_replace (&dlbuf->stream_start_event, NULL);
+      gst_event_replace (&dlbuf->segment_event, NULL);
+      GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+      gst_download_buffer_close_temp_location_file (dlbuf);
+      gst_event_replace (&dlbuf->stream_start_event, NULL);
+      gst_event_replace (&dlbuf->segment_event, NULL);
+      GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+#define CAPACITY_CHANGE(elem) \
+  update_buffering (elem);
+
+static void
+gst_download_buffer_set_temp_template (GstDownloadBuffer * dlbuf,
+    const gchar * template)
+{
+  GstState state;
+
+  /* the element must be stopped in order to do this */
+  GST_OBJECT_LOCK (dlbuf);
+  state = GST_STATE (dlbuf);
+  if (state != GST_STATE_READY && state != GST_STATE_NULL)
+    goto wrong_state;
+  GST_OBJECT_UNLOCK (dlbuf);
+
+  /* set new location */
+  g_free (dlbuf->temp_template);
+  dlbuf->temp_template = g_strdup (template);
+
+  return;
+
+/* ERROR */
+wrong_state:
+  {
+    GST_WARNING_OBJECT (dlbuf, "setting temp-template property in wrong state");
+    GST_OBJECT_UNLOCK (dlbuf);
+  }
+}
+
+static void
+gst_download_buffer_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+  GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (object);
+
+  /* someone could change levels here, and since this
+   * affects the get/put funcs, we need to lock for safety. */
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+
+  switch (prop_id) {
+    case PROP_MAX_SIZE_BYTES:
+      dlbuf->max_level.bytes = g_value_get_uint (value);
+      CAPACITY_CHANGE (dlbuf);
+      break;
+    case PROP_MAX_SIZE_TIME:
+      dlbuf->max_level.time = g_value_get_uint64 (value);
+      CAPACITY_CHANGE (dlbuf);
+      break;
+    case PROP_LOW_PERCENT:
+      dlbuf->low_percent = g_value_get_int (value);
+      break;
+    case PROP_HIGH_PERCENT:
+      dlbuf->high_percent = g_value_get_int (value);
+      break;
+    case PROP_TEMP_TEMPLATE:
+      gst_download_buffer_set_temp_template (dlbuf, g_value_get_string (value));
+      break;
+    case PROP_TEMP_REMOVE:
+      dlbuf->temp_remove = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+}
+
+static void
+gst_download_buffer_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec)
+{
+  GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (object);
+
+  GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf);
+
+  switch (prop_id) {
+    case PROP_MAX_SIZE_BYTES:
+      g_value_set_uint (value, dlbuf->max_level.bytes);
+      break;
+    case PROP_MAX_SIZE_TIME:
+      g_value_set_uint64 (value, dlbuf->max_level.time);
+      break;
+    case PROP_LOW_PERCENT:
+      g_value_set_int (value, dlbuf->low_percent);
+      break;
+    case PROP_HIGH_PERCENT:
+      g_value_set_int (value, dlbuf->high_percent);
+      break;
+    case PROP_TEMP_TEMPLATE:
+      g_value_set_string (value, dlbuf->temp_template);
+      break;
+    case PROP_TEMP_LOCATION:
+      g_value_set_string (value, dlbuf->temp_location);
+      break;
+    case PROP_TEMP_REMOVE:
+      g_value_set_boolean (value, dlbuf->temp_remove);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+
+  GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf);
+}
diff --git a/plugins/elements/gstdownloadbuffer.h b/plugins/elements/gstdownloadbuffer.h
new file mode 100644
index 0000000..f38cdd9
--- /dev/null
+++ b/plugins/elements/gstdownloadbuffer.h
@@ -0,0 +1,128 @@
+/* GStreamer
+ * Copyright (C) 2014 Wim Taymans <wim.taymans@gmail.com>
+ *
+ * gstdownloadbuffer.h:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef __GST_DOWNLOAD_BUFFER_H__
+#define __GST_DOWNLOAD_BUFFER_H__
+
+#include <gst/gst.h>
+#include <stdio.h>
+
+#include "gstsparsefile.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DOWNLOAD_BUFFER \
+  (gst_download_buffer_get_type())
+#define GST_DOWNLOAD_BUFFER(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DOWNLOAD_BUFFER,GstDownloadBuffer))
+#define GST_DOWNLOAD_BUFFER_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DOWNLOAD_BUFFER,GstDownloadBufferClass))
+#define GST_IS_DOWNLOAD_BUFFER(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DOWNLOAD_BUFFER))
+#define GST_IS_DOWNLOAD_BUFFER_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DOWNLOAD_BUFFER))
+#define GST_DOWNLOAD_BUFFER_CAST(obj) \
+  ((GstDownloadBuffer *)(obj))
+
+typedef struct _GstDownloadBuffer GstDownloadBuffer;
+typedef struct _GstDownloadBufferClass GstDownloadBufferClass;
+typedef struct _GstDownloadBufferSize GstDownloadBufferSize;
+
+/* used to keep track of sizes (current and max) */
+struct _GstDownloadBufferSize
+{
+  guint bytes;
+  guint64 time;
+};
+
+struct _GstDownloadBuffer
+{
+  GstElement element;
+
+  /*< private > */
+  GstPad *sinkpad;
+  GstPad *srcpad;
+
+  /* upstream size in bytes (if downstream is operating in pull mode) */
+  guint64 upstream_size;
+
+  /* flowreturn when srcpad is paused */
+  GstFlowReturn srcresult;
+  GstFlowReturn sinkresult;
+  gboolean unexpected;
+
+  /* the queue of data we're keeping our hands on */
+  GstSparseFile *file;
+  guint64 write_pos;
+  guint64 read_pos;
+  gboolean filling;
+
+  GstDownloadBufferSize cur_level;
+  GstDownloadBufferSize max_level;
+  gint low_percent;             /* low/high watermarks for buffering */
+  gint high_percent;
+
+  /* current buffering state */
+  gboolean is_buffering;
+  gint buffering_percent;
+
+  /* for measuring input/output rates */
+  GTimer *in_timer;
+  gboolean in_timer_started;
+  gdouble last_in_elapsed;
+  guint64 bytes_in;
+  gdouble byte_in_rate;
+  gdouble byte_in_period;
+
+  GTimer *out_timer;
+  gboolean out_timer_started;
+  gdouble last_out_elapsed;
+  guint64 bytes_out;
+  gdouble byte_out_rate;
+
+  GMutex qlock;                /* lock for queue (vs object lock) */
+  gboolean waiting_add;
+  GCond item_add;              /* signals buffers now available for reading */
+  guint64 waiting_offset;
+
+  /* temp location stuff */
+  gchar *temp_template;
+  gboolean temp_location_set;
+  gchar *temp_location;
+  gboolean temp_remove;
+  gint temp_fd;
+  gboolean seeking;
+
+  GstEvent *stream_start_event;
+  GstEvent *segment_event;
+
+  volatile gint downstream_may_block;
+};
+
+struct _GstDownloadBufferClass
+{
+  GstElementClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_download_buffer_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_DOWNLOAD_BUFFER_H__ */
diff --git a/plugins/elements/gstelements.c b/plugins/elements/gstelements.c
index 23f85c1..93d3a9a 100644
--- a/plugins/elements/gstelements.c
+++ b/plugins/elements/gstelements.c
@@ -28,6 +28,7 @@
 #include <gst/gst.h>
 
 #include "gstcapsfilter.h"
+#include "gstdownloadbuffer.h"
 #include "gstfakesink.h"
 #include "gstfakesrc.h"
 #include "gstfdsrc.h"
@@ -51,6 +52,9 @@
   if (!gst_element_register (plugin, "capsfilter", GST_RANK_NONE,
           gst_capsfilter_get_type ()))
     return FALSE;
+  if (!gst_element_register (plugin, "downloadbuffer", GST_RANK_NONE,
+          gst_download_buffer_get_type ()))
+    return FALSE;
   if (!gst_element_register (plugin, "fakesrc", GST_RANK_NONE,
           gst_fake_src_get_type ()))
     return FALSE;
diff --git a/plugins/elements/gstfilesrc.c b/plugins/elements/gstfilesrc.c
index 536ea6b..dd4e811 100644
--- a/plugins/elements/gstfilesrc.c
+++ b/plugins/elements/gstfilesrc.c
@@ -630,7 +630,7 @@
    * form. Correct this.
    */
   if (location[0] == '\\' && location[1] == '\\' && location[2] == '\\')
-    g_memmove (location, location + 1, strlen (location + 1) + 1);
+    memmove (location, location + 1, strlen (location + 1) + 1);
 #endif
 
   ret = gst_file_src_set_location (src, location);
diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c
index 51b4390..8f81f8f 100644
--- a/plugins/elements/gstmultiqueue.c
+++ b/plugins/elements/gstmultiqueue.c
@@ -38,7 +38,7 @@
  *     achieve such a feature it has request sink pads (sink&percnt;u) and
  *     'sometimes' src pads (src&percnt;u).
  *   </para><para>
- *     When requesting a given sinkpad with gst_element_get_request_pad(),
+ *     When requesting a given sinkpad with gst_element_request_pad(),
  *     the associated srcpad for that stream will be created.
  *     Example: requesting sink1 will generate src1.
  *   </para></listitem>
diff --git a/plugins/elements/gstsparsefile.c b/plugins/elements/gstsparsefile.c
new file mode 100644
index 0000000..fb9b26c
--- /dev/null
+++ b/plugins/elements/gstsparsefile.c
@@ -0,0 +1,668 @@
+/* GStreamer
+ * Copyright (C) 2014 Wim Taymans <wtaymans@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/gst.h>
+#include <glib/gstdio.h>
+
+#include "gstsparsefile.h"
+
+#ifdef G_OS_WIN32
+#include <io.h>                 /* lseek, open, close, read */
+#undef lseek
+#define lseek _lseeki64
+#undef off_t
+#define off_t guint64
+#else
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_FSEEKO
+#define FSEEK_FILE(file,offset)  (fseeko (file, (off_t) offset, SEEK_SET) != 0)
+#elif defined (G_OS_UNIX) || defined (G_OS_WIN32)
+#define FSEEK_FILE(file,offset)  (lseek (fileno (file), (off_t) offset, SEEK_SET) == (off_t) -1)
+#else
+#define FSEEK_FILE(file,offset)  (fseek (file, offset, SEEK_SET) != 0)
+#endif
+
+#define GST_SPARSE_FILE_IO_ERROR \
+    g_quark_from_static_string("gst-sparse-file-io-error-quark")
+
+static GstSparseFileIOErrorEnum
+gst_sparse_file_io_error_from_errno (gint err_no);
+
+typedef struct _GstSparseRange GstSparseRange;
+
+struct _GstSparseRange
+{
+  GstSparseRange *next;
+
+  gsize start;
+  gsize stop;
+};
+
+#define RANGE_CONTAINS(r,o) ((r)->start <= (o) && (r)->stop > (o))
+
+struct _GstSparseFile
+{
+  gint fd;
+  FILE *file;
+  gsize current_pos;
+
+  GstSparseRange *ranges;
+  guint n_ranges;
+
+  GstSparseRange *write_range;
+  GstSparseRange *read_range;
+};
+
+static GstSparseRange *
+get_write_range (GstSparseFile * file, gsize offset)
+{
+  GstSparseRange *next, *prev, *result = NULL;
+
+  if (file->write_range && file->write_range->stop == offset)
+    return file->write_range;
+
+  prev = NULL;
+  next = file->ranges;
+  while (next) {
+    if (next->start > offset)
+      break;
+
+    if (next->stop >= offset) {
+      result = next;
+      break;
+    }
+    prev = next;
+    next = next->next;
+  }
+  if (result == NULL) {
+    result = g_slice_new0 (GstSparseRange);
+    result->start = offset;
+    result->stop = offset;
+
+    result->next = next;
+    if (prev)
+      prev->next = result;
+    else
+      file->ranges = result;
+
+    file->write_range = result;
+    file->read_range = NULL;
+
+    file->n_ranges++;
+  }
+  return result;
+}
+
+static GstSparseRange *
+get_read_range (GstSparseFile * file, gsize offset, gsize count)
+{
+  GstSparseRange *walk, *result = NULL;
+
+  if (file->read_range && RANGE_CONTAINS (file->read_range, offset))
+    return file->read_range;
+
+  for (walk = file->ranges; walk; walk = walk->next) {
+    if (walk->start > offset)
+      break;
+
+    if (walk->stop >= offset + count) {
+      result = walk;
+      break;
+    }
+  }
+  return result;
+}
+
+/**
+ * gst_sparse_file_new:
+ *
+ * Make a new #GstSparseFile backed by the file represented with @fd.
+ *
+ * Returns: a new #GstSparseFile, gst_sparse_file_free() after usage.
+ *
+ * Since: 1.4
+ */
+GstSparseFile *
+gst_sparse_file_new (void)
+{
+  GstSparseFile *result;
+
+  result = g_slice_new0 (GstSparseFile);
+  result->current_pos = 0;
+  result->ranges = NULL;
+  result->n_ranges = 0;
+
+  return result;
+}
+
+/**
+ * gst_sparse_file_set_fd:
+ * @file: a #GstSparseFile
+ * @fd: a file descriptor
+ *
+ * Store the data for @file in the file represented with @fd.
+ *
+ * Returns: %TRUE when @fd could be set
+ *
+ * Since: 1.4
+ */
+gboolean
+gst_sparse_file_set_fd (GstSparseFile * file, gint fd)
+{
+  g_return_val_if_fail (file != NULL, FALSE);
+  g_return_val_if_fail (fd != 0, FALSE);
+
+  file->file = fdopen (fd, "wb+");
+  file->fd = fd;
+
+  return file->file != NULL;
+}
+
+/**
+ * gst_sparse_file_clear:
+ * @file: a #GstSparseFile
+ *
+ * Clear all the ranges in @file.
+ */
+void
+gst_sparse_file_clear (GstSparseFile * file)
+{
+  g_return_if_fail (file != NULL);
+
+  if (file->file) {
+    fclose (file->file);
+    file->file = fdopen (file->fd, "wb+");
+  }
+  g_slice_free_chain (GstSparseRange, file->ranges, next);
+  file->current_pos = 0;
+  file->ranges = NULL;
+  file->n_ranges = 0;
+}
+
+/**
+ * gst_sparse_file_free:
+ * @file: a #GstSparseFile
+ *
+ * Free the memory used by @file.
+ *
+ * Since: 1.4
+ */
+void
+gst_sparse_file_free (GstSparseFile * file)
+{
+  g_return_if_fail (file != NULL);
+
+  if (file->file) {
+    fflush (file->file);
+    fclose (file->file);
+  }
+  g_slice_free_chain (GstSparseRange, file->ranges, next);
+  g_slice_free (GstSparseFile, file);
+}
+
+/**
+ * gst_sparse_file_write:
+ * @file: a #GstSparseFile
+ * @offset: the offset
+ * @data: the data
+ * @count: amount of bytes
+ * @available: amount of bytes already available
+ * @error: a #GError
+ *
+ * Write @count bytes from @data to @file at @offset.
+ *
+ * If @available is not %NULL, it will be updated with the amount of
+ * data already available after the last written byte.
+ *
+ * Returns: The number of bytes written of 0 on error.
+ *
+ * Since: 1.4
+ */
+gsize
+gst_sparse_file_write (GstSparseFile * file, gsize offset, gconstpointer data,
+    gsize count, gsize * available, GError ** error)
+{
+  GstSparseRange *range, *next;
+  gsize stop;
+
+  g_return_val_if_fail (file != NULL, 0);
+  g_return_val_if_fail (count != 0, 0);
+
+  if (file->file) {
+    if (file->current_pos != offset) {
+      GST_DEBUG ("seeking to %" G_GSIZE_FORMAT, offset);
+      if (FSEEK_FILE (file->file, offset))
+        goto error;
+    }
+    if (fwrite (data, count, 1, file->file) != 1)
+      goto error;
+  }
+
+  file->current_pos = offset + count;
+
+  /* update the new stop position in the range */
+  range = get_write_range (file, offset);
+  stop = offset + count;
+  range->stop = MAX (range->stop, stop);
+
+  /* see if we can merge with next region */
+  while ((next = range->next)) {
+    if (next->start > range->stop)
+      break;
+
+    GST_DEBUG ("merging range %" G_GSIZE_FORMAT "-%" G_GSIZE_FORMAT ", next %"
+        G_GSIZE_FORMAT "-%" G_GSIZE_FORMAT, range->start, range->stop,
+        next->start, next->stop);
+
+    range->stop = MAX (next->stop, range->stop);
+    range->next = next->next;
+
+    if (file->write_range == next)
+      file->write_range = NULL;
+    if (file->read_range == next)
+      file->read_range = NULL;
+    g_slice_free (GstSparseRange, next);
+    file->n_ranges--;
+  }
+  if (available)
+    *available = range->stop - stop;
+
+  return count;
+
+  /* ERRORS */
+error:
+  {
+    g_set_error (error, GST_SPARSE_FILE_IO_ERROR,
+        gst_sparse_file_io_error_from_errno (errno), "Error writing file: %s",
+        g_strerror (errno));
+    return 0;
+  }
+}
+
+/**
+ * gst_sparse_file_read:
+ * @file: a #GstSparseFile
+ * @offset: the offset
+ * @data: the data
+ * @count: amount of bytes
+ * @remaining: amount of bytes remaining
+ * @error: a #GError
+ *
+ * Read @count bytes from @file at @offset into @data.
+ *
+ * On error, @error will be set. If there are no @count bytes available
+ * at @offset, %GST_SPARSE_FILE_IO_ERROR_WOULD_BLOCK is returned.
+ *
+ * @remaining will be set to the amount of bytes remaining in the read
+ * range.
+ *
+ * Returns: The number of bytes read of 0 on error.
+ *
+ * Since: 1.4
+ */
+gsize
+gst_sparse_file_read (GstSparseFile * file, gsize offset, gpointer data,
+    gsize count, gsize * remaining, GError ** error)
+{
+  GstSparseRange *range;
+  gsize res = 0;
+
+  g_return_val_if_fail (file != NULL, 0);
+  g_return_val_if_fail (count != 0, 0);
+
+  if ((range = get_read_range (file, offset, count)) == NULL)
+    goto no_range;
+
+  if (file->file) {
+    if (file->current_pos != offset) {
+      GST_DEBUG ("seeking from %" G_GSIZE_FORMAT " to %" G_GSIZE_FORMAT,
+          file->current_pos, offset);
+      if (FSEEK_FILE (file->file, offset))
+        goto error;
+    }
+    res = fread (data, 1, count, file->file);
+  }
+
+  file->current_pos = offset + res;
+
+  if (G_UNLIKELY (res < count))
+    goto error;
+
+  if (remaining)
+    *remaining = range->stop - file->current_pos;
+
+  return count;
+
+  /* ERRORS */
+no_range:
+  {
+    g_set_error_literal (error, GST_SPARSE_FILE_IO_ERROR,
+        GST_SPARSE_FILE_IO_ERROR_WOULD_BLOCK, "Offset not written to file yet");
+    return 0;
+  }
+error:
+  {
+    if (ferror (file->file)) {
+      g_set_error (error, GST_SPARSE_FILE_IO_ERROR,
+          gst_sparse_file_io_error_from_errno (errno), "Error reading file: %s",
+          g_strerror (errno));
+    } else if (feof (file->file)) {
+      return res;
+    }
+    return 0;
+  }
+}
+
+/**
+ * gst_sparse_file_n_ranges:
+ * @file: a #GstSparseFile
+ *
+ * Get the number of ranges that are written in @file.
+ *
+ * Returns: the number of written ranges.
+ *
+ * Since: 1.4
+ */
+guint
+gst_sparse_file_n_ranges (GstSparseFile * file)
+{
+  g_return_val_if_fail (file != NULL, 0);
+
+  return file->n_ranges;
+}
+
+/**
+ * gst_sparse_file_get_range_before:
+ * @file: a #GstSparseFile
+ * @offset: the range offset
+ * @start: result start
+ * @stop: result stop
+ *
+ * Get the start and stop offset of the range containing data before or
+ * including @offset.
+ *
+ * Returns: %TRUE if the range with data before @offset exists.
+ *
+ * Since: 1.4
+ */
+gboolean
+gst_sparse_file_get_range_before (GstSparseFile * file, gsize offset,
+    gsize * start, gsize * stop)
+{
+  GstSparseRange *walk, *result = NULL;
+
+  g_return_val_if_fail (file != NULL, FALSE);
+
+  for (walk = file->ranges; walk; walk = walk->next) {
+    GST_DEBUG ("start %" G_GSIZE_FORMAT " > %" G_GSIZE_FORMAT,
+        walk->stop, offset);
+    if (walk->start > offset)
+      break;
+
+    if (walk->start <= offset)
+      result = walk;
+  }
+
+  if (result) {
+    if (start)
+      *start = result->start;
+    if (stop)
+      *stop = result->stop;
+  }
+  return result != NULL;
+}
+
+/**
+ * gst_sparse_file_get_range_after:
+ * @file: a #GstSparseFile
+ * @offset: the range offset
+ * @start: result start
+ * @stop: result stop
+ *
+ * Get the start and stop offset of the range containing data after or
+ * including @offset.
+ *
+ * Returns: %TRUE if the range with data after @offset exists.
+ *
+ * Since: 1.4
+ */
+gboolean
+gst_sparse_file_get_range_after (GstSparseFile * file, gsize offset,
+    gsize * start, gsize * stop)
+{
+  GstSparseRange *walk, *result = NULL;
+
+  g_return_val_if_fail (file != NULL, FALSE);
+
+  for (walk = file->ranges; walk; walk = walk->next) {
+    GST_DEBUG ("stop %" G_GSIZE_FORMAT " > %" G_GSIZE_FORMAT,
+        walk->stop, offset);
+    if (walk->stop > offset) {
+      result = walk;
+      break;
+    }
+  }
+  if (result) {
+    if (start)
+      *start = result->start;
+    if (stop)
+      *stop = result->stop;
+  }
+  return result != NULL;
+}
+
+/* we don't want to rely on libgio just for g_io_error_from_errno() */
+static GstSparseFileIOErrorEnum
+gst_sparse_file_io_error_from_errno (gint err_no)
+{
+  switch (err_no) {
+#ifdef EEXIST
+    case EEXIST:
+      return GST_SPARSE_FILE_IO_ERROR_EXISTS;
+      break;
+#endif
+
+#ifdef EISDIR
+    case EISDIR:
+      return GST_SPARSE_FILE_IO_ERROR_IS_DIRECTORY;
+      break;
+#endif
+
+#ifdef EACCES
+    case EACCES:
+      return GST_SPARSE_FILE_IO_ERROR_PERMISSION_DENIED;
+      break;
+#endif
+
+#ifdef ENAMETOOLONG
+    case ENAMETOOLONG:
+      return GST_SPARSE_FILE_IO_ERROR_FILENAME_TOO_LONG;
+      break;
+#endif
+
+#ifdef ENOENT
+    case ENOENT:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_FOUND;
+      break;
+#endif
+
+#ifdef ENOTDIR
+    case ENOTDIR:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_DIRECTORY;
+      break;
+#endif
+
+#ifdef EROFS
+    case EROFS:
+      return GST_SPARSE_FILE_IO_ERROR_READ_ONLY;
+      break;
+#endif
+
+#ifdef ELOOP
+    case ELOOP:
+      return GST_SPARSE_FILE_IO_ERROR_TOO_MANY_LINKS;
+      break;
+#endif
+
+#ifdef ENOSPC
+    case ENOSPC:
+      return GST_SPARSE_FILE_IO_ERROR_NO_SPACE;
+      break;
+#endif
+
+#ifdef ENOMEM
+    case ENOMEM:
+      return GST_SPARSE_FILE_IO_ERROR_NO_SPACE;
+      break;
+#endif
+
+#ifdef EINVAL
+    case EINVAL:
+      return GST_SPARSE_FILE_IO_ERROR_INVALID_ARGUMENT;
+      break;
+#endif
+
+#ifdef EPERM
+    case EPERM:
+      return GST_SPARSE_FILE_IO_ERROR_PERMISSION_DENIED;
+      break;
+#endif
+
+#ifdef ECANCELED
+    case ECANCELED:
+      return GST_SPARSE_FILE_IO_ERROR_CANCELLED;
+      break;
+#endif
+
+      /* ENOTEMPTY == EEXIST on AIX for backward compatibility reasons */
+#if defined (ENOTEMPTY) && (!defined (EEXIST) || (ENOTEMPTY != EEXIST))
+    case ENOTEMPTY:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_EMPTY;
+      break;
+#endif
+
+#ifdef ENOTSUP
+    case ENOTSUP:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED;
+      break;
+#endif
+
+      /* EOPNOTSUPP == ENOTSUP on Linux, but POSIX considers them distinct */
+#if defined (EOPNOTSUPP) && (!defined (ENOTSUP) || (EOPNOTSUPP != ENOTSUP))
+    case EOPNOTSUPP:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED;
+      break;
+#endif
+
+#ifdef EPROTONOSUPPORT
+    case EPROTONOSUPPORT:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED;
+      break;
+#endif
+
+#ifdef ESOCKTNOSUPPORT
+    case ESOCKTNOSUPPORT:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED;
+      break;
+#endif
+
+#ifdef EPFNOSUPPORT
+    case EPFNOSUPPORT:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED;
+      break;
+#endif
+
+#ifdef EAFNOSUPPORT
+    case EAFNOSUPPORT:
+      return GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED;
+      break;
+#endif
+
+#ifdef ETIMEDOUT
+    case ETIMEDOUT:
+      return GST_SPARSE_FILE_IO_ERROR_TIMED_OUT;
+      break;
+#endif
+
+#ifdef EBUSY
+    case EBUSY:
+      return GST_SPARSE_FILE_IO_ERROR_BUSY;
+      break;
+#endif
+
+#ifdef EWOULDBLOCK
+    case EWOULDBLOCK:
+      return GST_SPARSE_FILE_IO_ERROR_WOULD_BLOCK;
+      break;
+#endif
+
+      /* EWOULDBLOCK == EAGAIN on most systems, but POSIX considers them distinct */
+#if defined (EAGAIN) && (!defined (EWOULDBLOCK) || (EWOULDBLOCK != EAGAIN))
+    case EAGAIN:
+      return GST_SPARSE_FILE_IO_ERROR_WOULD_BLOCK;
+      break;
+#endif
+
+#ifdef EMFILE
+    case EMFILE:
+      return GST_SPARSE_FILE_IO_ERROR_TOO_MANY_OPEN_FILES;
+      break;
+#endif
+
+#ifdef EADDRINUSE
+    case EADDRINUSE:
+      return GST_SPARSE_FILE_IO_ERROR_ADDRESS_IN_USE;
+      break;
+#endif
+
+#ifdef EHOSTUNREACH
+    case EHOSTUNREACH:
+      return GST_SPARSE_FILE_IO_ERROR_HOST_UNREACHABLE;
+      break;
+#endif
+
+#ifdef ENETUNREACH
+    case ENETUNREACH:
+      return GST_SPARSE_FILE_IO_ERROR_NETWORK_UNREACHABLE;
+      break;
+#endif
+
+#ifdef ECONNREFUSED
+    case ECONNREFUSED:
+      return GST_SPARSE_FILE_IO_ERROR_CONNECTION_REFUSED;
+      break;
+#endif
+
+#ifdef EPIPE
+    case EPIPE:
+      return GST_SPARSE_FILE_IO_ERROR_BROKEN_PIPE;
+      break;
+#endif
+
+    default:
+      return GST_SPARSE_FILE_IO_ERROR_FAILED;
+      break;
+  }
+}
diff --git a/plugins/elements/gstsparsefile.h b/plugins/elements/gstsparsefile.h
new file mode 100644
index 0000000..76f73d3
--- /dev/null
+++ b/plugins/elements/gstsparsefile.h
@@ -0,0 +1,108 @@
+/* GStreamer
+ * Copyright (C) 2014 Wim Taymans <wtaymans@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+
+#ifndef __GST_SPARSE_FILE_H__
+#define __GST_SPARSE_FILE_H__
+
+G_BEGIN_DECLS
+
+typedef struct _GstSparseFile GstSparseFile;
+
+/* NOTE: Remove this before making this public API again! */
+typedef enum {
+  GST_SPARSE_FILE_IO_ERROR_FAILED,
+  GST_SPARSE_FILE_IO_ERROR_NOT_FOUND,
+  GST_SPARSE_FILE_IO_ERROR_EXISTS,
+  GST_SPARSE_FILE_IO_ERROR_IS_DIRECTORY,
+  GST_SPARSE_FILE_IO_ERROR_NOT_DIRECTORY,
+  GST_SPARSE_FILE_IO_ERROR_NOT_EMPTY,
+  GST_SPARSE_FILE_IO_ERROR_NOT_REGULAR_FILE,
+  GST_SPARSE_FILE_IO_ERROR_NOT_SYMBOLIC_LINK,
+  GST_SPARSE_FILE_IO_ERROR_NOT_MOUNTABLE_FILE,
+  GST_SPARSE_FILE_IO_ERROR_FILENAME_TOO_LONG,
+  GST_SPARSE_FILE_IO_ERROR_INVALID_FILENAME,
+  GST_SPARSE_FILE_IO_ERROR_TOO_MANY_LINKS,
+  GST_SPARSE_FILE_IO_ERROR_NO_SPACE,
+  GST_SPARSE_FILE_IO_ERROR_INVALID_ARGUMENT,
+  GST_SPARSE_FILE_IO_ERROR_PERMISSION_DENIED,
+  GST_SPARSE_FILE_IO_ERROR_NOT_SUPPORTED,
+  GST_SPARSE_FILE_IO_ERROR_NOT_MOUNTED,
+  GST_SPARSE_FILE_IO_ERROR_ALREADY_MOUNTED,
+  GST_SPARSE_FILE_IO_ERROR_CLOSED,
+  GST_SPARSE_FILE_IO_ERROR_CANCELLED,
+  GST_SPARSE_FILE_IO_ERROR_PENDING,
+  GST_SPARSE_FILE_IO_ERROR_READ_ONLY,
+  GST_SPARSE_FILE_IO_ERROR_CANT_CREATE_BACKUP,
+  GST_SPARSE_FILE_IO_ERROR_WRONG_ETAG,
+  GST_SPARSE_FILE_IO_ERROR_TIMED_OUT,
+  GST_SPARSE_FILE_IO_ERROR_WOULD_RECURSE,
+  GST_SPARSE_FILE_IO_ERROR_BUSY,
+  GST_SPARSE_FILE_IO_ERROR_WOULD_BLOCK,
+  GST_SPARSE_FILE_IO_ERROR_HOST_NOT_FOUND,
+  GST_SPARSE_FILE_IO_ERROR_WOULD_MERGE,
+  GST_SPARSE_FILE_IO_ERROR_FAILED_HANDLED,
+  GST_SPARSE_FILE_IO_ERROR_TOO_MANY_OPEN_FILES,
+  GST_SPARSE_FILE_IO_ERROR_NOT_INITIALIZED,
+  GST_SPARSE_FILE_IO_ERROR_ADDRESS_IN_USE,
+  GST_SPARSE_FILE_IO_ERROR_PARTIAL_INPUT,
+  GST_SPARSE_FILE_IO_ERROR_INVALID_DATA,
+  GST_SPARSE_FILE_IO_ERROR_DBUS_ERROR,
+  GST_SPARSE_FILE_IO_ERROR_HOST_UNREACHABLE,
+  GST_SPARSE_FILE_IO_ERROR_NETWORK_UNREACHABLE,
+  GST_SPARSE_FILE_IO_ERROR_CONNECTION_REFUSED,
+  GST_SPARSE_FILE_IO_ERROR_PROXY_FAILED,
+  GST_SPARSE_FILE_IO_ERROR_PROXY_AUTH_FAILED,
+  GST_SPARSE_FILE_IO_ERROR_PROXY_NEED_AUTH,
+  GST_SPARSE_FILE_IO_ERROR_PROXY_NOT_ALLOWED,
+  GST_SPARSE_FILE_IO_ERROR_BROKEN_PIPE
+} GstSparseFileIOErrorEnum;
+
+GstSparseFile * gst_sparse_file_new          (void);
+void            gst_sparse_file_free         (GstSparseFile *file);
+
+gboolean        gst_sparse_file_set_fd       (GstSparseFile *file, gint fd);
+void            gst_sparse_file_clear        (GstSparseFile *file);
+
+gsize           gst_sparse_file_write        (GstSparseFile *file,
+                                              gsize offset,
+                                              gconstpointer data,
+                                              gsize count,
+                                              gsize *available,
+                                              GError **error);
+
+gsize           gst_sparse_file_read         (GstSparseFile *file,
+                                              gsize offset,
+                                              gpointer data,
+                                              gsize count,
+                                              gsize *remaining,
+                                              GError **error);
+
+guint           gst_sparse_file_n_ranges         (GstSparseFile *file);
+
+gboolean        gst_sparse_file_get_range_before (GstSparseFile *file, gsize offset,
+                                                  gsize *start, gsize *stop);
+
+gboolean        gst_sparse_file_get_range_after  (GstSparseFile *file, gsize offset,
+                                                  gsize *start, gsize *stop);
+
+G_END_DECLS
+
+#endif /* __GST_SPARSE_FILE_H__ */
diff --git a/po/af.gmo b/po/af.gmo
index 8eed743..a003f87 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 1d0e10e..05e6c42 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.9.7\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2005-12-05 11:45+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index 0346938..817b8ba 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 9e2c50a..35304db 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2004-03-19 18:40+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/be.gmo b/po/be.gmo
index d82e6d1..fb20e1e 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
index d79ec09..17df9f6 100644
--- a/po/be.po
+++ b/po/be.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.9.7\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2006-01-18 22:26+0200\n"
 "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
 "Language-Team: Belarusian <i18n@mova.org>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 1d8396b..9a69912 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index f09cbab..b0d418b 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2011-04-26 22:40+0300\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 204512b..523af03 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 761b6ec..d76609d 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-11-04 19:41+0100\n"
 "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index 3e06165..5b06522 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 608a8c9..9bd86c9 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-03-09 11:07+0100\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 d1604c3..7e12415 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 9e878cc..f20739f 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-08 12:41+0100\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 249d959..ec5f21e 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 4f03ae1..de774fa 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-16 00:01+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 9bc3816..dbf443c 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index b3f6f07..8192856 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-11-29 11:14+0200\n"
 "Last-Translator: Michael Kotsarinis <mk73628@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 77e59c9..cb3cc8e 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 d575bd0..286f3a1 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2004-04-26 10:36-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index 872b685..0f4ac9d 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 810b4a3..bf2cd42 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2011-06-04 21:11+0100\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index 677203f..28737b5 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index f0f18ce..b8dba1c 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2011-10-02 15:45+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index 15203ed..20e9896 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 6b193a8..eba24dd 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.10.26.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-03-25 13:10+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 9bb488d..967e4e3 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 1dc8881..546784c 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-11-17 23:10+0200\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index 929eb3e..aa5a08f 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 0dea412..c5008de 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2012-12-05 19:31+0100\n"
 "Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
 "Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 80f08a7..bfefd3a 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index a815a5a..f5c69ae 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2012-12-15 03:29+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gstreamer-1.0.pot b/po/gstreamer-1.0.pot
index f98bc82..4f2d989 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.3.1\n"
+"Project-Id-Version: gstreamer 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/po/hr.gmo b/po/hr.gmo
index a434876..b362d0c 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index c4808e2..884b64b 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2012-05-25 16:47+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
diff --git a/po/hu.gmo b/po/hu.gmo
index 2a98415..9f52846 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 1dc4c32..894f409 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-03-20 19:07+0100\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index 8b8848f..5af1967 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index b9f85a7..f3a6ce4 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-01-27 20:09+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 f49fdae..c48af4e 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 56daea8..a3b9ade 100644
--- a/po/it.po
+++ b/po/it.po
@@ -106,7 +106,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-10-25 10:03+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index b021533..4c7453a 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 01c6774..1b7df71 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-08-20 14:56+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index da50b1d..4046b9c 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index d8a9daa..b780937 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.29.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-07-16 00:50+0300\n"
 "Last-Translator: Žygimantas Beručka <uid0@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index 37e4b6a..32b51a2 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index a6a0e50..f492a62 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-10-24 21:36+0200\n"
 "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index d42303c..f07e7f2 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index d6c3805..113ad36 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-01-09 12:55+0100\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 11bc438..bac7893 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 6235871..a38fd3e 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-08 08:57+0100\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 22ef812..e7a32f5 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 ec44ef5..4ad3804 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -17,7 +17,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-29 18:20-0200\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
diff --git a/po/ro.gmo b/po/ro.gmo
index e3720e0..5b5a224 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 34d436f..8f00a80 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.29.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2010-08-16 01:10+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index b734e4e..e180b82 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 0af9cbe..c007c05 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-08 12:44+0400\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 0bbe2d4..5d7d295 100644
--- a/po/rw.gmo
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
index 8674a11..5c64972 100644
--- a/po/rw.po
+++ b/po/rw.po
@@ -15,7 +15,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.8\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2005-04-04 10:55-0700\n"
 "Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
 "Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index 5245eef..3b0dcda 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 0743640..f212d8f 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-01-30 10:24+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index b6e8516..b5e4e40 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 5b1518a..1f10937 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-04-09 22:38+0100\n"
 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index 50545a5..57db438 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 3225da2..ea613bf 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2004-08-07 23:46+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <begraj@hotmail.com>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index 4de7316..90dca6e 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 828ca91..06260b7 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2014-01-13 17:53+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 573812e..9f00d4f 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index c9a77b7..1d3935f 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.31.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2011-01-09 19:46+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 47108f4..37c6430 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 270ddb2..564ff67 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2004-04-03 03:14+0300\n"
 "Last-Translator: Baris Cicek <baris@teamforce.name.tr>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 3de2ca2..81673d7 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 7f28147..92041fc 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-07 22:49+0200\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 6328313..92e2f61 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 59ab3f8..63f770c 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2013-12-11 08:08+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 2da4274..7ba3670 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 1025ad7..ebe071b 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: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\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 63ae07a..8616595 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 fb8dc76..05a79a1 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.8\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-03 17:32+0200\n"
+"POT-Creation-Date: 2014-05-21 11:18+0200\n"
 "PO-Revision-Date: 2005-04-27 14:55+0800\n"
 "Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 6dde80d..9424d0f 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -91,6 +91,7 @@
 	libs/baseparse				\
 	libs/basesrc				\
 	libs/basesink				\
+	libs/sparsefile				\
 	libs/controller				\
 	libs/queuearray				\
 	libs/typefindhelper			\
@@ -142,6 +143,7 @@
 	libs/bitreader-noinline		\
 	libs/bytereader-noinline	\
 	libs/bytewriter-noinline	\
+	libs/sparsefile				\
 	libs/collectpads			\
 	libs/gstnetclientclock			\
 	libs/gstnettimeprovider			\
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index ee04cfc..b9ec027 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -103,8 +103,8 @@
 	libs/bytereader$(EXEEXT) libs/bytewriter$(EXEEXT) \
 	libs/bitreader-noinline$(EXEEXT) \
 	libs/bytereader-noinline$(EXEEXT) \
-	libs/bytewriter-noinline$(EXEEXT) libs/collectpads$(EXEEXT) \
-	libs/gstnetclientclock$(EXEEXT) \
+	libs/bytewriter-noinline$(EXEEXT) libs/sparsefile$(EXEEXT) \
+	libs/collectpads$(EXEEXT) libs/gstnetclientclock$(EXEEXT) \
 	libs/gstnettimeprovider$(EXEEXT) libs/gsttestclock$(EXEEXT) \
 	libs/transform1$(EXEEXT) tools/gstinspect$(EXEEXT)
 noinst_PROGRAMS =
@@ -192,6 +192,7 @@
 @GST_DISABLE_REGISTRY_FALSE@	libs/baseparse$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesrc$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesink$(EXEEXT) \
+@GST_DISABLE_REGISTRY_FALSE@	libs/sparsefile$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/controller$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/queuearray$(EXEEXT) \
 @GST_DISABLE_REGISTRY_FALSE@	libs/typefindhelper$(EXEEXT) \
@@ -692,6 +693,12 @@
 libs_queuearray_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_sparsefile_SOURCES = libs/sparsefile.c
+libs_sparsefile_OBJECTS = libs/sparsefile.$(OBJEXT)
+libs_sparsefile_LDADD = $(LDADD)
+libs_sparsefile_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_transform1_SOURCES = libs/transform1.c
 libs_transform1_OBJECTS = libs/transform1.$(OBJEXT)
 libs_transform1_LDADD = $(LDADD)
@@ -832,11 +839,11 @@
 	libs/controller.c $(libs_gstlibscpp_SOURCES) \
 	libs/gstnetclientclock.c libs/gstnettimeprovider.c \
 	libs/gsttestclock.c libs/libsabi.c libs/queuearray.c \
-	libs/transform1.c libs/typefindhelper.c pipelines/cleanup.c \
-	pipelines/parse-disabled.c pipelines/parse-launch.c \
-	pipelines/queue-error.c pipelines/seek.c \
-	pipelines/simple-launch-lines.c pipelines/stress.c \
-	tools/gstinspect.c
+	libs/sparsefile.c libs/transform1.c libs/typefindhelper.c \
+	pipelines/cleanup.c pipelines/parse-disabled.c \
+	pipelines/parse-launch.c pipelines/queue-error.c \
+	pipelines/seek.c pipelines/simple-launch-lines.c \
+	pipelines/stress.c tools/gstinspect.c
 DIST_SOURCES = elements/capsfilter.c elements/fakesink.c \
 	elements/fakesrc.c elements/fdsrc.c elements/filesink.c \
 	elements/filesrc.c elements/funnel.c elements/identity.c \
@@ -864,11 +871,11 @@
 	libs/controller.c $(libs_gstlibscpp_SOURCES) \
 	libs/gstnetclientclock.c libs/gstnettimeprovider.c \
 	libs/gsttestclock.c libs/libsabi.c libs/queuearray.c \
-	libs/transform1.c libs/typefindhelper.c pipelines/cleanup.c \
-	pipelines/parse-disabled.c pipelines/parse-launch.c \
-	pipelines/queue-error.c pipelines/seek.c \
-	pipelines/simple-launch-lines.c pipelines/stress.c \
-	tools/gstinspect.c
+	libs/sparsefile.c libs/transform1.c libs/typefindhelper.c \
+	pipelines/cleanup.c pipelines/parse-disabled.c \
+	pipelines/parse-launch.c pipelines/queue-error.c \
+	pipelines/seek.c pipelines/simple-launch-lines.c \
+	pipelines/stress.c tools/gstinspect.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -1441,6 +1448,7 @@
 @GST_DISABLE_REGISTRY_FALSE@	libs/baseparse				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesrc				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/basesink				\
+@GST_DISABLE_REGISTRY_FALSE@	libs/sparsefile				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/controller				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/queuearray				\
 @GST_DISABLE_REGISTRY_FALSE@	libs/typefindhelper			\
@@ -2095,6 +2103,12 @@
 libs/queuearray$(EXEEXT): $(libs_queuearray_OBJECTS) $(libs_queuearray_DEPENDENCIES) $(EXTRA_libs_queuearray_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/queuearray$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(libs_queuearray_OBJECTS) $(libs_queuearray_LDADD) $(LIBS)
+libs/sparsefile.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/sparsefile$(EXEEXT): $(libs_sparsefile_OBJECTS) $(libs_sparsefile_DEPENDENCIES) $(EXTRA_libs_sparsefile_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/sparsefile$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(libs_sparsefile_OBJECTS) $(libs_sparsefile_LDADD) $(LIBS)
 libs/transform1.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -2260,6 +2274,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/gsttestclock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libsabi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/queuearray.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/sparsefile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/transform1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/typefindhelper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/cleanup.Po@am__quote@
@@ -3042,6 +3057,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/sparsefile.log: libs/sparsefile$(EXEEXT)
+	@p='libs/sparsefile$(EXEEXT)'; \
+	b='libs/sparsefile'; \
+	$(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/controller.log: libs/controller$(EXEEXT)
 	@p='libs/controller$(EXEEXT)'; \
 	b='libs/controller'; \
diff --git a/tests/check/elements/multiqueue.c b/tests/check/elements/multiqueue.c
index ad2624e..4ecd07c 100644
--- a/tests/check/elements/multiqueue.c
+++ b/tests/check/elements/multiqueue.c
@@ -816,6 +816,137 @@
 
 GST_END_TEST;
 
+static GMutex block_mutex;
+static GCond block_cond;
+static gint unblock_count;
+static gboolean expect_overrun;
+
+static GstFlowReturn
+pad_chain_block (GstPad * pad, GstObject * parent, GstBuffer * buffer)
+{
+  g_mutex_lock (&block_mutex);
+  while (unblock_count == 0) {
+    g_cond_wait (&block_cond, &block_mutex);
+  }
+  if (unblock_count > 0) {
+    unblock_count--;
+  }
+  g_mutex_unlock (&block_mutex);
+
+  gst_buffer_unref (buffer);
+  return GST_FLOW_OK;
+}
+
+static gboolean
+pad_event_always_ok (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  gst_event_unref (event);
+  return TRUE;
+}
+
+static void
+mq_overrun (GstElement * mq, gpointer udata)
+{
+  fail_unless (expect_overrun);
+
+  /* unblock always so we don't get stuck */
+  g_mutex_lock (&block_mutex);
+  unblock_count = 2;            /* let the PTS=0 and PTS=none go */
+  g_cond_signal (&block_cond);
+  g_mutex_unlock (&block_mutex);
+}
+
+GST_START_TEST (test_buffering_with_none_pts)
+{
+  /*
+   * This test creates a multiqueue where source pushing blocks so we can check
+   * how its buffering level is reacting to GST_CLOCK_TIME_NONE buffers
+   * mixed with properly timestamped buffers.
+   *
+   * Sequence of pushing:
+   * pts=0
+   * pts=none
+   * pts=1 (it gets full now)
+   * pts=none (overrun expected)
+   */
+  GstElement *mq;
+  GstPad *inputpad;
+  GstPad *outputpad;
+  GstPad *mq_sinkpad;
+  GstPad *mq_srcpad;
+  GstSegment segment;
+  GstBuffer *buffer;
+
+  g_mutex_init (&block_mutex);
+  g_cond_init (&block_cond);
+  unblock_count = 0;
+  expect_overrun = FALSE;
+
+  mq = gst_element_factory_make ("multiqueue", NULL);
+  fail_unless (mq != NULL);
+
+  g_object_set (mq,
+      "max-size-bytes", (guint) 0,
+      "max-size-buffers", (guint) 0,
+      "max-size-time", (guint64) GST_SECOND, NULL);
+  g_signal_connect (mq, "overrun", (GCallback) mq_overrun, NULL);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+
+  inputpad = gst_pad_new ("dummysrc", GST_PAD_SRC);
+  outputpad = gst_pad_new ("dummysink", GST_PAD_SINK);
+  gst_pad_set_chain_function (outputpad, pad_chain_block);
+  gst_pad_set_event_function (outputpad, pad_event_always_ok);
+  mq_sinkpad = gst_element_get_request_pad (mq, "sink_%u");
+  mq_srcpad = gst_element_get_static_pad (mq, "src_0");
+  fail_unless (mq_sinkpad != NULL);
+  fail_unless (gst_pad_link (inputpad, mq_sinkpad) == GST_PAD_LINK_OK);
+  fail_unless (gst_pad_link (mq_srcpad, outputpad) == GST_PAD_LINK_OK);
+
+  gst_pad_set_active (inputpad, TRUE);
+  gst_pad_set_active (outputpad, TRUE);
+  gst_pad_push_event (inputpad, gst_event_new_stream_start ("test"));
+  gst_pad_push_event (inputpad, gst_event_new_segment (&segment));
+
+  gst_element_set_state (mq, GST_STATE_PAUSED);
+
+  /* push a buffer with PTS = 0 */
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = 0;
+  fail_unless (gst_pad_push (inputpad, buffer) == GST_FLOW_OK);
+
+  /* push a buffer with PTS = NONE */
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = GST_CLOCK_TIME_NONE;
+  fail_unless (gst_pad_push (inputpad, buffer) == GST_FLOW_OK);
+
+  /* push a buffer with PTS = 1s, so we have 1s of data in multiqueue, we are
+   * full */
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = GST_SECOND;
+  fail_unless (gst_pad_push (inputpad, buffer) == GST_FLOW_OK);
+
+  /* push a buffer with PTS = NONE, the queue is full so it should overrun */
+  expect_overrun = TRUE;
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = GST_CLOCK_TIME_NONE;
+  fail_unless (gst_pad_push (inputpad, buffer) == GST_FLOW_OK);
+
+  g_mutex_lock (&block_mutex);
+  unblock_count = -1;
+  g_cond_signal (&block_cond);
+  g_mutex_unlock (&block_mutex);
+
+  gst_element_set_state (mq, GST_STATE_NULL);
+  gst_object_unref (inputpad);
+  gst_object_unref (outputpad);
+  gst_object_unref (mq);
+  g_mutex_clear (&block_mutex);
+  g_cond_clear (&block_cond);
+}
+
+GST_END_TEST;
+
 static Suite *
 multiqueue_suite (void)
 {
@@ -837,6 +968,8 @@
   tcase_add_test (tc_chain, test_sparse_stream);
   tcase_add_test (tc_chain, test_limit_changes);
 
+  tcase_add_test (tc_chain, test_buffering_with_none_pts);
+
   return s;
 }
 
diff --git a/tests/check/gst/gstbufferpool.c b/tests/check/gst/gstbufferpool.c
index b60f9da..41181ec 100644
--- a/tests/check/gst/gstbufferpool.c
+++ b/tests/check/gst/gstbufferpool.c
@@ -26,9 +26,11 @@
 {
   GstBufferPool *pool = gst_buffer_pool_new ();
   GstStructure *conf = gst_buffer_pool_get_config (pool);
+  GstCaps *caps = gst_caps_new_empty_simple ("test/data");
 
-  gst_buffer_pool_config_set_params (conf, NULL, size, min_buf, max_buf);
+  gst_buffer_pool_config_set_params (conf, caps, size, min_buf, max_buf);
   gst_buffer_pool_set_config (pool, conf);
+  gst_caps_unref (caps);
 
   return pool;
 }
@@ -172,6 +174,74 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_pool_activation_and_config)
+{
+  GstBufferPool *pool = gst_buffer_pool_new ();
+  GstStructure *config = gst_buffer_pool_get_config (pool);
+  GstCaps *caps = gst_caps_new_empty_simple ("test/data");
+  GstBuffer *buffer = NULL;
+
+  /* unconfigured pool cannot be activated */
+  fail_if (gst_buffer_pool_set_active (pool, TRUE));
+
+  gst_buffer_pool_config_set_params (config, caps, 10, 10, 0);
+  fail_unless (gst_buffer_pool_set_config (pool, config));
+  fail_unless (gst_buffer_pool_set_active (pool, TRUE));
+
+  /* setting the same config on an active pool is ok */
+  config = gst_buffer_pool_get_config (pool);
+  fail_unless (gst_buffer_pool_set_config (pool, config));
+
+  /* setting a different config should deactivate the pool */
+  config = gst_buffer_pool_get_config (pool);
+  gst_buffer_pool_config_set_params (config, caps, 12, 10, 0);
+  fail_unless (gst_buffer_pool_set_config (pool, config));
+  fail_if (gst_buffer_pool_is_active (pool));
+
+  /* though it should fail if there is outstanding buffers */
+  gst_buffer_pool_set_active (pool, TRUE);
+  gst_buffer_pool_acquire_buffer (pool, &buffer, NULL);
+  fail_if (buffer == NULL);
+  config = gst_buffer_pool_get_config (pool);
+  gst_buffer_pool_config_set_params (config, caps, 10, 10, 0);
+  fail_if (gst_buffer_pool_set_config (pool, config));
+
+  /* and work when last buffer is back */
+  config = gst_buffer_pool_get_config (pool);
+  gst_buffer_pool_config_set_params (config, caps, 10, 10, 0);
+  gst_buffer_unref (buffer);
+  fail_unless (gst_buffer_pool_set_config (pool, config));
+  fail_unless (gst_buffer_pool_set_active (pool, TRUE));
+
+  gst_buffer_pool_set_active (pool, FALSE);
+  gst_object_unref (pool);
+  gst_caps_unref (caps);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_pool_config_validate)
+{
+  GstBufferPool *pool = create_pool (5, 4, 30);
+  GstStructure *config = gst_buffer_pool_get_config (pool);
+  GstCaps *caps = gst_caps_new_empty_simple ("test/data");
+
+  fail_unless (gst_buffer_pool_config_validate_params (config, caps, 5, 4, 0));
+  fail_unless (gst_buffer_pool_config_validate_params (config, caps, 5, 2, 0));
+  fail_if (gst_buffer_pool_config_validate_params (config, caps, 5, 6, 0));
+  fail_if (gst_buffer_pool_config_validate_params (config, caps, 4, 4, 0));
+
+  gst_caps_unref (caps);
+  caps = gst_caps_new_empty_simple ("test/data2");
+  fail_if (gst_buffer_pool_config_validate_params (config, caps, 5, 4, 0));
+
+  gst_caps_unref (caps);
+  gst_structure_free (config);
+  gst_object_unref (pool);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_buffer_pool_suite (void)
 {
@@ -187,6 +257,8 @@
   tcase_add_test (tc_chain, test_pool_config_buffer_size);
   tcase_add_test (tc_chain, test_inactive_pool_returns_flushing);
   tcase_add_test (tc_chain, test_buffer_modify_discard);
+  tcase_add_test (tc_chain, test_pool_activation_and_config);
+  tcase_add_test (tc_chain, test_pool_config_validate);
 
   return s;
 }
diff --git a/tests/check/gst/gstvalue.c b/tests/check/gst/gstvalue.c
index 5f1b347..b4cd2d2 100644
--- a/tests/check/gst/gstvalue.c
+++ b/tests/check/gst/gstvalue.c
@@ -538,6 +538,10 @@
     const gchar *to;
   } tests[] = {
     {
+    "\"foo\"", "foo"}, {
+    "\"foo\\%\"", "foo%"}, {
+    "\"0123456789_-+/:.\"", "0123456789_-+/:."}, {
+    "\"Hello\\ World\"", "Hello World"}, {
     "", ""},                    /* empty strings */
     {
     "\"\"", ""},                /* quoted empty string -> empty string */
@@ -584,6 +588,7 @@
   GValue value1 = { 0 };
   GValue value2 = { 0 };
   GValue tmp = { 0 };
+  GstAllocationParams alloc_params = { 0 };
 
   g_value_init (&value1, G_TYPE_INT);
   g_value_set_int (&value1, 10);
@@ -771,6 +776,27 @@
   fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);
   g_value_unset (&value1);
   g_value_unset (&value2);
+
+  /* Check that we can compare objects */
+  g_value_init (&value1, GST_TYPE_BIN);
+  g_value_take_object (&value1, gst_bin_new (NULL));
+  g_value_init (&value2, GST_TYPE_BIN);
+  g_value_take_object (&value2, gst_bin_new (NULL));
+  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_UNORDERED);
+  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);
+  g_value_unset (&value1);
+  g_value_unset (&value2);
+
+  /* Check that we can compare allocation params */
+  g_value_init (&value1, GST_TYPE_ALLOCATION_PARAMS);
+  g_value_set_boxed (&value1, &alloc_params);
+  g_value_init (&value2, GST_TYPE_ALLOCATION_PARAMS);
+  alloc_params.align = 1;
+  g_value_set_boxed (&value2, &alloc_params);
+  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_UNORDERED);
+  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);
+  g_value_unset (&value1);
+  g_value_unset (&value2);
 }
 
 GST_END_TEST;
diff --git a/tests/check/libs/sparsefile.c b/tests/check/libs/sparsefile.c
new file mode 100644
index 0000000..6d291b4
--- /dev/null
+++ b/tests/check/libs/sparsefile.c
@@ -0,0 +1,227 @@
+/* GStreamer
+ *
+ * unit test for cachefile helper
+ *
+ * Copyright (C) 2014 Wim Taymans  <wtaymans@redhat.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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib/gstdio.h>
+
+#include <gst/check/gstcheck.h>
+
+/* not public API for now */
+#include "../../../plugins/elements/gstsparsefile.c"
+
+static void
+expect_range_before (GstSparseFile * file, gsize offset, gsize start,
+    gsize stop)
+{
+  gsize tstart, tstop;
+
+  fail_unless (gst_sparse_file_get_range_before (file, offset, &tstart,
+          &tstop) == TRUE);
+  fail_unless (tstart == start);
+  fail_unless (tstop == stop);
+}
+
+static void
+expect_range_after (GstSparseFile * file, gsize offset, gsize start, gsize stop)
+{
+  gsize tstart, tstop;
+
+  fail_unless (gst_sparse_file_get_range_after (file, offset, &tstart,
+          &tstop) == TRUE);
+  fail_unless (tstart == start);
+  fail_unless (tstop == stop);
+}
+
+static gboolean
+expect_write (GstSparseFile * file, gsize offset, gsize count, gsize result,
+    gsize avail)
+{
+  GError *error = NULL;
+  gchar buffer[200];
+  gsize res, a;
+
+  res = gst_sparse_file_write (file, offset, buffer, count, &a, &error);
+  if (res != result)
+    return FALSE;
+  if (res == 0) {
+    if (error == NULL)
+      return FALSE;
+    g_clear_error (&error);
+  } else if (a != avail)
+    return FALSE;
+  return TRUE;
+}
+
+static gboolean
+expect_read (GstSparseFile * file, gsize offset, gsize count, gsize result,
+    gsize avail)
+{
+  GError *error = NULL;
+  gchar buffer[200];
+  gsize res, a;
+
+  res = gst_sparse_file_read (file, offset, buffer, count, &a, &error);
+  if (res != result)
+    return FALSE;
+  if (res == 0) {
+    if (error == NULL)
+      return FALSE;
+    g_clear_error (&error);
+  } else if (a != avail)
+    return FALSE;
+  return TRUE;
+}
+
+GST_START_TEST (test_write_read)
+{
+  GstSparseFile *file;
+  gint fd;
+  gchar *name;
+  gsize start, stop;
+
+  name = g_strdup ("cachefile-testXXXXXX");
+  fd = g_mkstemp (name);
+  fail_if (fd == -1);
+
+  file = gst_sparse_file_new ();
+  fail_unless (file != NULL);
+  fail_unless (gst_sparse_file_set_fd (file, fd));
+  fail_unless (gst_sparse_file_n_ranges (file) == 0);
+
+  /* should fail, we didn't write anything yet */
+  fail_unless (expect_read (file, 0, 100, 0, 0));
+
+  /* no ranges, searching for a range should fail */
+  fail_unless (gst_sparse_file_n_ranges (file) == 0);
+  fail_unless (gst_sparse_file_get_range_before (file, 0, &start,
+          &stop) == FALSE);
+  fail_unless (gst_sparse_file_get_range_before (file, 10, &start,
+          &stop) == FALSE);
+  fail_unless (gst_sparse_file_get_range_after (file, 0, &start,
+          &stop) == FALSE);
+  fail_unless (gst_sparse_file_get_range_after (file, 10, &start,
+          &stop) == FALSE);
+
+  /* now write some data */
+  fail_unless (expect_write (file, 0, 100, 100, 0));
+
+  /* we have 1 range now */
+  fail_unless (gst_sparse_file_n_ranges (file) == 1);
+  expect_range_before (file, 0, 0, 100);
+  expect_range_after (file, 0, 0, 100);
+  expect_range_before (file, 100, 0, 100);
+  expect_range_before (file, 50, 0, 100);
+  expect_range_before (file, 200, 0, 100);
+  fail_unless (gst_sparse_file_get_range_after (file, 100, &start,
+          &stop) == FALSE);
+  expect_range_after (file, 50, 0, 100);
+
+  /* we can read all data now */
+  fail_unless (expect_read (file, 0, 100, 100, 0));
+  /* we can read less */
+  fail_unless (expect_read (file, 0, 50, 50, 50));
+  /* but we can't read more than what is written */
+  fail_unless (expect_read (file, 0, 101, 0, 0));
+
+  g_unlink (name);
+  gst_sparse_file_free (file);
+  g_free (name);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_write_merge)
+{
+  GstSparseFile *file;
+  gint fd;
+  gchar *name;
+  gsize start, stop;
+
+  name = g_strdup ("cachefile-testXXXXXX");
+  fd = g_mkstemp (name);
+  fail_if (fd == -1);
+
+  file = gst_sparse_file_new ();
+  gst_sparse_file_set_fd (file, fd);
+
+  /* write something at offset 0 */
+  fail_unless (expect_write (file, 0, 100, 100, 0));
+  /* we have 1 range now */
+  fail_unless (gst_sparse_file_n_ranges (file) == 1);
+  expect_range_before (file, 110, 0, 100);
+  expect_range_after (file, 50, 0, 100);
+  fail_unless (gst_sparse_file_get_range_after (file, 100, &start,
+          &stop) == FALSE);
+
+  /* read should fail */
+  fail_unless (expect_read (file, 50, 150, 0, 0));
+
+  /* write something at offset 150 */
+  fail_unless (expect_write (file, 150, 100, 100, 0));
+  /* we have 2 ranges now */
+  fail_unless (gst_sparse_file_n_ranges (file) == 2);
+  expect_range_before (file, 110, 0, 100);
+  expect_range_after (file, 50, 0, 100);
+  expect_range_after (file, 100, 150, 250);
+  expect_range_before (file, 150, 150, 250);
+
+  /* read should still fail */
+  fail_unless (expect_read (file, 50, 150, 0, 0));
+
+  /* fill the hole */
+  fail_unless (expect_write (file, 100, 50, 50, 100));
+  /* we have 1 range now */
+  fail_unless (gst_sparse_file_n_ranges (file) == 1);
+  expect_range_before (file, 110, 0, 250);
+  expect_range_after (file, 50, 0, 250);
+  expect_range_after (file, 100, 0, 250);
+  expect_range_before (file, 150, 0, 250);
+  fail_unless (gst_sparse_file_get_range_after (file, 250, &start,
+          &stop) == FALSE);
+
+  /* read work */
+  fail_unless (expect_read (file, 50, 150, 150, 50));
+
+  g_unlink (name);
+  gst_sparse_file_free (file);
+  g_free (name);
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_cachefile_suite (void)
+{
+  Suite *s = suite_create ("cachefile");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_write_read);
+  tcase_add_test (tc_chain, test_write_merge);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_cachefile);
diff --git a/win32/common/config.h b/win32/common/config.h
index 904c930..fef1be1 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -62,7 +62,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2014-05-03"
+#define GST_PACKAGE_RELEASE_DATETIME "2014-05-21"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -354,7 +354,7 @@
 #define PACKAGE_NAME "GStreamer"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer 1.3.1"
+#define PACKAGE_STRING "GStreamer 1.3.2"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gstreamer"
@@ -363,7 +363,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.3.1"
+#define PACKAGE_VERSION "1.3.2"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -401,7 +401,7 @@
 #undef USE_POISONING
 
 /* Version number of package */
-#define VERSION "1.3.1"
+#define VERSION "1.3.2"
 
 /* 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/gstversion.h b/win32/common/gstversion.h
index cec92d0..0aabdb5 100644
--- a/win32/common/gstversion.h
+++ b/win32/common/gstversion.h
@@ -57,7 +57,7 @@
  *
  * The micro version of GStreamer at compile time:
  */
-#define GST_VERSION_MICRO (1)
+#define GST_VERSION_MICRO (2)
 /**
  * GST_VERSION_NANO:
  *
diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def
index 96f84fb..d542736 100644
--- a/win32/common/libgstreamer.def
+++ b/win32/common/libgstreamer.def
@@ -148,6 +148,7 @@
 	gst_buffer_pool_config_n_options
 	gst_buffer_pool_config_set_allocator
 	gst_buffer_pool_config_set_params
+	gst_buffer_pool_config_validate_params
 	gst_buffer_pool_get_config
 	gst_buffer_pool_get_options
 	gst_buffer_pool_get_type