diff --git a/ChangeLog b/ChangeLog
index 1335bd4..ef7250d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,374 @@
-=== release 1.0.1 ===
+=== release 1.0.2 ===
 
-2012-10-07  Tim-Philipp Müller <tim@centricular.net>
+2012-10-25  Tim-Philipp Müller <tim@centricular.net>
 
 	* configure.ac:
-	  releasing 1.0.1
+	  releasing 1.0.2
+
+2012-10-25 00:04:49 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* gstreamer.doap:
+	* win32/common/config.h:
+	* win32/common/gstversion.h:
+	  Release 1.0.2
+
+2012-10-24 16:13:34 +0400  Руслан Ижбулатов <lrn1986@gmail.com>
+
+	* tests/examples/manual/Makefile.am:
+	  examples: link testrtpool to pthreads
+	  Fixes #686787
+
+2012-10-24 11:46:01 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst/gstevent.c:
+	  event: Allow GST_CLOCK_TIME_NONE as duration for GAP events
+
+2012-10-24 11:16:12 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: use new GCond for async state change
+	  Use a new GCond, protected with the object lock, to signal completion
+	  of the async state change. We can't reuse the live lock because that
+	  one can be locked when the create function blocks.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=686723
+
+2012-10-22 20:25:43 +0200  Miguel Angel Cabrera Moya <madmac2501@gmail.com>
+
+	* gst/gstallocator.c:
+	  allocator: fix memory leak in _fallback_mem_copy
+	  https://bugzilla.gnome.org/show_bug.cgi?id=686658
+
+2012-10-22 20:33:06 +0200  Miguel Angel Cabrera Moya <madmac2501@gmail.com>
+
+	* gst/gstpreset.c:
+	  preset: remove variable not read
+	  https://bugzilla.gnome.org/show_bug.cgi?id=686659
+
+2012-10-22 15:04:26 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* configure.ac:
+	* libs/gst/check/libcheck/Makefile.am:
+	* m4/ax_pthread.m4:
+	* tests/examples/streams/Makefile.am:
+	  configure: Properly check for pthread
+	  The old check failed on Android for example.
+
+2012-10-22 10:25:40 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst/gstinfo.c:
+	  info: Don't use GST_DEBUG() in gst_debug_add_log_function() and related functions unconditionally
+	  If GStreamer was not initialized yet this will cause g_warnings().
+
+2012-10-20 19:44:43 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* libs/gst/base/gstcollectpads.h:
+	  collectpads: fix g-i annotation for GstCollectPadsBufferFunction
+	  We pass ownership of the buffer to the function.
+
+2012-10-20 12:54:06 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* docs/libs/Makefile.am:
+	* gst/gst.c:
+	  g_type_init() is no longer required and deprecated in glib >= 2.35.0
+	  https://bugzilla.gnome.org/show_bug.cgi?id=686456
+
+2012-10-19 13:36:33 -0700  Michael Smith <msmith@rdio.com>
+
+	* gst/gstsample.c:
+	  GstSample: fix typo in G-I annotations, allows creating GstSamples from bindings.
+
+2012-10-18 15:31:17 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst/gstpoll.c:
+	  poll: Fix compiler warning about constness
+	  passing argument 1 of 'g_mutex_lock' discards 'const' qualifier from pointer target type
+	  passing argument 1 of 'g_mutex_unlock' discards 'const' qualifier from pointer target type
+
+2012-10-17 16:49:19 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+	* gst/gstbin.c:
+	* gst/gstpipeline.c:
+	  bin, pipeline: use gst_element_class_set_static_metadata()
+	  So the strings aren't copied.
+
+2012-10-16 12:31:50 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst/gstelement.c:
+	* gst/gstelement.h:
+	  element: API: Add GstElement::post_message() vfunc
+	  Conflicts:
+	  gst/gstelement.h
+
+2012-10-16 11:54:54 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/advanced-events.xml:
+	  pwg: link to caps and qos chapters
+
+2012-10-16 11:20:59 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/building-boiler.xml:
+	* docs/pwg/building-queryfn.xml:
+	* docs/pwg/pwg.xml:
+	  pwg: add section about query function
+
+2012-10-16 11:12:38 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/building-eventfn.xml:
+	  pwg: fix event function
+
+2012-10-15 19:56:36 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+	* libs/gst/base/gstcollectpads.c:
+	* libs/gst/base/gstcollectpads.h:
+	  collectpads: minor docs fixes
+
+2012-10-15 19:55:42 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: fix buffer leak in clip_time
+
+2012-10-15 18:44:52 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: call clip function with user data
+
+2012-10-15 14:06:45 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/pwg.xml:
+	  pwg: reorder some chapters
+	  Reorder some chapter so that they match the steps done in the
+	  element.
+
+2012-10-15 13:59:50 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/advanced-negotiation.xml:
+	  pwg: small tweaks to negotiation
+
+2012-10-15 13:44:51 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/advanced-negotiation.xml:
+	  pwg: improve negotiation documentation some more
+
+2012-10-15 12:10:46 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-negotiation.txt:
+	* docs/pwg/advanced-negotiation.xml:
+	  pwg: update negotiation part
+
+2012-10-15 12:10:11 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-synchronisation.txt:
+	  docs: update synchronization docs
+
+2012-10-12 16:58:03 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/advanced-negotiation.xml:
+	  pwg: work on rewriting caps negotiation docs
+
+2012-10-12 16:09:26 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-negotiation.txt:
+	  design: rename passthrough negotiation
+	  Rename passthrough negotiation to transform negotiation to avoid
+	  confusion with passthrough operation.
+
+2012-10-12 13:15:48 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/basics-elements.xml:
+	* docs/manual/basics-pads.xml:
+	  manual: no more new-decoded-pad
+
+2012-10-12 13:13:32 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-dataaccess.xml:
+	* docs/manual/appendix-compiling.xml:
+	* docs/manual/manual.xml:
+	  manual: move embedding elements to separate chapter
+
+2012-10-12 13:01:28 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/advanced-qos.xml:
+	  pwg: small example for throttle
+
+2012-10-12 12:55:57 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/advanced-qos.xml:
+	* docs/pwg/pwg.xml:
+	  pwg: add info about QoS
+
+2012-10-12 12:55:25 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/pwg/intro-basics.xml:
+	  pwg: adds some more links
+
+2012-10-12 12:55:03 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-qos.txt:
+	  qos: messages are posted, not dropped
+
+2012-10-12 10:35:43 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/communication.png:
+	* docs/manual/diagrams-general.svg:
+	* docs/manual/diagrams-pipelines.svg:
+	* docs/manual/gstreamer-overview.png:
+	* docs/manual/mime-world.png:
+	* docs/manual/thread-buffering.png:
+	  manual: update graphics
+
+2012-10-11 17:10:17 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-buffering.xml:
+	* tests/examples/manual/.gitignore:
+	* tests/examples/manual/Makefile.am:
+	  manual: add example of no-rebuffer buffering strategy
+
+2012-10-11 17:10:04 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/basics-bus.xml:
+	* docs/manual/intro-gstreamer.xml:
+	  manual: small tweaks
+
+2012-10-11 17:09:29 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/gstquery.c:
+	  query: buffering time left is in milliseconds
+
+2012-10-11 17:07:39 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/basics-bins.xml:
+	  manual: add some text about bin state change order
+
+2012-10-10 16:43:58 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/highlevel-playback.xml:
+	* tests/examples/manual/Makefile.am:
+	  manual: talk about playsink
+	  Talk about playsink and give an example of its usage.
+
+2012-10-10 13:08:31 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-autoplugging.xml:
+	* docs/manual/highlevel-components.xml:
+	* docs/manual/highlevel-playback.xml:
+	* docs/manual/manual.xml:
+	* tests/examples/manual/Makefile.am:
+	  manual: add something about uridecodebin
+
+2012-10-10 11:35:01 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: ensure all timestamps are in same time domain
+	  ... by not only processing incoming buffers through a clip function,
+	  but also other timestamps such as those coming from GAP event.
+
+2012-10-10 10:36:32 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+	* libs/gst/base/gstbaseparse.c:
+	* libs/gst/base/gstbasesrc.h:
+	  docs: adjust some parameter mismatches
+
+2012-10-10 11:34:27 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst/gstpad.c:
+	  pad: Downgrade GST_WARNING to GST_INFO
+	  It's usually not a problem if a query fails if there's no peer,
+	  especially as it will happen during pad linking (caps query)
+	  quite often and spams the logs.
+
+2012-10-09 17:06:04 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-autoplugging.xml:
+	* tests/examples/manual/.gitignore:
+	* tests/examples/manual/Makefile.am:
+	  manual: remove outdated autoplugging section
+	  Remove autoplugging chapter and point to decodebin/playbin examples.
+
+2012-10-09 16:12:01 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-threads.xml:
+	* tests/examples/manual/.gitignore:
+	* tests/examples/manual/Makefile.am:
+	  manual: Talk about threading
+	  Rework the threading chapter.
+	  Talk about stream-status and give some examples on how to change
+	  the thread priorities.
+
+2012-10-09 15:57:29 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-stream-status.txt:
+	  design: improve stream-status document
+
+2012-10-09 15:31:19 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: retrieve the result from start_complete
+	  gst_base_src_start_complete() can fail when the thread could not be
+	  started, for example. Make sure it causes the state change to fail by
+	  retrieving the result from _start_complete().
+
+2012-10-09 15:31:04 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: improve debug
+
+2012-10-09 10:24:34 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/gstpad.h:
+	  pad: small docs fixes and remove a 0.11 fixme
+
+2012-10-08 16:42:11 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-buffering.txt:
+	* docs/manual/advanced-buffering.xml:
+	* docs/manual/manual.xml:
+	  manual: talk a bit about buffering
+
+2012-10-08 13:22:30 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-clocks.xml:
+	* docs/pwg/advanced-clock.xml:
+	  docs: improve clock chapter
+
+2012-10-08 10:39:30 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/manual/advanced-dataaccess.xml:
+	* tests/examples/manual/Makefile.am:
+	  manual: add example for effect switching
+
+2012-10-08 09:11:53 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* docs/design/part-preroll.txt:
+	* docs/design/part-sparsestreams.txt:
+	  docs: small updates
+
+2012-10-07 16:48:25 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* configure.ac:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* win32/common/config.h:
+	* win32/common/gstversion.h:
+	  Back to development (bug-fixing)
+
+=== release 1.0.1 ===
+
+2012-10-07 13:10:33 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* gstreamer.doap:
+	* win32/common/config.h:
+	* win32/common/gstenumtypes.c:
+	* win32/common/gstversion.h:
+	  Release 1.0.1
 
 2012-10-07 00:15:49 +0100  Tim-Philipp Müller <tim@centricular.net>
 
diff --git a/Makefile.in b/Makefile.in
index eb25a94..30e208b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -102,7 +102,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -407,6 +407,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -443,6 +446,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/NEWS b/NEWS
index 432cd8a..8cbffdb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,22 @@
-This is GStreamer 1.0.1
+This is GStreamer 1.0.2
+
+Changes since 1.0.1:
+
+      * Parallel installability with 0.10.x series
+      * collectpads: ensure all timestamps are in same time domain
+      * gobject-introspection: fix GstSample annotations
+      * add GstElement::post_message() vfunc
+      * info: allow gst_debug_add_log_function() to be called before gst_init()
+      * event: allow GST_CLOCK_TIME_NONE as duration for GAP events
+      * documentation: new chapters and updates for the application development manual and the plugin writer's guide
+
+Bugs fixed since 1.0.1:
+
+      * 686456 : g_type_init is no longer required
+      * 686658 : allocator: fix memory leak in _fallback_mem_copy
+      * 686659 : preset: remove variable not read
+      * 686723 : basesrc: generic/states test in -base now hangs with appsrc
+      * 686787 : testrtpool must be linked to pthreads
 
 Changes since 1.0.0:
 
diff --git a/RELEASE b/RELEASE
index 13831ce..7d37da9 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,5 +1,5 @@
 
-Release notes for GStreamer 1.0.1
+Release notes for GStreamer 1.0.2
 
 
 The GStreamer team is proud to announce a new bug-fix release
@@ -43,26 +43,20 @@
 Features of this release
     
       * Parallel installability with 0.10.x series
-      * Capsfilter prefers filter caps over passthrough now
-      * Application Development Manual, Plugin Writer's Guide and other documentation updated and extended for 1.0
-      * Bug fixes
+      * collectpads: ensure all timestamps are in same time domain
+      * gobject-introspection: fix GstSample annotations
+      * add GstElement::post_message() vfunc
+      * info: allow gst_debug_add_log_function() to be called before gst_init()
+      * event: allow GST_CLOCK_TIME_NONE as duration for GAP events
+      * documentation: new chapters and updates for the application development manual and the plugin writer's guide
 
 Bugs fixed in this release
      
-      * 680862 :  " identity " with single-segment=true gives buffer.pts of CLOCK_TIME_NONE
-      * 684538 : baseparse: no timestamps after seeking in mp3 or aac
-      * 684755 : typo - whithin > within
-      * 684765 : Plugins without a klass in the metadata crashes autoaudiosink
-      * 684809 : proxypad don't hold a ref to their internal pad while streaming through it
-      * 684970 : Don't register printf extension for %p when glib is not using system printf
-      * 684981 : Pipeline hangs on PREROLLING negotiating caps
-      * 685072 : memory: map(READ)/unmap clears the READONLY status
-
-API changes in this release
-     
- - API additions:
-    
-      * gst_base_transform_set_prefer_passthrough ()
+      * 686456 : g_type_init is no longer required
+      * 686658 : allocator: fix memory leak in _fallback_mem_copy
+      * 686659 : preset: remove variable not read
+      * 686723 : basesrc: generic/states test in -base now hangs with appsrc
+      * 686787 : testrtpool must be linked to pthreads
 
 ==== Download ====
 
@@ -99,12 +93,11 @@
         
 Contributors to this release
     
-      * Jan Schmidt
-      * Josep Torra Valles
       * Mark Nauwelaerts
-      * Olivier Blin
-      * Olivier Crête
+      * Michael Smith
+      * Miguel Angel Cabrera Moya
       * Sebastian Dröge
       * Tim-Philipp Müller
       * Wim Taymans
+      * Руслан Ижбулатов
  
\ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
index f989769..3211f16 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1181,6 +1181,7 @@
 m4_include([common/m4/gtk-doc.m4])
 m4_include([common/m4/introspection.m4])
 m4_include([common/m4/pkg.m4])
+m4_include([m4/ax_pthread.m4])
 m4_include([m4/check-checks.m4])
 m4_include([m4/gettext.m4])
 m4_include([m4/iconv.m4])
diff --git a/common/Makefile.in b/common/Makefile.in
index 27dd5e0..e38a090 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -339,6 +339,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -375,6 +378,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index ac9f419..05de253 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -299,6 +299,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -335,6 +338,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/config.h.in b/config.h.in
index 514bd9d..d92c89e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -208,8 +208,11 @@
 /* Define to 1 if you have the `pselect' function. */
 #undef HAVE_PSELECT
 
-/* Define to 1 if you have the <pthread.h> header file. */
-#undef HAVE_PTHREAD_H
+/* Define if you have POSIX threads libraries and header files. */
+#undef HAVE_PTHREAD
+
+/* Have PTHREAD_PRIO_INHERIT. */
+#undef HAVE_PTHREAD_PRIO_INHERIT
 
 /* Define if RDTSC is available */
 #undef HAVE_RDTSC
@@ -344,6 +347,10 @@
 /* directory where plugins are located */
 #undef PLUGINDIR
 
+/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+#undef PTHREAD_CREATE_JOINABLE
+
 /* The size of `char', as computed by sizeof. */
 #undef SIZEOF_CHAR
 
diff --git a/configure b/configure
index 73f0c5e..39797b4 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.0.1.
+# Generated by GNU Autoconf 2.69 for GStreamer 1.0.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.0.1'
-PACKAGE_STRING='GStreamer 1.0.1'
+PACKAGE_VERSION='1.0.2'
+PACKAGE_STRING='GStreamer 1.0.2'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -699,8 +699,12 @@
 WIN32_LIBS
 HAVE_WINSOCK2_H_FALSE
 HAVE_WINSOCK2_H_TRUE
-HAVE_PTHREAD_H_FALSE
-HAVE_PTHREAD_H_TRUE
+HAVE_PTHREAD_FALSE
+HAVE_PTHREAD_TRUE
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
 HAVE_SYS_TIMES_H_AND_UNISTD_H_FALSE
 HAVE_SYS_TIMES_H_AND_UNISTD_H_TRUE
 HAVE_SYS_SOCKET_H_FALSE
@@ -1633,7 +1637,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.0.1 to adapt to many kinds of systems.
+\`configure' configures GStreamer 1.0.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1704,7 +1708,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer 1.0.1:";;
+     short | recursive ) echo "Configuration of GStreamer 1.0.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1881,7 +1885,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer configure 1.0.1
+GStreamer configure 1.0.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2654,7 +2658,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.0.1, which was
+It was created by GStreamer $as_me 1.0.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3587,7 +3591,7 @@
 
 # Define the identity of the package.
  PACKAGE='gstreamer'
- VERSION='1.0.1'
+ VERSION='1.0.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3710,9 +3714,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.0.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.0.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.0.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.0.2 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.0.2 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.0.2 | cut -d'.' -f3)
 
 
 
@@ -3723,7 +3727,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.0.1 | cut -d'.' -f4)
+  NANO=$(echo 1.0.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
@@ -8308,10 +8312,10 @@
 done
 
 
-  GST_CURRENT=1
+  GST_CURRENT=2
   GST_REVISION=0
-  GST_AGE=1
-  GST_LIBVERSION=1:0:1
+  GST_AGE=2
+  GST_LIBVERSION=2:0:2
 
 
 
@@ -23124,27 +23128,406 @@
 done
 
 
-for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
 _ACEOF
- HAVE_PTHREAD_H=yes
-else
-  HAVE_PTHREAD_H=no
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
 fi
 
-done
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
 
- if test "x$HAVE_PTHREAD_H" = "xyes"; then
-  HAVE_PTHREAD_H_TRUE=
-  HAVE_PTHREAD_H_FALSE='#'
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case ${host_os} in
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+        darwin*)
+        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
+$as_echo_n "checking whether pthreads work with $flag... " >&6; }
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+                pthread-config)
+                # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  HAVE_PTHREAD_H_TRUE='#'
-  HAVE_PTHREAD_H_FALSE=
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+                if test x"$ax_pthread_config" = xno; then continue; fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
+$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+        attr_name=unknown
+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr = $attr; return attr /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  attr_name=$attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        done
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
+$as_echo "$attr_name" >&6; }
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $attr_name
+_ACEOF
+
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
+$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
+        flag=no
+        case ${host_os} in
+            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
+            osf* | hpux*) flag="-D_REENTRANT";;
+            solaris*)
+            if test "$GCC" = "yes"; then
+                flag="-D_REENTRANT"
+            else
+                flag="-mt -D_REENTRANT"
+            fi
+            ;;
+        esac
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
+$as_echo "${flag}" >&6; }
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                    #include <pthread.h>
+int
+main ()
+{
+int i = PTHREAD_PRIO_INHERIT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_PRIO_INHERIT=yes
+else
+  ax_cv_PTHREAD_PRIO_INHERIT=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+
+$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+
+fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+        if test x"$GCC" != xyes; then
+          for ac_prog in xlc_r cc_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
+
+        else
+          PTHREAD_CC=$CC
+        fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+        HAVE_PTHREAD=yes
+        :
+else
+        ax_pthread_ok=no
+        HAVE_PTHREAD=no
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ if test "x$HAVE_PTHREAD" = "xyes"; then
+  HAVE_PTHREAD_TRUE=
+  HAVE_PTHREAD_FALSE='#'
+else
+  HAVE_PTHREAD_TRUE='#'
+  HAVE_PTHREAD_FALSE=
 fi
 
 
@@ -26216,8 +26599,8 @@
   as_fn_error $? "conditional \"HAVE_SYS_TIMES_H_AND_UNISTD_H\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_PTHREAD_H_TRUE}" && test -z "${HAVE_PTHREAD_H_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_PTHREAD_H\" was never defined.
+if test -z "${HAVE_PTHREAD_TRUE}" && test -z "${HAVE_PTHREAD_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PTHREAD\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_WINSOCK2_H_TRUE}" && test -z "${HAVE_WINSOCK2_H_FALSE}"; then
@@ -26641,7 +27024,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.0.1, which was
+This file was extended by GStreamer $as_me 1.0.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -26707,7 +27090,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.0.1
+GStreamer config.status 1.0.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 01daa95..9e5dd72 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.0.1,
+AC_INIT(GStreamer, 1.0.2,
     http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
     gstreamer)
 AG_GST_INIT
@@ -58,7 +58,7 @@
 dnl - interfaces added -> increment AGE
 dnl - interfaces removed -> AGE = 0
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 1, 0, 1)
+AS_LIBTOOL(GST, 2, 0, 2)
 
 dnl *** autotools stuff ****
 
@@ -313,8 +313,8 @@
 AC_CHECK_HEADERS([stdio_ext.h], [], [], [AC_INCLUDES_DEFAULT])
 
 dnl check for pthreads
-AC_CHECK_HEADERS([pthread.h], [HAVE_PTHREAD_H=yes], [HAVE_PTHREAD_H=no], [AC_INCLUDES_DEFAULT])
-AM_CONDITIONAL(HAVE_PTHREAD_H, test "x$HAVE_PTHREAD_H" = "xyes")
+AX_PTHREAD([HAVE_PTHREAD=yes], [HAVE_PTHREAD=no])
+AM_CONDITIONAL(HAVE_PTHREAD, test "x$HAVE_PTHREAD" = "xyes")
 
 dnl check for sys/prctl for setting thread name on Linux
 AC_CHECK_HEADERS([sys/prctl.h], [], [], [AC_INCLUDES_DEFAULT])
diff --git a/docs/Makefile.in b/docs/Makefile.in
index e5b2015..9803127 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -81,7 +81,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -339,6 +339,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -375,6 +378,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/design/Makefile.in b/docs/design/Makefile.in
index 8a305e0..29d2eff 100644
--- a/docs/design/Makefile.in
+++ b/docs/design/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -299,6 +299,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -335,6 +338,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/design/part-buffering.txt b/docs/design/part-buffering.txt
index c1b3fb6..c36f948 100644
--- a/docs/design/part-buffering.txt
+++ b/docs/design/part-buffering.txt
@@ -50,7 +50,7 @@
 
   This buffering method is usable when the demuxer operates in push mode.
   Seeking in the stream requires the seek to happen in the network source.
-  It is mostly desirable when the total duration of the file is not know, such
+  It is mostly desirable when the total duration of the file is not known, such
   as in live streaming or when efficient seeking is not possible/required.
 
  * Incremental download
diff --git a/docs/design/part-negotiation.txt b/docs/design/part-negotiation.txt
index bc94032..0a89bb6 100644
--- a/docs/design/part-negotiation.txt
+++ b/docs/design/part-negotiation.txt
@@ -339,9 +339,10 @@
       - A video/audio decoder
       - usually uses gst_pad_use_fixed_caps()
 
- 2) Passthrough
-      - Caps not modified
+ 2) Transform
+      - Caps not modified (passthrough)
       - can do caps transform based on element property
+      - fixed caps get transformed into fixed caps
       - videobox
 
  3) Dynamic : can choose output format 
@@ -349,3 +350,4 @@
       - depends on downstream caps, needs to do a CAPS query to find
         transform.
       - usually prefers to use the identity transform
+      - fixed caps can be transformed into unfixed caps.
diff --git a/docs/design/part-preroll.txt b/docs/design/part-preroll.txt
index 5b2630f..597c661 100644
--- a/docs/design/part-preroll.txt
+++ b/docs/design/part-preroll.txt
@@ -28,7 +28,8 @@
 The state is commited in the following conditions:
 
  - a buffer is received on a sinkpad
- - an EOS is received on a sinkpad.
+ - an GAP event is received on a sinkpad.
+ - an EOS event is received on a sinkpad.
 
 We require the state change to be commited in EOS as well since an EOS means
 by definition that no buffer is going to arrive anymore.
diff --git a/docs/design/part-qos.txt b/docs/design/part-qos.txt
index daffa01..e80a7a1 100644
--- a/docs/design/part-qos.txt
+++ b/docs/design/part-qos.txt
@@ -84,7 +84,7 @@
 disable this feature could also be presented on elements.
 
 This message can be posted by a sink/src that performs synchronisation against the
-clock (live) or it could be dropped by an upstream element that performs QoS
+clock (live) or it could be posted by an upstream element that performs QoS
 because of QOS events received from a downstream element (!live).
 
 The GST_MESSAGE_QOS contains at least the following info:
diff --git a/docs/design/part-sparsestreams.txt b/docs/design/part-sparsestreams.txt
index 269faa5..66b3d2f 100644
--- a/docs/design/part-sparsestreams.txt
+++ b/docs/design/part-sparsestreams.txt
@@ -11,6 +11,9 @@
 In 0.10, segment information conveyed through SEGMENT events can be used
 for the same purpose.
 
+In 1.0, there is a GAP event that works in a similar fashion as the FILLER
+event in 0.8.
+
 Use cases
 ~~~~~~~~~
 
diff --git a/docs/design/part-stream-status.txt b/docs/design/part-stream-status.txt
index d08538f..c7e1cd2 100644
--- a/docs/design/part-stream-status.txt
+++ b/docs/design/part-stream-status.txt
@@ -12,7 +12,7 @@
 We accommodate for the following requirements:
 
  - Application is informed when a streaming thread is about to be created. It
-   should be possible for the application to suggest a custom GstTask.
+   should be possible for the application to suggest a custom GstTaskPool.
  - Application is informed when the status of a streaming thread is changed.
    This can be interesting for GUI application that want to visualize the status
    of the streaming threads (playing/paused/stopped)
@@ -42,9 +42,9 @@
   - The application will usually react to the STREAM_STATUS messages with a sync
     bus handler.
 
-  - The application can create and configure a custom GstTask to manage the
-    streaming thread or it can ignore the message which will make the element
-    use its default GstTask.
+  - The application can configure the GstTask with a custom GstTaskPool to
+    manage the streaming thread or it can ignore the message which will make
+    the element use its default GstTaskPool.
 
   - The application can react to the ENTER/LEAVE stream status message to
     configure the thread right before it is started/stopped. This can be used to
@@ -86,8 +86,7 @@
       application and configure the thread appropriatly.
 
   - "object", G_TYPE, GstTask/GThread
-      A GstTask/GThread controlling this streaming thread. This can be NULL when
-      the object controlling the streaming thread is not yet created.
+      A GstTask/GThread controlling this streaming thread.
 
   - "flow-return", GstFlowReturn
       A status code for why the thread state changed. when threads are created
diff --git a/docs/design/part-synchronisation.txt b/docs/design/part-synchronisation.txt
index 68ac0f0..bdaa244 100644
--- a/docs/design/part-synchronisation.txt
+++ b/docs/design/part-synchronisation.txt
@@ -77,38 +77,38 @@
  B: GstBuffer 
   - B.timestamp = buffer timestamp (GST_BUFFER_TIMESTAMP)
 
- NS:  SEGMENT event preceeding the buffers.
-  - NS.start: start field in the SEGMENT event
-  - NS.stop: stop field in the SEGMENT event
-  - NS.rate: rate field of SEGMENT event
-  - NS.abs_rate: absolute value of rate field of SEGMENT event
-  - NS.time: time field in the SEGMENT event
-  - NS.accum: total accumulated time of all previous SEGMENT events. This
-              field is kept in the GstSegment structure.
+ S:  SEGMENT event preceeding the buffers.
+  - S.start: start field in the SEGMENT event
+  - S.stop: stop field in the SEGMENT event
+  - S.rate: rate field of SEGMENT event
+  - S.abs_rate: absolute value of rate field of SEGMENT event
+  - S.time: time field in the SEGMENT event
+  - S.base: a base time for the time.
+  - S.offset: an offset to apply to S.start or S.stop
 
-Valid buffers for synchronisation are those with B.timestamp between NS.start
-and NS.stop. All other buffers outside this range should be dropped or clipped
-to these boundaries (see also part-segments.txt).
+Valid buffers for synchronisation are those with B.timestamp between S.start
+and S.stop (after applying the S.offset). All other buffers outside this range
+should be dropped or clipped to these boundaries (see also part-segments.txt).
 
 The following transformation to running_time exist:
 
-    if (NS.rate > 0.0)
-      B.running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
-    else
-      B.running_time = (NS.stop - B.timestamp) / NS.abs_rate + NS.accum
+  if (S.rate > 0.0)
+    B.running_time = (B.timestamp - (S.start + S.offset)) / S.abs_rate + S.base
+  else
+    B.running_time = ((S.stop - S.offset) - B.timestamp) / S.abs_rate + S.base
 
 We write B.running_time as the running_time obtained from the SEGMENT event
 and the buffers of that segment.
 
 The first displayable buffer will yield a value of 0 (since B.timestamp ==
-NS.start and NS.accum == 0).
+S.start and S.offset and S.base == 0).
 
-For NS.rate > 1.0, the timestamps will be scaled down to increase the playback
+For S.rate > 1.0, the timestamps will be scaled down to increase the playback
 rate. Likewise, a rate between 0.0 and 1.0 will slow down playback.
 
-For negative rates, timestamps are received stop NS.stop to NS.start so that the
+For negative rates, timestamps are received stop S.stop to S.start so that the
 first buffer received will be transformed into B.running_time of 0 (B.timestamp ==
-NS.stop and NS.accum == 0).
+S.stop and S.accum == 0).
 
 
 Synchronisation
@@ -123,7 +123,7 @@
  - using the buffer timestamp and the preceeding SEGMENT event as (assuming
    positive playback rate):
 
-    B.running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
+    B.running_time = (B.timestamp - (S.start + S.offset)) / S.abs_rate + S.base
 
 We prefix C. and B. before the two running times to note how they were
 calculated.
@@ -175,9 +175,9 @@
 Stream time is calculated using the buffer times and the preceeding SEGMENT
 event as follows:
 
-    stream_time = (B.timestamp - NS.start) * NS.abs_applied_rate + NS.time
+    stream_time = (B.timestamp - S.start) * S.abs_applied_rate + S.time
  
-For negative rates, B.timestamp will go backwards from NS.stop to NS.start,
+For negative rates, B.timestamp will go backwards from S.stop to S.start,
 making the stream time go backwards.
 
 In the PLAYING state, it is also possible to use the pipeline clock to derive
@@ -187,21 +187,24 @@
 allows us to rewrite the above formula for stream_time (and for positive rates).
 
     C.running_time = absolute_time - base_time
-    B.running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
+    B.running_time = (B.timestamp - (S.start + S.offset)) / S.abs_rate + S.base
 
   =>
-    (B.timestamp - NS.start) / NS.abs_rate + NS.accum = absolute_time - base_time;
+    (B.timestamp - (S.start + S.offset)) / S.abs_rate + S.base = absolute_time - base_time;
 
   =>
-    (B.timestamp - NS.start) / NS.abs_rate = absolute_time - base_time - NS.accum;
+    (B.timestamp - (S.start + S.offset)) / S.abs_rate = absolute_time - base_time - S.base;
 
   =>
-    (B.timestamp - NS.start) = (absolute_time - base_time - NS.accum) * NS.abs_rate
-
-  filling (B.timestamp - NS.start) in the above formule for stream time
+    (B.timestamp - (S.start + S.offset)) = (absolute_time - base_time - S.base) * S.abs_rate
 
   =>
-    stream_time = (absolute_time - base_time - NS.accum) * NS.abs_rate * NS.abs_applied_rate + NS.time
+    (B.timestamp - S.start) = S.offset + (absolute_time - base_time - S.base) * S.abs_rate
+
+  filling (B.timestamp - S.start) in the above formule for stream time
+
+  =>
+    stream_time = (S.offset + (absolute_time - base_time - S.base) * S.abs_rate) * S.abs_applied_rate + S.time
 
 This last formula is typically used in sinks to report the current position in
 an accurate and efficient way.
diff --git a/docs/faq/Makefile.in b/docs/faq/Makefile.in
index 26b0f2c..312c2ff 100644
--- a/docs/faq/Makefile.in
+++ b/docs/faq/Makefile.in
@@ -105,7 +105,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -353,6 +353,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -389,6 +392,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/gst/Makefile.in b/docs/gst/Makefile.in
index 1e001fa..3fe208f 100644
--- a/docs/gst/Makefile.in
+++ b/docs/gst/Makefile.in
@@ -101,7 +101,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -322,6 +322,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -358,6 +361,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/gst/html/GstBin.html b/docs/gst/html/GstBin.html
index 5167655..7e37397 100644
--- a/docs/gst/html/GstBin.html
+++ b/docs/gst/html/GstBin.html
@@ -157,7 +157,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp8569680"></a><h3>Notes</h3>
+<a name="idp11985136"></a><h3>Notes</h3>
 <p>
 A <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> internally intercepts every <a class="link" href="gstreamer-GstMessage.html#GstMessage" title="struct GstMessage"><span class="type">GstMessage</span></a> posted by its children and
 implements the following default behaviour for each of them:
diff --git a/docs/gst/html/GstElement.html b/docs/gst/html/GstElement.html
index 43b6d4b..25cdeff 100644
--- a/docs/gst/html/GstElement.html
+++ b/docs/gst/html/GstElement.html
@@ -527,6 +527,8 @@
   gboolean              (*send_event)           (GstElement *element, GstEvent *event);
 
   gboolean              (*query)                (GstElement *element, GstQuery *query);
+
+  gboolean              (*post_message)         (GstElement *element, GstMessage *message);
 };
 </pre>
 <p>
@@ -605,6 +607,11 @@
 <td><p><span class="term"><em class="structfield"><code><a name="GstElementClass.query"></a>query</code></em> ()</span></p></td>
 <td>perform a <a class="link" href="gstreamer-GstQuery.html#GstQuery" title="struct GstQuery"><span class="type">GstQuery</span></a> on the element</td>
 </tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="GstElementClass.post-message"></a>post_message</code></em> ()</span></p></td>
+<td>called when a message is posted on the element. Chain up to
+the parent class' handler to have it posted on the bus.</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/gst/html/GstElementFactory.html b/docs/gst/html/GstElementFactory.html
index 1a44552..e6f2bc2 100644
--- a/docs/gst/html/GstElementFactory.html
+++ b/docs/gst/html/GstElementFactory.html
@@ -141,7 +141,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp20912512"></a><p class="title"><b>Example 6. Using an element factory</b></p>
+<a name="idp21432256"></a><p class="title"><b>Example 6. Using an element factory</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/GstObject.html b/docs/gst/html/GstObject.html
index 69c8d79..763b5eb 100644
--- a/docs/gst/html/GstObject.html
+++ b/docs/gst/html/GstObject.html
@@ -186,7 +186,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp30161888"></a><h3>controlled properties</h3>
+<a name="idp28871792"></a><h3>controlled properties</h3>
 <p>
 Controlled properties offers a lightweight way to adjust gobject
 properties over stream-time. It works by using time-stamped value pairs that
diff --git a/docs/gst/html/GstPad.html b/docs/gst/html/GstPad.html
index acd5e99..7c7abe1 100644
--- a/docs/gst/html/GstPad.html
+++ b/docs/gst/html/GstPad.html
@@ -1905,6 +1905,11 @@
 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
 <td>the gpointer to optional user data.</td>
 </tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a <a class="link" href="GstPad.html#GstPadProbeReturn" title="enum GstPadProbeReturn"><span class="type">GstPadProbeReturn</span></a>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/gst/html/GstPadTemplate.html b/docs/gst/html/GstPadTemplate.html
index b13b0fd..3d68044 100644
--- a/docs/gst/html/GstPadTemplate.html
+++ b/docs/gst/html/GstPadTemplate.html
@@ -132,7 +132,7 @@
 The following code example shows the code to create a pad from a padtemplate.
 </p>
 <div class="example">
-<a name="idp30516864"></a><p class="title"><b>Example 11. Create a pad from a padtemplate</b></p>
+<a name="idp30562032"></a><p class="title"><b>Example 11. Create a pad from a padtemplate</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/GstTypeFindFactory.html b/docs/gst/html/GstTypeFindFactory.html
index d971c26..7dc4a70 100644
--- a/docs/gst/html/GstTypeFindFactory.html
+++ b/docs/gst/html/GstTypeFindFactory.html
@@ -73,7 +73,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp10697952"></a><p class="title"><b>Example 13. how to write a simple typefinder</b></p>
+<a name="idp27698816"></a><p class="title"><b>Example 13. how to write a simple typefinder</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gst-building.html b/docs/gst/html/gst-building.html
index fef8dcd..e508552 100644
--- a/docs/gst/html/gst-building.html
+++ b/docs/gst/html/gst-building.html
@@ -31,7 +31,7 @@
 <td valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="idp7713072"></a><h2>Building GStreamer on UNIX</h2>
+<a name="idp7759168"></a><h2>Building GStreamer on UNIX</h2>
 <p>
     On UNIX, GStreamer uses the standard GNU build system,
     using <span class="application">autoconf</span> for package
@@ -92,7 +92,7 @@
   </p>
 </div>
 <div class="refsect1">
-<a name="idp9473616"></a><h2>Building GStreamer Applications</h2>
+<a name="idp8634800"></a><h2>Building GStreamer Applications</h2>
 <p>
 Applications and libraries can use <span class="command"><strong>pkg-config</strong></span> to get all the
 needed compiler and linker flags to build against GStreamer. Please note that
diff --git a/docs/gst/html/gst-running.html b/docs/gst/html/gst-running.html
index d368184..da1fac7 100644
--- a/docs/gst/html/gst-running.html
+++ b/docs/gst/html/gst-running.html
@@ -31,9 +31,9 @@
 <td valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="idp4095488"></a><h2>Running and debugging GStreamer Applications</h2>
+<a name="idp3330784"></a><h2>Running and debugging GStreamer Applications</h2>
 <div class="refsect2">
-<a name="idp9461168"></a><h3>Environment variables</h3>
+<a name="idp8488400"></a><h3>Environment variables</h3>
 <p> 
 GStreamer inspects a few of environment variables in addition to standard
 variables like <code class="envar">LANG</code>, <code class="envar">PATH</code> or <code class="envar">HOME</code>. 
diff --git a/docs/gst/html/gstreamer-Gst.html b/docs/gst/html/gstreamer-Gst.html
index e93d2f9..299fba5 100644
--- a/docs/gst/html/gstreamer-Gst.html
+++ b/docs/gst/html/gstreamer-Gst.html
@@ -83,7 +83,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp9723616"></a><p class="title"><b>Example 1. Initializing the gstreamer library</b></p>
+<a name="idp11739936"></a><p class="title"><b>Example 1. Initializing the gstreamer library</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -119,7 +119,7 @@
 the next code fragment:
 </p>
 <div class="example">
-<a name="idp8478800"></a><p class="title"><b>Example 2. Initializing own parameters when initializing gstreamer</b></p>
+<a name="idp8067152"></a><p class="title"><b>Example 2. Initializing own parameters when initializing gstreamer</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstBuffer.html b/docs/gst/html/gstreamer-GstBuffer.html
index db02879..4f470a3 100644
--- a/docs/gst/html/gstreamer-GstBuffer.html
+++ b/docs/gst/html/gstreamer-GstBuffer.html
@@ -212,7 +212,7 @@
 with a given width, height and bits per plane.
 </p>
 <div class="example">
-<a name="idp14288080"></a><p class="title"><b>Example 3. Creating a buffer for a video frame</b></p>
+<a name="idp14292944"></a><p class="title"><b>Example 3. Creating a buffer for a video frame</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstCaps.html b/docs/gst/html/gstreamer-GstCaps.html
index 7fc7e91..dbad46c 100644
--- a/docs/gst/html/gstreamer-GstCaps.html
+++ b/docs/gst/html/gstreamer-GstCaps.html
@@ -160,7 +160,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp15247184"></a><p class="title"><b>Example 4. Creating caps</b></p>
+<a name="idp18325072"></a><p class="title"><b>Example 4. Creating caps</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstEvent.html b/docs/gst/html/gstreamer-GstEvent.html
index e5d9d28..5326873 100644
--- a/docs/gst/html/gstreamer-GstEvent.html
+++ b/docs/gst/html/gstreamer-GstEvent.html
@@ -206,7 +206,7 @@
 the needed parameters to specify seeking time and mode.
 </p>
 <div class="example">
-<a name="idp22752240"></a><p class="title"><b>Example 8. performing a seek on a pipeline</b></p>
+<a name="idp23273888"></a><p class="title"><b>Example 8. performing a seek on a pipeline</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstGError.html b/docs/gst/html/gstreamer-GstGError.html
index 9cef2c1..0038528 100644
--- a/docs/gst/html/gstreamer-GstGError.html
+++ b/docs/gst/html/gstreamer-GstGError.html
@@ -115,7 +115,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp9564400"></a><p class="title"><b>Example 7. Throwing an error</b></p>
+<a name="idp3647408"></a><p class="title"><b>Example 7. Throwing an error</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstIterator.html b/docs/gst/html/gstreamer-GstIterator.html
index c18d596..6dcec3b 100644
--- a/docs/gst/html/gstreamer-GstIterator.html
+++ b/docs/gst/html/gstreamer-GstIterator.html
@@ -122,7 +122,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp23319008"></a><p class="title"><b>Example 9. Using an iterator</b></p>
+<a name="idp23894336"></a><p class="title"><b>Example 9. Using an iterator</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstMessage.html b/docs/gst/html/gstreamer-GstMessage.html
index 87408d8..6dc1a24 100644
--- a/docs/gst/html/gstreamer-GstMessage.html
+++ b/docs/gst/html/gstreamer-GstMessage.html
@@ -273,7 +273,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp30847824"></a><p class="title"><b>Example 10. Posting a <a class="link" href="gstreamer-GstMessage.html#GstMessage" title="struct GstMessage"><span class="type">GstMessage</span></a></b></p>
+<a name="idp30603584"></a><p class="title"><b>Example 10. Posting a <a class="link" href="gstreamer-GstMessage.html#GstMessage" title="struct GstMessage"><span class="type">GstMessage</span></a></b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
diff --git a/docs/gst/html/gstreamer-GstQuery.html b/docs/gst/html/gstreamer-GstQuery.html
index 31d7af9..4a1a953 100644
--- a/docs/gst/html/gstreamer-GstQuery.html
+++ b/docs/gst/html/gstreamer-GstQuery.html
@@ -284,7 +284,7 @@
 <p>
 </p>
 <div class="example">
-<a name="idp40848832"></a><p class="title"><b>Example 12. Query duration on a pipeline</b></p>
+<a name="idp40600640"></a><p class="title"><b>Example 12. Query duration on a pipeline</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -2034,7 +2034,7 @@
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>buffering_left</code></em> :</span></p></td>
-<td>amount of buffering time left</td>
+<td>amount of buffering time left in milliseconds</td>
 </tr>
 </tbody>
 </table></div>
@@ -2074,7 +2074,8 @@
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>buffering_left</code></em> :</span></p></td>
-<td>amount of buffering time left, or NULL. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
+<td>amount of buffering time left in
+milliseconds, or NULL. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 </td>
 </tr>
 </tbody>
diff --git a/docs/gst/html/gstreamer-GstSample.html b/docs/gst/html/gstreamer-GstSample.html
index e500b1c..23fba64 100644
--- a/docs/gst/html/gstreamer-GstSample.html
+++ b/docs/gst/html/gstreamer-GstSample.html
@@ -198,7 +198,8 @@
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>segment</code></em> :</span></p></td>
-<td>transfer none) (allow-none): a <a class="link" href="gstreamer-GstSegment.html#GstSegment" title="struct GstSegment"><span class="type">GstSegment</span></a>, or NULL</td>
+<td>a <a class="link" href="gstreamer-GstSegment.html#GstSegment" title="struct GstSegment"><span class="type">GstSegment</span></a>, or NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
+</td>
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td>
diff --git a/docs/gst/html/gstreamer-GstTagList.html b/docs/gst/html/gstreamer-GstTagList.html
index 534c36c..c7c2bea 100644
--- a/docs/gst/html/gstreamer-GstTagList.html
+++ b/docs/gst/html/gstreamer-GstTagList.html
@@ -359,7 +359,7 @@
 <p>
 </p>
 <div class="table">
-<a name="idp45190816"></a><p class="title"><b>Table 1. merge mode</b></p>
+<a name="idp45324000"></a><p class="title"><b>Table 1. merge mode</b></p>
 <div class="table-contents"><table summary="merge mode" border="1">
 <colgroup>
 <col>
diff --git a/docs/gst/html/gstreamer-GstVersion.html b/docs/gst/html/gstreamer-GstVersion.html
index 49e7b6c..4aab619 100644
--- a/docs/gst/html/gstreamer-GstVersion.html
+++ b/docs/gst/html/gstreamer-GstVersion.html
@@ -88,7 +88,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:
diff --git a/docs/gst/html/gstreamer.devhelp2 b/docs/gst/html/gstreamer.devhelp2
index d67a6a5..a55a196 100644
--- a/docs/gst/html/gstreamer.devhelp2
+++ b/docs/gst/html/gstreamer.devhelp2
@@ -71,7 +71,7 @@
     <sub name="Annotation Glossary" link="annotation-glossary.html"/>
   </chapters>
   <functions>
-    <keyword type="" name="Environment variables" link="gst-running.html#idp9461168"/>
+    <keyword type="" name="Environment variables" link="gst-running.html#idp8488400"/>
     <keyword type="function" name="gst_init ()" link="gstreamer-Gst.html#gst-init"/>
     <keyword type="function" name="gst_init_check ()" link="gstreamer-Gst.html#gst-init-check"/>
     <keyword type="function" name="gst_init_get_option_group ()" link="gstreamer-Gst.html#gst-init-get-option-group"/>
@@ -105,7 +105,7 @@
     <keyword type="function" name="gst_atomic_queue_peek ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-peek"/>
     <keyword type="function" name="gst_atomic_queue_pop ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-pop"/>
     <keyword type="function" name="gst_atomic_queue_length ()" link="gstreamer-GstAtomicQueue.html#gst-atomic-queue-length"/>
-    <keyword type="" name="Notes" link="GstBin.html#idp8569680"/>
+    <keyword type="" name="Notes" link="GstBin.html#idp11985136"/>
     <keyword type="struct" name="struct GstBin" link="GstBin.html#GstBin-struct"/>
     <keyword type="struct" name="struct GstBinClass" link="GstBin.html#GstBinClass"/>
     <keyword type="function" name="gst_bin_new ()" link="GstBin.html#gst-bin-new"/>
@@ -906,7 +906,7 @@
     <keyword type="function" name="gst_mini_object_replace ()" link="gstreamer-GstMiniObject.html#gst-mini-object-replace"/>
     <keyword type="function" name="gst_mini_object_take ()" link="gstreamer-GstMiniObject.html#gst-mini-object-take"/>
     <keyword type="function" name="gst_mini_object_steal ()" link="gstreamer-GstMiniObject.html#gst-mini-object-steal"/>
-    <keyword type="" name="controlled properties" link="GstObject.html#idp30161888"/>
+    <keyword type="" name="controlled properties" link="GstObject.html#idp28871792"/>
     <keyword type="struct" name="struct GstObject" link="GstObject.html#GstObject-struct"/>
     <keyword type="struct" name="struct GstObjectClass" link="GstObject.html#GstObjectClass"/>
     <keyword type="enum" name="enum GstObjectFlags" link="GstObject.html#GstObjectFlags"/>
diff --git a/docs/gst/html/index.html b/docs/gst/html/index.html
index 500c7ef..d93add7 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.0.1)
+      for GStreamer Core 1.0 (1.0.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/libs/Makefile.am b/docs/libs/Makefile.am
index 60d7318..4c621b5 100644
--- a/docs/libs/Makefile.am
+++ b/docs/libs/Makefile.am
@@ -37,7 +37,7 @@
 CFILE_GLOB=$(top_srcdir)/libs/gst/*/*.c
 
 # Extra options to pass to gtkdoc-scanobj or gtkdoc-scangobj.
-SCANOBJ_OPTIONS=--type-init-func="g_type_init();gst_init(&argc,&argv)"
+SCANOBJ_OPTIONS=--type-init-func="gst_init(&argc,&argv)"
 
 # Header files to ignore when scanning.
 IGNORE_HFILES = \
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index dcf060b..7f55925 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -101,7 +101,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -322,6 +322,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -358,6 +361,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -446,7 +450,7 @@
 CFILE_GLOB = $(top_srcdir)/libs/gst/*/*.c
 
 # Extra options to pass to gtkdoc-scanobj or gtkdoc-scangobj.
-SCANOBJ_OPTIONS = --type-init-func="g_type_init();gst_init(&argc,&argv)"
+SCANOBJ_OPTIONS = --type-init-func="gst_init(&argc,&argv)"
 
 # Header files to ignore when scanning.
 IGNORE_HFILES = \
diff --git a/docs/libs/html/GstBaseSrc.html b/docs/libs/html/GstBaseSrc.html
index 87d8910..b572cb3 100644
--- a/docs/libs/html/GstBaseSrc.html
+++ b/docs/libs/html/GstBaseSrc.html
@@ -68,7 +68,7 @@
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GstBaseSrc.html#gst-base-src-new-seamless-segment" title="gst_base_src_new_seamless_segment ()">gst_base_src_new_seamless_segment</a>   (<em class="parameter"><code><a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> *src</code></em>,
                                                          <em class="parameter"><code><span class="type">gint64</span> start</code></em>,
                                                          <em class="parameter"><code><span class="type">gint64</span> stop</code></em>,
-                                                         <em class="parameter"><code><span class="type">gint64</span> position</code></em>);
+                                                         <em class="parameter"><code><span class="type">gint64</span> time</code></em>);
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GstBaseSrc.html#gst-base-src-set-caps" title="gst_base_src_set_caps ()">gst_base_src_set_caps</a>               (<em class="parameter"><code><a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> *src</code></em>,
                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>);
 <span class="returnvalue">void</span>                <a class="link" href="GstBaseSrc.html#gst-base-src-get-allocator" title="gst_base_src_get_allocator ()">gst_base_src_get_allocator</a>          (<em class="parameter"><code><a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> *src</code></em>,
@@ -248,7 +248,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp34470512"></a><h3>Controlled shutdown of live sources in applications</h3>
+<a name="idp6837152"></a><h3>Controlled shutdown of live sources in applications</h3>
 <p>
 Applications that record from a live source may want to stop recording
 in a controlled way, so that the recording is stopped, but the data
@@ -779,7 +779,7 @@
 <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_src_new_seamless_segment   (<em class="parameter"><code><a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> *src</code></em>,
                                                          <em class="parameter"><code><span class="type">gint64</span> start</code></em>,
                                                          <em class="parameter"><code><span class="type">gint64</span> stop</code></em>,
-                                                         <em class="parameter"><code><span class="type">gint64</span> position</code></em>);</pre>
+                                                         <em class="parameter"><code><span class="type">gint64</span> time</code></em>);</pre>
 <p>
 Prepare a new seamless segment for emission downstream. This function must
 only be called by derived sub-classes, and only from the <code class="function">create()</code> function,
diff --git a/docs/libs/html/GstBaseTransform.html b/docs/libs/html/GstBaseTransform.html
index 05f8e35..2104627 100644
--- a/docs/libs/html/GstBaseTransform.html
+++ b/docs/libs/html/GstBaseTransform.html
@@ -118,7 +118,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp35617104"></a><h3>Use Cases</h3>
+<a name="idp6797872"></a><h3>Use Cases</h3>
 <p>
 </p>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -258,7 +258,7 @@
 </p>
 <hr>
 <div class="refsect2">
-<a name="idp38847872"></a><h3>Sub-class settable flags on GstBaseTransform</h3>
+<a name="idp9811680"></a><h3>Sub-class settable flags on GstBaseTransform</h3>
 <p>
 </p>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
diff --git a/docs/libs/html/GstCollectPads.html b/docs/libs/html/GstCollectPads.html
index 8e5c47e..a25c9f0 100644
--- a/docs/libs/html/GstCollectPads.html
+++ b/docs/libs/html/GstCollectPads.html
@@ -300,7 +300,7 @@
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
-<td>the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>
+<td>the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
 </td>
 </tr>
 <tr>
@@ -443,7 +443,7 @@
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>inbuffer</code></em> :</span></p></td>
-<td>the input <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>
+<td>the input <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
 </td>
 </tr>
 <tr>
@@ -1162,7 +1162,7 @@
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>
 Install a clipping function that is called right after a buffer is received
-on a pad managed by <em class="parameter"><code>pads</code></em>. See <span class="type">GstCollectPad2ClipFunction</span> for more info.
+on a pad managed by <em class="parameter"><code>pads</code></em>. See <a class="link" href="GstCollectPads.html#GstCollectPadsClipFunction" title="GstCollectPadsClipFunction ()"><span class="type">GstCollectPadsClipFunction</span></a> for more info.
 </p>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
diff --git a/docs/libs/html/gstreamer-libs.devhelp2 b/docs/libs/html/gstreamer-libs.devhelp2
index 317249f..9d5099a 100644
--- a/docs/libs/html/gstreamer-libs.devhelp2
+++ b/docs/libs/html/gstreamer-libs.devhelp2
@@ -64,7 +64,7 @@
     <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="" name="Controlled shutdown of live sources in applications" link="GstBaseSrc.html#idp34470512"/>
+    <keyword type="" name="Controlled shutdown of live sources in applications" link="GstBaseSrc.html#idp6837152"/>
     <keyword type="struct" name="struct GstBaseSrc" link="GstBaseSrc.html#GstBaseSrc-struct"/>
     <keyword type="struct" name="struct GstBaseSrcClass" link="GstBaseSrc.html#GstBaseSrcClass"/>
     <keyword type="enum" name="enum GstBaseSrcFlags" link="GstBaseSrc.html#GstBaseSrcFlags"/>
@@ -130,8 +130,8 @@
     <keyword type="property" name="The &quot;sync&quot; property" link="GstBaseSink.html#GstBaseSink--sync"/>
     <keyword type="property" name="The &quot;throttle-time&quot; property" link="GstBaseSink.html#GstBaseSink--throttle-time"/>
     <keyword type="property" name="The &quot;ts-offset&quot; property" link="GstBaseSink.html#GstBaseSink--ts-offset"/>
-    <keyword type="" name="Use Cases" link="GstBaseTransform.html#idp35617104"/>
-    <keyword type="" name="Sub-class settable flags on GstBaseTransform" link="GstBaseTransform.html#idp38847872"/>
+    <keyword type="" name="Use Cases" link="GstBaseTransform.html#idp6797872"/>
+    <keyword type="" name="Sub-class settable flags on GstBaseTransform" link="GstBaseTransform.html#idp9811680"/>
     <keyword type="struct" name="struct GstBaseTransform" link="GstBaseTransform.html#GstBaseTransform-struct"/>
     <keyword type="struct" name="struct GstBaseTransformClass" link="GstBaseTransform.html#GstBaseTransformClass"/>
     <keyword type="function" name="gst_base_transform_is_passthrough ()" link="GstBaseTransform.html#gst-base-transform-is-passthrough"/>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 1468796..98ba67c 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.0.1)
+      for GStreamer Library 1.0 (1.0.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>
diff --git a/docs/manual/Makefile.in b/docs/manual/Makefile.in
index d63af75..ba67747 100644
--- a/docs/manual/Makefile.in
+++ b/docs/manual/Makefile.in
@@ -105,7 +105,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -353,6 +353,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -389,6 +392,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/manual/advanced-autoplugging.xml b/docs/manual/advanced-autoplugging.xml
index 984617b..5f7a0e0 100644
--- a/docs/manual/advanced-autoplugging.xml
+++ b/docs/manual/advanced-autoplugging.xml
@@ -10,7 +10,7 @@
     by looking at all available elements in a system. This process is called
     autoplugging, and &GStreamer; contains high-quality autopluggers. If
     you're looking for an autoplugger, don't read any further and go to
-    <xref linkend="chapter-components"/>. This chapter will explain the
+    <xref linkend="chapter-playback-components"/>. This chapter will explain the
     <emphasis>concept</emphasis> of autoplugging and typefinding. It will
     explain what systems &GStreamer; includes to dynamically detect the
     type of a media stream, and how to generate a pipeline of decoder
@@ -234,390 +234,9 @@
 
   <sect1 id="section-dynamic">
     <title>Dynamically autoplugging a pipeline</title>
-    <warning><para>
-      The code in this section is broken, outdated and overly complicated.
-      Also, you should use decodebin, playbin or uridecodebin to get
-      decoders plugged automatically.
-    </para></warning>
-    <para> 
-      In this chapter we will see how you can create a dynamic pipeline. A
-      dynamic pipeline is a pipeline that is updated or created while data
-     is flowing through it. We will create a partial pipeline first and add
-      more elements while the pipeline is playing. The basis of this player
-      will be the application that we wrote in the previous section (<xref
-      linkend="section-typefinding"/>) to identify unknown media streams.
-    </para>
-    <!-- example-begin dynamic.c a --><!--
-#include &lt;gst/gst.h&gt;
-
-GstElement *pipeline;
-    --><!-- example-end dynamic.c a -->
     <para>
-      Once the type of the media has been found, we will find elements in
-      the registry that can decode this streamtype. For this, we will get
-      all element factories (which we've seen before in <xref
-      linkend="section-elements-create"/>) and find the ones with the
-      given media type and capabilities on their sinkpad. Note that we will
-      only use parsers, demuxers and decoders. We will not use factories for
-      any other element types, or we might get into a loop of encoders and
-      decoders. For this, we will want to build a list of <quote>allowed</quote>
-      factories right after initializing &GStreamer;.
-    </para>
-    <programlisting><!-- example-begin dynamic.c b -->
-static GList *factories;
-
-/*
- * This function is called by the registry loader. Its return value
- * (TRUE or FALSE) decides whether the given feature will be included
- * in the list that we're generating further down.
- */
-
-static gboolean
-cb_feature_filter (GstPluginFeature *feature,
-		   gpointer          data)
-{
-  const gchar *klass;
-  guint rank;
-
-  /* we only care about element factories */
-  if (!GST_IS_ELEMENT_FACTORY (feature))
-    return FALSE;
-
-  /* only parsers, demuxers and decoders */
-  klass = gst_element_factory_get_metadata (GST_ELEMENT_FACTORY (feature), GST_ELEMENT_METADATA_KLASS);
-  if (g_strrstr (klass, "Demux") == NULL &amp;&amp;
-      g_strrstr (klass, "Decoder") == NULL &amp;&amp;
-      g_strrstr (klass, "Parse") == NULL)
-    return FALSE;
-
-  /* only select elements with autoplugging rank */
-  rank = gst_plugin_feature_get_rank (feature);
-  if (rank &lt; GST_RANK_MARGINAL)
-    return FALSE;
-
-  return TRUE;
-}
-
-/*
- * This function is called to sort features by rank.
- */
-
-static gint
-cb_compare_ranks (GstPluginFeature *f1,
-		  GstPluginFeature *f2)
-{
-  return gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1);
-}
-
-static void
-init_factories (void)
-{
-  /* first filter out the interesting element factories */
-  factories = gst_registry_feature_filter (
-      gst_registry_get (),
-      (GstPluginFeatureFilter) cb_feature_filter, FALSE, NULL);
-
-  /* sort them according to their ranks */
-  factories = g_list_sort (factories, (GCompareFunc) cb_compare_ranks);
-}
-    <!-- example-end dynamic.c b --></programlisting>
-    <para>
-      From this list of element factories, we will select the one that most
-      likely will help us decoding a media stream to a given output type.
-      For each newly created element, we will again try to autoplug new
-      elements to its source pad(s). Also, if the element has dynamic pads
-      (which we've seen before in <xref linkend="section-pads-dynamic"/>),
-      we will listen for newly created source pads and handle those, too.
-      The following code replaces the <function>cb_type_found</function>
-      from the previous section with a function to initiate autoplugging,
-      which will continue with the above approach.
-    </para>
-    <programlisting><!-- example-begin dynamic.c c -->
-static void try_to_plug (GstPad *pad, GstCaps *caps);
-
-static GstElement *audiosink;
-
-static void
-cb_newpad (GstElement *element,
-	   GstPad     *pad,
-	   gpointer    data)
-{
-  GstCaps *caps;
-
-  caps = gst_pad_query_caps (pad, NULL);
-  try_to_plug (pad, caps);
-  gst_caps_unref (caps);
-}
-
-static void
-close_link (GstPad      *srcpad,
-	    GstElement  *sinkelement,
-	    const gchar *padname,
-	    const GList *templlist)
-{
-  GstPad *pad;
-  gboolean has_dynamic_pads = FALSE;
-
-  g_print ("Plugging pad %s:%s to newly created %s:%s\n",
-	   gst_object_get_name (GST_OBJECT (gst_pad_get_parent (srcpad))),
-	   gst_pad_get_name (srcpad),
-	   gst_object_get_name (GST_OBJECT (sinkelement)), padname);
-
-  /* add the element to the pipeline and set correct state */
-  if (sinkelement != audiosink) {
-    gst_bin_add (GST_BIN (pipeline), sinkelement);
-    gst_element_set_state (sinkelement, GST_STATE_READY);
-  }
-  pad = gst_element_get_static_pad (sinkelement, padname);
-  gst_pad_link (srcpad, pad);
-  if (sinkelement != audiosink) {
-    gst_element_set_state (sinkelement, GST_STATE_PAUSED);
-  }
-  gst_object_unref (GST_OBJECT (pad));
-
-  /* if we have static source pads, link those. If we have dynamic
-   * source pads, listen for pad-added signals on the element */
-  for ( ; templlist != NULL; templlist = templlist->next) {
-    GstStaticPadTemplate *templ = templlist->data;
-
-    /* only sourcepads, no request pads */
-    if (templ->direction != GST_PAD_SRC ||
-        templ->presence == GST_PAD_REQUEST) {
-      continue;
-    }
-
-    switch (templ->presence) {
-      case GST_PAD_ALWAYS: {
-        GstPad *pad = gst_element_get_static_pad (sinkelement, templ->name_template);
-        GstCaps *caps = gst_pad_query_caps (pad, NULL);
-
-        /* link */
-        try_to_plug (pad, caps);
-        gst_object_unref (GST_OBJECT (pad));
-        gst_caps_unref (caps);
-        break;
-      }
-      case GST_PAD_SOMETIMES:
-        has_dynamic_pads = TRUE;
-        break;
-      default:
-        break;
-    }
-  }
-
-  /* listen for newly created pads if this element supports that */
-  if (has_dynamic_pads) {
-    g_signal_connect (sinkelement, "pad-added", G_CALLBACK (cb_newpad), NULL);
-  }
-}
-
-static void
-try_to_plug (GstPad        *pad,
-	     GstCaps       *caps)
-{
-  GstObject *parent = GST_OBJECT (GST_OBJECT_PARENT (pad));
-  const gchar *media;
-  const GList *item;
-  GstCaps *res, *audiocaps;
-
-  /* don't plug if we're already plugged - FIXME: memleak for pad */
-  if (GST_PAD_IS_LINKED (gst_element_get_static_pad (audiosink, "sink"))) {
-    g_print ("Omitting link for pad %s:%s because we're already linked\n",
-	     GST_OBJECT_NAME (parent), GST_OBJECT_NAME (pad));
-    return;
-  }
-
-  /* as said above, we only try to plug audio... Omit video */
-  media = gst_structure_get_name (gst_caps_get_structure (caps, 0));
-  if (g_strrstr (media, "video")) {
-    g_print ("Omitting link for pad %s:%s because media type %s is non-audio\n",
-	     GST_OBJECT_NAME (parent), GST_OBJECT_NAME (pad), media);
-    return;
-  }
-
-  /* can it link to the audiopad? */
-  audiocaps = gst_pad_query_caps (gst_element_get_static_pad (audiosink, "sink"),
-  NULL);
-  res = gst_caps_intersect (caps, audiocaps);
-  if (res &amp;&amp; !gst_caps_is_empty (res)) {
-    g_print ("Found pad to link to audiosink - plugging is now done\n");
-    close_link (pad, audiosink, "sink", NULL);
-    gst_caps_unref (audiocaps);
-    gst_caps_unref (res);
-    return;
-  }
-  gst_caps_unref (audiocaps);
-  gst_caps_unref (res);
-
-  /* try to plug from our list */
-  for (item = factories; item != NULL; item = item->next) {
-    GstElementFactory *factory = GST_ELEMENT_FACTORY (item->data);
-    const GList *pads;
-
-    for (pads = gst_element_factory_get_static_pad_templates (factory);
-         pads != NULL; pads = pads->next) {
-      GstStaticPadTemplate *templ = pads->data;
-
-      /* find the sink template - need an always pad*/
-      if (templ->direction != GST_PAD_SINK ||
-          templ->presence != GST_PAD_ALWAYS) {
-        continue;
-      }
-
-      /* can it link? */
-      res = gst_caps_intersect (caps,
-          gst_static_caps_get (&amp;templ->static_caps));
-      if (res &amp;&amp; !gst_caps_is_empty (res)) {
-        GstElement *element;
-        gchar *name_template = g_strdup (templ->name_template);
-
-        /* close link and return */
-        gst_caps_unref (res);
-        element = gst_element_factory_create (factory, NULL);
-        close_link (pad, element, name_template,
-		    gst_element_factory_get_static_pad_templates (factory));
-        g_free (name_template);
-        return;
-      }
-      gst_caps_unref (res);
-
-      /* we only check one sink template per factory, so move on to the
-       * next factory now */
-      break;
-    }
-  }
-
-  /* if we get here, no item was found */
-  g_print ("No compatible pad found to decode %s on %s:%s\n",
-	   media, GST_OBJECT_NAME (parent), GST_OBJECT_NAME (pad));
-}
-
-static void
-cb_typefound (GstElement *typefind,
-	      guint       probability,
-	      GstCaps    *caps,
-	      gpointer    data)
-{
-  gchar *s;
-  GstPad *pad;
-
-  s = gst_caps_to_string (caps);
-  g_print ("Detected media type %s\n", s);
-  g_free (s);
-
-  /* actually plug now */
-  pad = gst_element_get_static_pad (typefind, "src");
-  try_to_plug (pad, caps);
-  gst_object_unref (GST_OBJECT (pad));
-}
-    <!-- example-end dynamic.c c --></programlisting>
-    <para>
-      By doing all this, we will be able to make a simple autoplugger that
-      can automatically setup a pipeline for any media type. In the example
-      above, we did this for audio only. However, we can also do this
-      for video to create a player that plays both audio and video.
-    </para>
-    <!-- example-begin dynamic.c d --><!--
-static gboolean
-my_bus_callback (GstBus     *bus,
-                 GstMessage *message,
-                 gpointer    data)
-{
-  GMainLoop *loop = data;
-
-  switch (GST_MESSAGE_TYPE (message)) {
-    case GST_MESSAGE_ERROR: {
-      GError *err;
-      gchar *debug;
-
-      gst_message_parse_error (message, &amp;err, &amp;debug);
-      g_print ("Error: %s\n", err-&gt;message);
-      g_error_free (err);
-      g_free (debug);
-
-      g_main_loop_quit (loop);
-      break;
-    }
-    case GST_MESSAGE_EOS:
-      /* end-of-stream */
-      g_main_loop_quit (loop);
-      break;
-    default:
-      break;
-  }
-
-  /* remove from queue */
-  return TRUE;
-}
-
-gint
-main (gint   argc,
-      gchar *argv[])
-{
-  GMainLoop *loop;
-  GstElement *typefind, *realsink;
-  GstBus *bus;
-  GError *err = NULL;
-  gchar *p;
-
-  /* init GStreamer and ourselves */
-  gst_init (&amp;argc, &amp;argv);
-  loop = g_main_loop_new (NULL, FALSE);
-  init_factories ();
-
-  /* args */
-  if (argc != 2) {
-    g_print ("Usage: %s &lt;filename&gt;\n", argv[0]);
-    return -1;
-  }
-
-  /* pipeline */
-  p = g_strdup_printf ("filesrc location=\"%s\" ! typefind name=tf", argv[1]);
-  pipeline = gst_parse_launch (p, &amp;err);
-  g_free (p);
-
-  if (err) {
-    g_error ("Could not construct pipeline: %s", err-&gt;message);
-    g_error_free (err);
-    return -1;
-  }
-
-  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
-  gst_bus_add_watch (bus, my_bus_callback, NULL);
-  gst_object_unref (bus);
-
-  typefind = gst_bin_get_by_name (GST_BIN (pipeline), "tf");
-  g_signal_connect (typefind, "have-type", G_CALLBACK (cb_typefound), NULL);
-  gst_object_unref (GST_OBJECT (typefind));
-  audiosink = gst_element_factory_make ("audioconvert", "aconv");
-  realsink = gst_element_factory_make ("alsasink", "audiosink");
-  gst_bin_add_many (GST_BIN (pipeline), audiosink, realsink, NULL);
-  gst_element_link (audiosink, realsink);
-  gst_element_set_state (pipeline, GST_STATE_PLAYING);
-
-  /* run */
-  g_main_loop_run (loop);
-
-  /* exit */
-  gst_element_set_state (pipeline, GST_STATE_NULL);
-  gst_object_unref (GST_OBJECT (pipeline));
-
-  return 0;
-}
-    --><!-- example-end dynamic.c d -->
-    <para>
-      The example above is a good first try for an autoplugger. Next steps
-      would be to listen for <quote>pad-removed</quote> signals, so we
-      can dynamically change the plugged pipeline if the stream changes
-      (this happens for DVB or Ogg radio). Also, you might want special-case
-      code for input with known content (such as a DVD or an audio-CD),
-      and much, much more. Moreover, you'll want many checks to prevent
-      infinite loops during autoplugging, maybe you'll want to implement
-      shortest-path-finding to make sure the most optimal pipeline is chosen,
-      and so on. Basically, the features that you implement in an autoplugger
-      depend on what you want to use it for. For full-blown implementations,
-      see the <quote>playbin</quote> and <quote>decodebin</quote> elements in
-      <xref linkend="chapter-components"/>.
+      See <xref linkend="chapter-playback-components"/> for using the high
+      level object that you can use to dynamically construct pipelines.
     </para>
   </sect1>
 </chapter>
diff --git a/docs/manual/advanced-buffering.xml b/docs/manual/advanced-buffering.xml
new file mode 100644
index 0000000..6d1660f
--- /dev/null
+++ b/docs/manual/advanced-buffering.xml
@@ -0,0 +1,450 @@
+<chapter id="chapter-buffering">
+  <title>Buffering</title>
+  <para>
+    The purpose of buffering is to accumulate enough data in a pipeline so that
+    playback can occur smoothly and without interruptions. It is typically done
+    when reading from a (slow) and non-live network source but can also be
+    used for live sources.
+  </para>
+  <para>
+    &GStreamer; provides support for the following use cases:
+    <itemizedlist>
+      <listitem>
+        <para>
+          Buffering up to a specific amount of data, in memory, before starting
+          playback so that network fluctuations are minimized.
+          See <xref linkend="section-buffering-stream"/>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download of the network file to a local disk with fast seeking in the
+          downloaded data. This is similar to the quicktime/youtube players.
+          See <xref linkend="section-buffering-download"/>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Caching of (semi)-live streams to a local, on disk, ringbuffer with
+          seeking in the cached area. This is similar to tivo-like timeshifting.
+          See <xref linkend="section-buffering-timeshift"/>.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </para>
+  <para>
+    &GStreamer; can provide the application with progress reports about the
+    current buffering state as well as let the application decide on how
+    to buffer and when the buffering stops.
+  </para>
+  <para>
+    In the most simple case, the application has to listen for BUFFERING
+    messages on the bus. If the percent indicator inside the BUFFERING message
+    is smaller than 100, the pipeline is buffering. When a message is
+    received with 100 percent, buffering is complete. In the buffering state,
+    the application should keep the pipeline in the PAUSED state. When buffering
+    completes, it can put the pipeline (back) in the PLAYING state.
+  </para>
+  <para>
+    What follows is an example of how the message handler could deal with
+    the BUFFERING messages. We will see more advanced methods in
+    <xref linkend="section-buffering-strategies"/>.
+  </para>
+  <programlisting>
+<![CDATA[
+  [...]
+
+  switch (GST_MESSAGE_TYPE (message)) {
+    case GST_MESSAGE_BUFFERING:{
+      gint percent;
+
+      /* no state management needed for live pipelines */
+      if (is_live)
+        break;
+
+      gst_message_parse_buffering (message, &percent);
+
+      if (percent == 100) {
+        /* a 100% message means buffering is done */
+        buffering = FALSE;
+        /* if the desired state is playing, go back */
+        if (target_state == GST_STATE_PLAYING) {
+          gst_element_set_state (pipeline, GST_STATE_PLAYING);
+        }
+      } else {
+        /* buffering busy */
+        if (buffering == FALSE && target_state == GST_STATE_PLAYING) {
+          /* we were not buffering but PLAYING, PAUSE  the pipeline. */
+          gst_element_set_state (pipeline, GST_STATE_PAUSED);
+        }
+        buffering = TRUE;
+      }
+      break;
+    case ...
+
+  [...]
+]]>
+  </programlisting>
+
+  <sect1 id="section-buffering-stream">
+    <title>Stream buffering </title>
+    <programlisting>
+      +---------+     +---------+     +-------+
+      | httpsrc |     | buffer  |     | demux |
+      |        src - sink      src - sink     ....
+      +---------+     +---------+     +-------+
+    </programlisting>
+    <para>
+      In this case we are reading from a slow network source into a buffer
+      element (such as queue2).
+    </para>
+    <para>
+      The buffer element has a low and high watermark expressed in bytes. The
+      buffer uses the watermarks as follows:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The buffer element will post BUFFERING messages until the high
+          watermark is hit. This instructs the application to keep the pipeline
+          PAUSED, which will eventually block the srcpad from pushing while
+          data is prerolled in the sinks.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          When the high watermark is hit, a BUFFERING message with 100% will be
+          posted, which instructs the application to continue playback.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          When during playback, the low watermark is hit, the queue will start
+          posting BUFFERING messages again, making the application PAUSE the
+          pipeline again until the high watermark is hit again. This is called
+          the rebuffering stage.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          During playback, the queue level will fluctuate between the high and
+          the low watermark as a way to compensate for network irregularities.
+        </para>
+      </listitem>
+   </itemizedlist>
+   <para>
+     This buffering method is usable when the demuxer operates in push mode.
+     Seeking in the stream requires the seek to happen in the network source.
+     It is mostly desirable when the total duration of the file is not known,
+     such as in live streaming or when efficient seeking is not
+     possible/required.
+   </para>
+   <para>
+     The problem is configuring a good low and high watermark. Here are some
+     ideas:
+   </para>
+   <itemizedlist>
+      <listitem>
+        <para>
+          It is possible to measure the network bandwidth and configure the
+          low/high watermarks in such a way that buffering takes a fixed
+          amount of time.
+        </para>
+        <para>
+          The queue2 element in &GStreamer; core has the max-size-time property
+          that, together with the use-rate-estimate property, does exactly
+          that. Also the playbin buffer-duration property uses the rate estimate
+          to scale the amount of data that is buffered.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Based on the codec bitrate, it is also possible to set the watermarks
+          in such a way that a fixed amount of data is buffered before playback
+          starts. Normally, the buffering element doesn't know about the
+          bitrate of the stream but it can get this with a query.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Start with a fixed amount of bytes, measure the time between
+          rebuffering and increase the queue size until the time between
+          rebuffering is within the application's chosen limits.
+        </para>
+      </listitem>
+   </itemizedlist>
+   <para>
+     The buffering element can be inserted anywhere in the pipeline. You could,
+     for example, insert the buffering element before a decoder. This would
+     make it possible to set the low/high watermarks based on time.
+   </para>
+   <para>
+     The buffering flag on playbin, performs buffering on the parsed data.
+     Another advantage of doing the buffering at a later stage is that you can
+     let the demuxer operate in pull mode. When reading data from a slow
+     network drive (with filesrc) this can be an interesting way to buffer.
+   </para>
+  </sect1>
+
+  <sect1 id="section-buffering-download">
+    <title>Download buffering </title>
+    <programlisting>
+      +---------+     +---------+     +-------+
+      | httpsrc |     | buffer  |     | demux |
+      |        src - sink      src - sink     ....
+      +---------+     +----|----+     +-------+
+                           V
+                          file
+    </programlisting>
+    <para>
+      If we know the server is streaming a fixed length file to the client,
+      the application can choose to download the entire file on disk. The
+      buffer element will provide a push or pull based srcpad to the demuxer
+      to navigate in the downloaded file.
+    </para>
+    <para>
+      This mode is only suitable when the client can determine the length of
+      the file on the server.
+    </para>
+    <para>
+      In this case, buffering messages will be emited as usual when the
+      requested range is not within the downloaded area + buffersize. The
+      buffering message will also contain an indication that incremental
+      download is being performed. This flag can be used to let the application
+      control the buffering in a more intelligent way, using the BUFFERING
+      query, for example. See <xref linkend="section-buffering-strategies"/>.
+    </para>
+  </sect1>
+
+  <sect1 id="section-buffering-timeshift">
+    <title>Timeshift buffering </title>
+    <programlisting>
+      +---------+     +---------+     +-------+
+      | httpsrc |     | buffer  |     | demux |
+      |        src - sink      src - sink     ....
+      +---------+     +----|----+     +-------+
+                           V
+                       file-ringbuffer
+    </programlisting>
+    <para>
+      In this mode, a fixed size ringbuffer is kept to download the server
+      content.  This allows for seeking in the buffered data. Depending on the
+      size of the ringbuffer one can seek further back in time.
+    </para>
+    <para>
+      This mode is suitable for all live streams. As with the incremental
+      download mode, buffering messages are emited along with an indication
+      that timeshifting download is in progress.
+    </para>
+  </sect1>
+
+  <sect1 id="section-buffering-live">
+    <title>Live buffering </title>
+    <para>
+      In live pipelines we usually introduce some fixed latency between the
+      capture and the playback elements. This latency can be introduced by
+      a queue (such as a jitterbuffer) or by other means (in the audiosink).
+    </para>
+    <para>
+      Buffering messages can be emited in those live pipelines as well and
+      serve as an indication to the user of the latency buffering. The
+      application usually does not react to these buffering messages with a
+      state change.
+    </para>
+  </sect1>
+
+  <sect1 id="section-buffering-strategies">
+    <title>Buffering strategies </title>
+    <para>
+      What follows are some ideas for implementing different buffering
+      strategies based on the buffering messages and buffering query.
+    </para>
+
+    <sect2 id="section-buffering-norebuffer">
+      <title>No-rebuffer strategy </title>
+      <para>
+        We would like to buffer enough data in the pipeline so that playback
+        continues without interruptions. What we need to know to implement
+        this is know the total remaining playback time in the file and the
+        total remaining download time. If the buffering time is less than the
+        playback time, we can start playback without interruptions.
+      </para>
+      <para>
+        We have all this information available with the DURATION, POSITION and
+        BUFFERING queries. We need to periodically execute the buffering query
+        to get the current buffering status. We also need to have a large
+        enough buffer to hold the complete file, worst case. It is best to
+        use this buffering strategy with download buffering (see
+        <xref linkend="section-buffering-download"/>).
+      </para>
+      <para>
+        This is what the code would look like:
+      </para>
+      <programlisting>
+<!-- example-begin norebuffer.c a -->
+<![CDATA[
+#include <gst/gst.h>
+
+GstState target_state;
+static gboolean is_live;
+static gboolean is_buffering;
+
+static gboolean
+buffer_timeout (gpointer data)
+{
+  GstElement *pipeline = data;
+  GstQuery *query;
+  gboolean busy;
+  gint percent;
+  gint64 estimated_total;
+  gint64 position, duration;
+  guint64 play_left;
+
+  query = gst_query_new_buffering (GST_FORMAT_TIME);
+
+  if (!gst_element_query (pipeline, query))
+    return TRUE;
+
+  gst_query_parse_buffering_percent (query, &busy, &percent);
+  gst_query_parse_buffering_range (query, NULL, NULL, NULL, &estimated_total);
+
+  if (estimated_total == -1)
+    estimated_total = 0;
+
+  /* calculate the remaining playback time */
+  if (!gst_element_query_position (pipeline, GST_FORMAT_TIME, &position))
+    position = -1;
+  if (!gst_element_query_duration (pipeline, GST_FORMAT_TIME, &duration))
+    duration = -1;
+
+  if (duration != -1 && position != -1)
+    play_left = GST_TIME_AS_MSECONDS (duration - position);
+  else
+    play_left = 0;
+
+  g_message ("play_left %" G_GUINT64_FORMAT", estimated_total %" G_GUINT64_FORMAT
+      ", percent %d", play_left, estimated_total, percent);
+
+  /* we are buffering or the estimated download time is bigger than the
+   * remaining playback time. We keep buffering. */
+  is_buffering = (busy || estimated_total * 1.1 > play_left);
+
+  if (!is_buffering)
+    gst_element_set_state (pipeline, target_state);
+
+  return is_buffering;
+}
+
+static void
+on_message_buffering (GstBus *bus, GstMessage *message, gpointer user_data)
+{
+  GstElement *pipeline = user_data;
+  gint percent;
+
+  /* no state management needed for live pipelines */
+  if (is_live)
+    return;
+
+  gst_message_parse_buffering (message, &percent);
+
+  if (percent < 100) {
+    /* buffering busy */
+    if (is_buffering == FALSE) {
+      is_buffering = TRUE;
+      if (target_state == GST_STATE_PLAYING) {
+        /* we were not buffering but PLAYING, PAUSE  the pipeline. */
+        gst_element_set_state (pipeline, GST_STATE_PAUSED);
+      }
+    }
+  }
+}
+
+static void
+on_message_async_done (GstBus *bus, GstMessage *message, gpointer user_data)
+{
+  GstElement *pipeline = user_data;
+
+  if (is_buffering == FALSE)
+    gst_element_set_state (pipeline, target_state);
+  else
+    g_timeout_add (500, buffer_timeout, pipeline);
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  GstElement *pipeline;
+  GMainLoop *loop;
+  GstBus *bus;
+  GstStateChangeReturn ret;
+
+  /* init GStreamer */
+  gst_init (&amp;argc, &amp;argv);
+  loop = g_main_loop_new (NULL, FALSE);
+
+  /* make sure we have a URI */
+  if (argc != 2) {
+    g_print ("Usage: %s &lt;URI&gt;\n", argv[0]);
+    return -1;
+  }
+
+  /* set up */
+  pipeline = gst_element_factory_make ("playbin", "pipeline");
+  g_object_set (G_OBJECT (pipeline), "uri", argv[1], NULL);
+  g_object_set (G_OBJECT (pipeline), "flags", 0x697 , NULL);
+
+  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+  gst_bus_add_signal_watch (bus);
+
+  g_signal_connect (bus, "message::buffering",
+    (GCallback) on_message_buffering, pipeline);
+  g_signal_connect (bus, "message::async-done",
+    (GCallback) on_message_async_done, pipeline);
+  gst_object_unref (bus);
+
+  is_buffering = FALSE;
+  target_state = GST_STATE_PLAYING;
+  ret = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+
+  switch (ret) {
+    case GST_STATE_CHANGE_SUCCESS:
+      is_live = FALSE;
+      break;
+
+    case GST_STATE_CHANGE_FAILURE:
+      g_warning ("failed to PAUSE");
+      return -1;
+
+    case GST_STATE_CHANGE_NO_PREROLL:
+      is_live = TRUE;
+      break;
+
+    default:
+      break;
+  }
+
+  /* now run */
+  g_main_loop_run (loop);
+
+  /* also clean up */
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (GST_OBJECT (pipeline));
+  g_main_loop_unref (loop);
+
+  return 0;
+}
+]]>
+<!-- example-end norebuffer.c a -->
+      </programlisting>
+      <para>
+        See how we set the pipeline to the PAUSED state first. We will receive
+        buffering messages during the preroll state when buffering is needed.
+        When we are prerolled (on_message_async_done) we see if buffering is
+        going on, if not, we start playback. If buffering was going on, we start
+        a timeout to poll the buffering state. If the estimated time to download
+        is less than the remaining playback time, we start playback.
+      </para>
+    </sect2>
+  </sect1>
+</chapter>
diff --git a/docs/manual/advanced-clocks.xml b/docs/manual/advanced-clocks.xml
index c23cf3c..d6c8007 100644
--- a/docs/manual/advanced-clocks.xml
+++ b/docs/manual/advanced-clocks.xml
@@ -1,91 +1,295 @@
 <chapter id="chapter-clocks">
-  <title>Clocks in GStreamer</title>
+  <title>Clocks and synchronization in &GStreamer;</title>
 
   <para>
-    To maintain sync in pipeline playback (which is the only case where this
-    really matters), &GStreamer; uses <emphasis>clocks</emphasis>. Clocks
-    are exposed by some elements, whereas other elements are merely clock
-    slaves. The primary task of a clock is to represent the time progress
-    according to the element exposing the clock, based on its own playback
-    rate. If no clock provider is available in a pipeline, the system clock
-    is used instead.
+    When playing complex media, each sound and video sample must be played in a
+    specific order at a specific time. For this purpose, GStreamer provides a
+    synchronization mechanism.
   </para>
-  
   <para>
-    &GStreamer; derives several <emphasis>time value</emphasis> from the clock
-    and the playback state.
-    It is important to note, that a  <emphasis>clock-time</emphasis> is
-    monotonically rising, but the value itself is not meaningful.
-    Subtracting the <emphasis>base-time</emphasis> yields the
-    <emphasis>running-time</emphasis>. It is the same as the
-    <emphasis>stream-time</emphasis> if one plays from start to end at original
-    rate. The <emphasis>stream-time</emphasis> indicates the position in the
-    media. The <emphasis>running-time</emphasis> is (re-)set to 0 when the 
-    pipeline starts to play and also after <emphasis>flushing</emphasis> seeks.
+    &GStreamer; provides support for the following use cases:
+    <itemizedlist>
+      <listitem>
+        <para>
+          Non-live sources with access faster than playback rate. This is
+          the case where one is reading media from a file and playing it
+          back in a synchronized fashion. In this case, multiple streams need
+          to be synchronized, like audio, video and subtitles.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Capture and synchronized muxing/mixing of media from multiple live
+          sources. This is a typical use case where you record audio and
+          video from a microphone/camera and mux it into a file for 
+          storage.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Streaming from (slow) network streams with buffering. This is the
+          typical web streaming case where you access content from a streaming
+          server with http.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Capture from live source and and playback to live source with
+          configurable latency. This is used when, for example, capture from
+          a camera, apply an effect and display the result. It is also used
+          when streaming low latency content over a network with UDP.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Simultaneous live capture and playback from prerecorded content.
+          This is used in audio recording cases where you play a previously
+          recorded audio and record new samples, the purpose is to have the
+          new audio perfectly in sync with the previously recorded data.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </para>
+  <para>
+    &GStreamer; uses a <classname>GstClock</classname> object, buffer
+    timestamps and a SEGMENT event to synchronize streams in a pipeline
+    as we will see in the next sections.
   </para>
 
-  <figure float="1" id="chapter-clock-img">
-    <title>&GStreamer; clock and various times</title>
-    <mediaobject>
-      <imageobject>
-        <imagedata scale="75" fileref="images/clocks.&image;" format="&IMAGE;" />
-      </imageobject>
-    </mediaobject>  
-  </figure>
+  <sect1 id="section-clock-time-types" xreflabel="Clock running-time">
+    <title>Clock running-time </title>
+    <para>
+      In a typical computer, there are many sources that can be used as a
+      time source, e.g., the system time, soundcards, CPU performance
+      counters, ... For this reason, there are many
+      <classname>GstClock</classname> implementations available in &GStreamer;.
+      The clock time doesn't always start from 0 or from some known value.
+      Some clocks start counting from some known start date, other clocks start
+      counting since last reboot, etc...
+    </para>
+    <para>
+      A <classname>GstClock</classname> returns the
+      <emphasis role="strong">absolute-time</emphasis>
+      according to that clock with <function>gst_clock_get_time ()</function>.
+      The absolute-time (or clock time) of a clock is monotonically increasing.
+      From the absolute-time is a <emphasis role="strong">running-time</emphasis>
+      calculated, which is simply the difference between a previous snapshot
+      of the absolute-time called the <emphasis role="strong">base-time</emphasis>.
+      So:
+    </para>
+    <para>
+      running-time = absolute-time - base-time
+    </para>
+    <para>
+      A &GStreamer; <classname>GstPipeline</classname> object maintains a
+      <classname>GstClock</classname> object and a base-time when it goes
+      to the PLAYING state.  The pipeline gives a handle to the selected
+      <classname>GstClock</classname> to each element in the pipeline along
+      with selected base-time. The pipeline will select a base-time in such
+      a way that the running-time reflects the total time spent in the
+      PLAYING state. As a result, when the pipeline is PAUSED, the
+      running-time stands still.
+    </para>
+    <para>
+      Because all objects in the pipeline have the same clock and base-time,
+      they can thus all calculate the running-time according to the pipeline
+      clock.
+    </para>
+  </sect1>
+
+  <sect1 id="section-buffer-running-time" xreflabel="Buffer running-time">
+    <title>Buffer running-time</title>
+    <para>
+      To calculate a buffer running-time, we need a buffer timestamp and
+      the SEGMENT event that preceeded the buffer. First we can convert
+      the SEGMENT event into a <classname>GstSegment</classname> object
+      and then we can use the
+      <function>gst_segment_to_running_time ()</function> function to
+      perform the calculation of the buffer running-time.
+    </para>
+    <para>
+      Synchronization is now a matter of making sure that a buffer with a
+      certain running-time is played when the clock reaches the same
+      running-time. Usually this task is done by sink elements. Sink also
+      have to take into account the latency configured in the pipeline and
+      add this to the buffer running-time before synchronizing to the
+      pipeline clock.
+    </para>
+    <para>
+      Non-live sources timestamp buffers with a running-time starting
+      from 0. After a flushing seek, they will produce buffers again
+      from a running-time of 0.
+    </para>
+    <para>
+      Live sources need to timestamp buffers with a running-time matching
+      the pipeline running-time when the first byte of the buffer was
+      captured.
+    </para>
+  </sect1>
+
+  <sect1 id="section-buffer-stream-time" xreflabel="Buffer stream-time">
+    <title>Buffer stream-time</title>
+    <para>
+      The buffer stream-time, also known as the position in the stream,
+      is calculated from the buffer timestamps and the preceeding SEGMENT
+      event. It represents the time inside the media as a value between
+      0 and the total duration of the media.
+    </para>
+    <para>
+      The stream-time is used in:
+      <itemizedlist>
+        <listitem>
+          <para>
+            Report the current position in the stream with the POSITION
+            query.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The position used in the seek events and queries.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The position used to synchronize controlled values.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </para>
+    <para>
+      The stream-time is never used to synchronize streams, this is only
+      done with the running-time.
+    </para>
+  </sect1>
+
+  <sect1 id="section-time-overview" xreflabel="Time overview">
+    <title>Time overview</title>
+    <para>
+      Here is an overview of the various timelines used in &GStreamer;.
+    </para>
+    <para>
+      The image below represents the different times in the pipeline when
+      playing a 100ms sample and repeating the part between 50ms and
+      100ms. 
+    </para>
+
+    <figure float="1" id="chapter-clock-img">
+      <title>&GStreamer; clock and various times</title>
+      <mediaobject>
+        <imageobject>
+          <imagedata scale="75" fileref="images/clocks.&image;" format="&IMAGE;" />
+        </imageobject>
+      </mediaobject>  
+    </figure>
+
+    <para>
+      You can see how the running-time of a buffer always increments
+      monotonically along with the clock-time. Buffers are played when their
+      running-time is equal to the clock-time - base-time. The stream-time
+      represents the position in the stream and jumps backwards when
+      repeating.
+    </para>
+  </sect1>
 
   <sect1 id="section-clocks-providers">
     <title>Clock providers</title>
-
+    <para>
+      A clock provider is an element in the pipeline that can provide
+      a <classname>GstClock</classname> object. The clock object needs to
+      report an absoulute-time that is monotonocally increasing when the
+      element is in the PLAYING state. It is allowed to pause the clock
+      while the element is PAUSED.
+    </para>
     <para>
       Clock providers exist because they play back media at some rate, and
       this rate is not necessarily the same as the system clock rate. For
       example, a soundcard may playback at 44,1 kHz, but that doesn't mean
       that after <emphasis>exactly</emphasis> 1 second <emphasis>according
       to the system clock</emphasis>, the soundcard has played back 44.100
-      samples. This is only true by approximation. Therefore, generally,
-      pipelines with an audio output use the audiosink as clock provider.
-      This ensures that one second of video will be played back at the same
-      rate as that the soundcard plays back 1 second of audio.
+      samples. This is only true by approximation. In fact, the audio
+      device has an internal clock based on the number of samples played
+      that we can expose.
     </para>
     <para>
-      Whenever some part of the pipeline requires to know the current clock
-      time, it will be requested from the clock through
-      <function>gst_clock_get_time ()</function>. The clock-time does not
-      need to start at 0. The pipeline, which contains the global clock that
-      all elements in the pipeline will use, in addition has a <quote>base
-      time</quote>, which is the clock time at the point where the
-      pipeline went to the PLAYING state. Each element can subtract the
-      <quote>base time</quote> from the clock-time to know the current
-      running time.
+      If an element with an internal clock needs to synchronize, it needs
+      to estimate when a time according to the pipeline clock will take
+      place according to the internal clock. To estimate this, it needs
+      to slave its clock to the pipeline clock.
     </para>
     <para>
-      The clock provider is responsible for making sure that the clock time
-      always represents the current media time as closely as possible; it
-      has to take care of things such as playback latencies, buffering in
-      audio-kernel modules, and so on, since all those could affect a/v sync
-      and thus decrease the user experience.
+      If the pipeline clock is exactly the internal clock of an element,
+      the element can skip the slaving step and directly use the pipeline
+      clock to schedule playback. This can be both faster and more
+      accurate.
+      Therefore, generally, elements with an internal clock like audio
+      input or output devices will be a clock provider for the pipeline.
+    </para>
+    <para>
+      When the pipeline goes to the PLAYING state, it will go over all
+      elements in the pipeline from sink to source and ask each element
+      if they can provide a clock. The last element that can provide a
+      clock will be used as the clock provider in the pipeline.
+      This algorithm prefers a clock from an audio sink in a typical
+      playback pipeline and a clock from source elements in a typical
+      capture pipeline.
+    </para>
+    <para>
+      There exist some bus messages to let you know about the clock and
+      clock providers in the pipeline. You can see what clock is selected
+      in the pipeline by looking at the NEW_CLOCK message on the bus.
+      When a clock provider is removed from the pipeline, a CLOCK_LOST
+      message is posted and the application should go to PAUSED and back
+      to PLAYING to select a new clock.
     </para>
   </sect1>
 
-  <sect1 id="section-clocks-slaves">
-    <title>Clock slaves</title>
+  <sect1 id="section-clocks-latency">
+    <title>Latency</title>
     <para>
-      Clock slaves get assigned a clock by their containing pipeline. Their
-      task is to make sure that media playback follows the time progress as
-      represented by this clock as closely as possible. For most elements,
-      that will simply mean to wait until the buffer running-time is reached
-      before playing back their current sample.
+      The latency is the time it takes for a sample captured at timestamp X
+      to reach the sink. This time is measured against the clock in the
+      pipeline. For pipelines where the only elements that synchronize against
+      the clock are the sinks, the latency is always 0 since no other element
+      is delaying the buffer.
     </para>
     <para>
-      The buffer running-time is derived from the buffer timestamp and the
-      newsegment event preceeding the buffer. A buffer is played synchronized
-      with the clock when the clock's running-time has reached exactly the
-      buffer running-time; this can be done with the function
-      <function>gst_clock_id_wait ()</function>.
+      For pipelines with live sources, a latency is introduced, mostly because
+      of the way a live source works. Consider an audio source, it will start
+      capturing the first sample at time 0. If the source pushes buffers with
+      44100 samples at a time at 44100Hz it will have collected the buffer at
+      second 1.  Since the timestamp of the buffer is 0 and the time of the
+      clock is now >= 1 second, the sink will drop this buffer because it is
+      too late.  Without any latency compensation in the sink, all buffers will
+      be dropped.
     </para>
-    <para>
-      For more information on how to write elements that conform to this
-      required behaviour, see the Plugin Writer's Guide.
-    </para>
+
+    <sect2 id="section-latency-compensation">
+      <title>Latency compensation</title>
+      <para>
+        Before the pipeline goes to the PLAYING state, it will, in addition to
+        selecting a clock and calculating a base-time, calculate the latency
+        in the pipeline. It does this by doing a LATENCY query on all the sinks
+        in the pipeline. The pipeline then selects the maximum latency in the
+        pipeline and configures this with a LATENCY event.
+      </para>
+      <para>
+        All sink elements will delay playback by the value in the LATENCY event.
+        Since all sinks delay with the same amount of time, they will be
+        relative in sync.
+      </para>
+    </sect2>
+
+    <sect2 id="section-latency-dynamic">
+      <title>Dynamic Latency</title>
+      <para>
+        Adding/removing elements to/from a pipeline or changing element
+        properties can change the latency in a pipeline. An element can
+        request a latency change in the pipeline by posting a LATENCY
+        message on the bus. The application can then decide to query and
+        redistribute a new latency or not. Changing the latency in a
+        pipeline might cause visual or audible glitches and should
+        therefore only be done by the application when it is allowed.
+      </para>
+    </sect2>
   </sect1>
 </chapter>
diff --git a/docs/manual/advanced-dataaccess.xml b/docs/manual/advanced-dataaccess.xml
index 28fc56c..983d757 100644
--- a/docs/manual/advanced-dataaccess.xml
+++ b/docs/manual/advanced-dataaccess.xml
@@ -1248,6 +1248,7 @@
           in the pipeline, it is possible that the pipeline needs to
           negotiate a new format and this can fail. Usually you can fix this
           by inserting the right converter elements where needed.
+          See also <xref linkend="section-dynamic-changing"/>.
         </para>
       </listitem>
     </itemizedlist>
@@ -1262,77 +1263,313 @@
     <sect2 id="section-dynamic-changing">
       <title>Changing elements in a pipeline</title>
       <para>
-        WRITEME
+        In the next example we look at the following chain of elements:
+      </para>
+      <programlisting>
+            - ----.      .----------.      .---- -
+         element1 |      | element2 |      | element3
+                src -> sink       src -> sink
+            - ----'      '----------'      '---- -
+      </programlisting>
+      <para>
+        We want to change element2 by element4 while the pipeline is in
+        the PLAYING state. Let's say that element2 is a visualization and
+        that you want to switch the visualization in the pipeline.
+      </para>
+      <para>
+        We can't just unlink element2's sinkpad from element1's source
+        pad because that would leave element1's source pad
+        unlinked and would cause a streaming error in the pipeline when
+        data is pushed on the source pad.
+        The technique is to block the dataflow from element1's source pad
+        before we change element2 by element4 and then resume dataflow
+        as shown in the following steps:
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Block element1's source pad with a blocking pad probe. When the
+            pad is blocked, the probe callback will be called.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Inside the block callback nothing is flowing between element1
+            and element2 and nothing will flow until unblocked.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Unlink element1 and element2.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Make sure data is flushed out of element2. Some elements might
+            internally keep some data, you need to make sure not to lose data
+            by forcing it out of element2. You can do this by pushing EOS into
+            element2, like this:
+          </para>
+          <itemizedlist>
+            <listitem>
+              <para>
+                Put an event probe on element2's source pad.
+              </para>
+            </listitem>
+            <listitem>
+              <para>
+                Send EOS to element2's sinkpad. This makes sure the all the
+                data inside element2 is forced out.
+              </para>
+            </listitem>
+            <listitem>
+              <para>
+                Wait for the EOS event to appear on element2's source pad.
+                When the EOS is received, drop it and remove the event
+                probe.
+              </para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+        <listitem>
+          <para>
+            Unlink element2 and element3. You can now also remove element2
+            from the pipeline and set the state to NULL.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Add element4 to the pipeline, if not already added. Link element4
+            and element3. Link element1 and element4.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Make sure element4 is in the same state as the rest of the elements
+            in the pipeline. It should be at least in the PAUSED state before
+            it can receive buffers and events.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Unblock element1's source pad probe. This will let new data into
+            element4 and continue streaming.
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
+        The above algorithm works when the source pad is blocked, i.e. when
+        there is dataflow in the pipeline. If there is no dataflow, there is
+        also no point in changing the element (just yet) so this algorithm can
+        be used in the PAUSED state as well.
+      </para>
+      <para>
+        Let show you how this works with an example. This example changes the
+        video effect on a simple pipeline every second.
+      </para>
+      <programlisting>
+<!-- example-begin effectswitch.c -->
+<![CDATA[
+#include <gst/gst.h>
+
+static gchar *opt_effects = NULL;
+
+#define DEFAULT_EFFECTS "identity,exclusion,navigationtest," \
+    "agingtv,videoflip,vertigotv,gaussianblur,shagadelictv,edgetv"
+
+static GstPad *blockpad;
+static GstElement *conv_before;
+static GstElement *conv_after;
+static GstElement *cur_effect;
+static GstElement *pipeline;
+
+static GQueue effects = G_QUEUE_INIT;
+
+static GstPadProbeReturn
+event_probe_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GMainLoop *loop = user_data;
+  GstElement *next;
+
+  if (GST_EVENT_TYPE (GST_PAD_PROBE_INFO_DATA (info)) != GST_EVENT_EOS)
+    return GST_PAD_PROBE_OK;
+
+  gst_pad_remove_probe (pad, GST_PAD_PROBE_INFO_ID (info));
+
+  /* push current event back into the queue */
+  g_queue_push_tail (&effects, gst_object_ref (cur_effect));
+  /* take next effect from the queue */
+  next = g_queue_pop_head (&effects);
+  if (next == NULL) {
+    GST_DEBUG_OBJECT (pad, "no more effects");
+    g_main_loop_quit (loop);
+    return GST_PAD_PROBE_DROP;
+  }
+
+  g_print ("Switching from '%s' to '%s'..\n", GST_OBJECT_NAME (cur_effect),
+      GST_OBJECT_NAME (next));
+
+  gst_element_set_state (cur_effect, GST_STATE_NULL);
+
+  /* remove unlinks automatically */
+  GST_DEBUG_OBJECT (pipeline, "removing %" GST_PTR_FORMAT, cur_effect);
+  gst_bin_remove (GST_BIN (pipeline), cur_effect);
+
+  GST_DEBUG_OBJECT (pipeline, "adding   %" GST_PTR_FORMAT, next);
+  gst_bin_add (GST_BIN (pipeline), next);
+
+  GST_DEBUG_OBJECT (pipeline, "linking..");
+  gst_element_link_many (conv_before, next, conv_after, NULL);
+
+  gst_element_set_state (next, GST_STATE_PLAYING);
+
+  cur_effect = next;
+  GST_DEBUG_OBJECT (pipeline, "done");
+
+  return GST_PAD_PROBE_DROP;
+}
+
+static GstPadProbeReturn
+pad_probe_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GstPad *srcpad, *sinkpad;
+
+  GST_DEBUG_OBJECT (pad, "pad is blocked now");
+
+  /* remove the probe first */
+  gst_pad_remove_probe (pad, GST_PAD_PROBE_INFO_ID (info));
+
+  /* install new probe for EOS */
+  srcpad = gst_element_get_static_pad (cur_effect, "src");
+  gst_pad_add_probe (srcpad, GST_PAD_PROBE_TYPE_BLOCK |
+      GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, event_probe_cb, user_data, NULL);
+  gst_object_unref (srcpad);
+
+  /* push EOS into the element, the probe will be fired when the
+   * EOS leaves the effect and it has thus drained all of its data */
+  sinkpad = gst_element_get_static_pad (cur_effect, "sink");
+  gst_pad_send_event (sinkpad, gst_event_new_eos ());
+  gst_object_unref (sinkpad);
+
+  return GST_PAD_PROBE_OK;
+}
+
+static gboolean
+timeout_cb (gpointer user_data)
+{
+  gst_pad_add_probe (blockpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
+      pad_probe_cb, user_data, NULL);
+
+  return TRUE;
+}
+
+static gboolean
+bus_cb (GstBus * bus, GstMessage * msg, gpointer user_data)
+{
+  GMainLoop *loop = user_data;
+
+  switch (GST_MESSAGE_TYPE (msg)) {
+    case GST_MESSAGE_ERROR:{
+      GError *err = NULL;
+      gchar *dbg;
+
+      gst_message_parse_error (msg, &err, &dbg);
+      gst_object_default_error (msg->src, err, dbg);
+      g_error_free (err);
+      g_free (dbg);
+      g_main_loop_quit (loop);
+      break;
+    }
+    default:
+      break;
+  }
+  return TRUE;
+}
+
+int
+main (int argc, char **argv)
+{
+  GOptionEntry options[] = {
+    {"effects", 'e', 0, G_OPTION_ARG_STRING, &opt_effects,
+        "Effects to use (comma-separated list of element names)", NULL},
+    {NULL}
+  };
+  GOptionContext *ctx;
+  GError *err = NULL;
+  GMainLoop *loop;
+  GstElement *src, *sink;
+  gchar **effect_names, **e;
+
+  ctx = g_option_context_new ("");
+  g_option_context_add_main_entries (ctx, options, NULL);
+  g_option_context_add_group (ctx, gst_init_get_option_group ());
+  if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
+    g_print ("Error initializing: %s\n", err->message);
+    return 1;
+  }
+  g_option_context_free (ctx);
+
+  if (opt_effects != NULL)
+    effect_names = g_strsplit (opt_effects, ",", -1);
+  else
+    effect_names = g_strsplit (DEFAULT_EFFECTS, ",", -1);
+
+  for (e = effect_names; e != NULL && *e != NULL; ++e) {
+    GstElement *el;
+
+    el = gst_element_factory_make (*e, NULL);
+    if (el) {
+      g_print ("Adding effect '%s'\n", *e);
+      g_queue_push_tail (&effects, el);
+    }
+  }
+
+  pipeline = gst_pipeline_new ("pipeline");
+
+  src = gst_element_factory_make ("videotestsrc", NULL);
+  g_object_set (src, "is-live", TRUE, NULL);
+
+  blockpad = gst_element_get_static_pad (src, "src");
+
+  conv_before = gst_element_factory_make ("videoconvert", NULL);
+
+  cur_effect = g_queue_pop_head (&effects);
+
+  conv_after = gst_element_factory_make ("videoconvert", NULL);
+
+  sink = gst_element_factory_make ("ximagesink", NULL);
+
+  gst_bin_add_many (GST_BIN (pipeline), src, conv_before, cur_effect,
+      conv_after, sink, NULL);
+
+  gst_element_link_many (src, conv_before, cur_effect, conv_after,
+      sink, NULL);
+
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  gst_bus_add_watch (GST_ELEMENT_BUS (pipeline), bus_cb, loop);
+
+  g_timeout_add_seconds (1, timeout_cb, loop);
+
+  g_main_loop_run (loop);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (pipeline);
+
+  return 0;
+}
+]]>
+<!-- example-end effectswitch.c -->
+      </programlisting>
+      <para>
+        Note how we added videoconvert elements before and after the effect.
+        This is needed because some elements might operate in different
+        colorspaces than other elements. By inserting the conversion elements
+        you ensure that the right format can be negotiated at any time.
       </para>
     </sect2>
   </sect1>
 
-  <sect1 id="section-data-manager">
-    <title>Embedding static elements in your application</title>
-    <para>
-      The <ulink type="http"
-      url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html">Plugin
-      Writer's Guide</ulink> describes in great detail how to write elements
-      for the &GStreamer; framework. In this section, we will solely discuss
-      how to embed such elements statically in your application. This can be
-      useful for application-specific elements that have no use elsewhere in
-      &GStreamer;.
-    </para>
-    <para>
-      Dynamically loaded plugins contain a structure that's defined using
-      <function>GST_PLUGIN_DEFINE ()</function>. This structure is loaded
-      when the plugin is loaded by the &GStreamer; core. The structure
-      contains an initialization function (usually called
-      <function>plugin_init</function>) that will be called right after that.
-      It's purpose is to register the elements provided by the plugin with
-      the &GStreamer; framework. 
-      If you want to embed elements directly in
-      your application, the only thing you need to do is to replace
-	  <function>GST_PLUGIN_DEFINE ()</function> with a call to
-          <function>gst_plugin_register_static ()</function>. As soon as you
-      call <function>gst_plugin_register_static ()</function>, the elements
-      will from then on be available like any other element, without them
-      having to be dynamically loadable libraries. In the example below, you
-      would be able to call <function>gst_element_factory_make
-      ("my-element-name", "some-name")</function> to create an instance of the
-      element.
-    </para>
-
-    <programlisting>
-<![CDATA[
-/*
- * Here, you would write the actual plugin code.
- */
-
-[..]
-
-static gboolean
-register_elements (GstPlugin *plugin)
-{
-  return gst_element_register (plugin, "my-element-name",
-			       GST_RANK_NONE, MY_PLUGIN_TYPE);
-}
-
-static
-my_code_init (void)
-{
-  ...
-
-  gst_plugin_register_static (
-    GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    "my-private-plugins",
-    "Private elements of my application",
-    register_elements,
-    VERSION,
-    "LGPL",
-    "my-application-source",
-    "my-application",
-    "http://www.my-application.net/")
-
-  ...
-}
-]]>
-    </programlisting>
-  </sect1>
 </chapter>
diff --git a/docs/manual/advanced-threads.xml b/docs/manual/advanced-threads.xml
index cabdcf5..5925640 100644
--- a/docs/manual/advanced-threads.xml
+++ b/docs/manual/advanced-threads.xml
@@ -7,11 +7,412 @@
     may want to have influence on some parts of those. &GStreamer; allows
     applications to force the use of multiple threads over some parts of
     a pipeline.
+    See <xref linkend="section-threads-uses"/>.
   </para>
+  <para> 
+    &GStreamer; can also notify you when threads are created so that you can
+    configure things such as the thread priority or the threadpool to use.
+    See <xref linkend="section-threads-status"/>.
+  </para>
+
+  <sect1 id="section-threads-scheduling">
+    <title>Scheduling in &GStreamer;</title>
+    <para>
+      Each element in the &GStreamer; pipeline decides how it is going to
+      be scheduled. Elements can choose if their pads are to be scheduled
+      push-based or pull-based. An element can, for example, choose to start
+      a thread to start pulling from the sink pad or/and start pushing on
+      the source pad. An element can also choose to use the upstream or
+      downstream thread for its data processing in push and pull mode
+      respectively. &GStreamer; does not pose any restrictions on how the
+      element chooses to be scheduled. See the Plugin Writer Guide for more
+      details.
+    </para>
+    <para>
+      What will happen in any case is that some elements will start a thread
+      for their data processing, called the <quote>streaming threads</quote>. 
+      The streaming threads, or <classname>GstTask</classname> objects, are
+      created from a <classname>GstTaskPool</classname> when the element
+      needs to make a streaming thread. In the next section we see how we
+      can receive notifications of the tasks and pools.
+    </para>
+  </sect1>
+
+  <sect1 id="section-threads-status">
+    <title>Configuring Threads in &GStreamer;</title>
+    <para>
+      A STREAM_STATUS message is posted on the bus to inform you about the
+      status of the streaming threads. You will get the following information
+      from the message:
+      <itemizedlist>
+        <listitem>
+          <para>
+            When a new thread is about to be created, you will be notified
+            of this with a GST_STREAM_STATUS_TYPE_CREATE type. It is then
+            possible to configure a <classname>GstTaskPool</classname> in
+            the <classname>GstTask</classname>. The custom taskpool will
+            provide custom threads for the task to implement the streaming
+            threads.
+          </para>
+          <para>
+            This message needs to be handled synchronously if you want to
+            configure a custom taskpool. If you don't configure the taskpool
+            on the task when this message returns, the task will use its
+            default pool.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            When a thread is entered or left. This is the moment where you
+            could configure thread priorities. You also get a notification
+            when a thread is destroyed.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            You get messages when the thread starts, pauses and stops. This
+            could be used to visualize the status of streaming threads in
+            a gui application.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </para>
+    <para>
+    </para>
+    <para>
+      We will now look at some examples in the next sections.
+    </para>
+
+    <sect2 id="section-threads-rt">
+      <title>Boost priority of a thread</title>
+      <programlisting>
+        .----------.    .----------.
+        | faksesrc |    | fakesink |
+        |         src->sink        |
+        '----------'    '----------'
+      </programlisting>
+      <para>
+        Let's look at the simple pipeline above. We would like to boost
+        the priority of the streaming thread.
+        It will be the fakesrc element that starts the streaming thread for
+        generating the fake data pushing them to the peer fakesink.
+        The flow for changing the priority would go like this:
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            When going from READY to PAUSED state, udpsrc will require a
+            streaming thread for pushing data into the depayloader. It will
+            post a STREAM_STATUS message indicating its requirement for a
+            streaming thread.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The application will react to the STREAM_STATUS messages with a
+            sync bus handler. It will then configure a custom
+            <classname>GstTaskPool</classname> on the
+            <classname>GstTask</classname> inside the message. The custom
+            taskpool is responsible for creating the threads. In this
+            example we will make a thread with a higher priority.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Alternatively, since the sync message is called in the thread
+            context, you can use thread ENTER/LEAVE notifications to
+            change the priority or scheduling pollicy of the current thread.
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
+        In a first step we need to implement a custom
+        <classname>GstTaskPool</classname> that we can configure on the task.
+        Below is the implementation of a <classname>GstTaskPool</classname>
+        subclass that uses pthreads to create a SCHED_RR real-time thread.
+        Note that creating real-time threads might require extra priveleges.
+      </para>
+      <programlisting>
+<!-- example-begin testrtpool.c a -->
+<!--
+#include <gst/gst.h>
+
+#define TEST_TYPE_RT_POOL             (test_rt_pool_get_type ())
+#define TEST_RT_POOL(pool)            (G_TYPE_CHECK_INSTANCE_CAST ((pool), TEST_TYPE_RT_POOL, TestRTPool))
+#define TEST_IS_RT_POOL(pool)         (G_TYPE_CHECK_INSTANCE_TYPE ((pool), TEST_TYPE_RT_POOL))
+#define TEST_RT_POOL_CLASS(pclass)    (G_TYPE_CHECK_CLASS_CAST ((pclass), TEST_TYPE_RT_POOL, TestRTPoolClass))
+#define TEST_IS_RT_POOL_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), TEST_TYPE_RT_POOL))
+#define TEST_RT_POOL_GET_CLASS(pool)  (G_TYPE_INSTANCE_GET_CLASS ((pool), TEST_TYPE_RT_POOL, TestRTPoolClass))
+#define TEST_RT_POOL_CAST(pool)       ((TestRTPool*)(pool))
+
+typedef struct _TestRTPool TestRTPool;
+typedef struct _TestRTPoolClass TestRTPoolClass;
+
+struct _TestRTPool {
+  GstTaskPool    object;
+};
+
+struct _TestRTPoolClass {
+  GstTaskPoolClass parent_class;
+};
+
+GType           test_rt_pool_get_type    (void);
+
+GstTaskPool *   test_rt_pool_new         (void);
+
+-->
+<!-- example-end testrtpool.c a-->
+<!-- example-begin testrtpool.c b -->
+<![CDATA[
+#include <pthread.h>
+
+typedef struct
+{
+  pthread_t thread;
+} TestRTId;
+
+G_DEFINE_TYPE (TestRTPool, test_rt_pool, GST_TYPE_TASK_POOL);
+
+static void
+default_prepare (GstTaskPool * pool, GError ** error)
+{
+  /* we don't do anything here. We could construct a pool of threads here that
+   * we could reuse later but we don't */
+}
+
+static void
+default_cleanup (GstTaskPool * pool)
+{
+}
+
+static gpointer
+default_push (GstTaskPool * pool, GstTaskPoolFunction func, gpointer data,
+    GError ** error)
+{
+  TestRTId *tid;
+  gint res;
+  pthread_attr_t attr;
+  struct sched_param param;
+
+  tid = g_slice_new0 (TestRTId);
+
+  pthread_attr_init (&attr);
+  if ((res = pthread_attr_setschedpolicy (&attr, SCHED_RR)) != 0)
+    g_warning ("setschedpolicy: failure: %p", g_strerror (res));
+
+  param.sched_priority = 50;
+  if ((res = pthread_attr_setschedparam (&attr, &param)) != 0)
+    g_warning ("setschedparam: failure: %p", g_strerror (res));
+
+  if ((res = pthread_attr_setinheritsched (&attr, PTHREAD_EXPLICIT_SCHED)) != 0)
+    g_warning ("setinheritsched: failure: %p", g_strerror (res));
+
+  res = pthread_create (&tid->thread, &attr, (void *(*)(void *)) func, data);
+
+  if (res != 0) {
+    g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN,
+        "Error creating thread: %s", g_strerror (res));
+    g_slice_free (TestRTId, tid);
+    tid = NULL;
+  }
+
+  return tid;
+}
+
+static void
+default_join (GstTaskPool * pool, gpointer id)
+{
+  TestRTId *tid = (TestRTId *) id;
+
+  pthread_join (tid->thread, NULL);
+
+  g_slice_free (TestRTId, tid);
+}
+
+static void
+test_rt_pool_class_init (TestRTPoolClass * klass)
+{
+  GstTaskPoolClass *gsttaskpool_class;
+
+  gsttaskpool_class = (GstTaskPoolClass *) klass;
+
+  gsttaskpool_class->prepare = default_prepare;
+  gsttaskpool_class->cleanup = default_cleanup;
+  gsttaskpool_class->push = default_push;
+  gsttaskpool_class->join = default_join;
+}
+
+static void
+test_rt_pool_init (TestRTPool * pool)
+{
+}
+
+GstTaskPool *
+test_rt_pool_new (void)
+{
+  GstTaskPool *pool;
+
+  pool = g_object_new (TEST_TYPE_RT_POOL, NULL);
+
+  return pool;
+}
+]]>
+<!-- example-end testrtpool.c b -->
+      </programlisting>
+      <para>
+        The important function to implement when writing an taskpool is the
+        <quote>push</quote> function. The implementation should start a thread
+        that calls the given function. More involved implementations might
+        want to keep some threads around in a pool because creating and
+        destroying threads is not always the fastest operation.
+      </para>
+      <para>
+        In a next step we need to actually configure the custom taskpool when
+        the fakesrc needs it. For this we intercept the STREAM_STATUS messages
+        with a sync handler.
+      </para>
+      <programlisting>
+<!-- example-begin testrtpool.c c -->
+<![CDATA[
+static GMainLoop* loop;
+
+static void
+on_stream_status (GstBus     *bus,
+                  GstMessage *message,
+                  gpointer    user_data)
+{
+  GstStreamStatusType type;
+  GstElement *owner;
+  const GValue *val;
+  GstTask *task = NULL;
+
+  gst_message_parse_stream_status (message, &type, &owner);
+
+  val = gst_message_get_stream_status_object (message);
+
+  /* see if we know how to deal with this object */
+  if (G_VALUE_TYPE (val) == GST_TYPE_TASK) {
+    task = g_value_get_object (val);
+  }
+
+  switch (type) {
+    case GST_STREAM_STATUS_TYPE_CREATE:
+      if (task) {
+        GstTaskPool *pool;
+
+        pool = test_rt_pool_new();
+
+        gst_task_set_pool (task, pool);
+      }
+      break;
+    default:
+      break;
+  }
+}
+
+static void
+on_error (GstBus     *bus,
+          GstMessage *message,
+          gpointer    user_data)
+{
+  g_message ("received ERROR");
+  g_main_loop_quit (loop);
+}
+
+static void
+on_eos (GstBus     *bus,
+        GstMessage *message,
+        gpointer    user_data)
+{
+  g_main_loop_quit (loop);
+}
+
+int
+main (int argc, char *argv[])
+{
+  GstElement *bin, *fakesrc, *fakesink;
+  GstBus *bus;
+  GstStateChangeReturn ret;
+  
+  gst_init (&argc, &argv);
+
+  /* create a new bin to hold the elements */
+  bin = gst_pipeline_new ("pipeline");
+  g_assert (bin);
+
+  /* create a source */
+  fakesrc = gst_element_factory_make ("fakesrc", "fakesrc");
+  g_assert (fakesrc);
+  g_object_set (fakesrc, "num-buffers", 50, NULL);
+
+  /* and a sink */
+  fakesink = gst_element_factory_make ("fakesink", "fakesink");
+  g_assert (fakesink);
+
+  /* add objects to the main pipeline */
+  gst_bin_add_many (GST_BIN (bin), fakesrc, fakesink, NULL);
+
+  /* link the elements */
+  gst_element_link (fakesrc, fakesink);
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  /* get the bus, we need to install a sync handler */
+  bus = gst_pipeline_get_bus (GST_PIPELINE (bin));
+  gst_bus_enable_sync_message_emission (bus);
+  gst_bus_add_signal_watch (bus);
+
+  g_signal_connect (bus, "sync-message::stream-status",
+      (GCallback) on_stream_status, NULL);
+  g_signal_connect (bus, "message::error",
+      (GCallback) on_error, NULL);
+  g_signal_connect (bus, "message::eos",
+      (GCallback) on_eos, NULL);
+
+  /* start playing */
+  ret = gst_element_set_state (bin, GST_STATE_PLAYING);
+  if (ret != GST_STATE_CHANGE_SUCCESS) {
+    g_message ("failed to change state");
+    return -1;
+  }
+
+  /* Run event loop listening for bus messages until EOS or ERROR */
+  g_main_loop_run (loop);
+
+  /* stop the bin */
+  gst_element_set_state (bin, GST_STATE_NULL);
+  gst_object_unref (bus);
+  g_main_loop_unref (loop);
+
+  return 0;
+}
+]]>
+<!-- example-end testrtpool.c c -->
+      </programlisting>
+      <para>
+        Note that this program likely needs root permissions in order to
+        create real-time threads. When the thread can't be created, the
+        state change function will fail, which we catch in the application
+        above.
+      </para>
+      <para>
+        When there are multiple threads in the pipeline, you will receive
+        multiple STREAM_STATUS messages. You should use the owner of the
+        message, which is likely the pad or the element that starts the
+        thread, to figure out what the function of this thread is in the
+        context of the application.
+      </para>
+    </sect2>
+  </sect1>
 
   <sect1 id="section-threads-uses">
     <title>When would you want to force a thread?</title>
     <para>
+      We have seen that threads are created by elements but it is also
+      possible to insert elements in the pipeline for the sole purpose of
+      forcing a new thread in the pipeline.
+    </para>
+    <para>
       There are several reasons to force the use of threads. However,
       for performance reasons, you never want to use one thread for every
       element out there, since that will create some overhead.
@@ -24,7 +425,8 @@
           Data buffering, for example when dealing with network streams or
           when recording data from a live stream such as a video or audio
           card. Short hickups elsewhere in the pipeline will not cause data
-          loss.
+          loss. See also <xref linkend="section-buffering-stream"/> about network
+          buffering with queue2.
         </para>
 	<figure float="1" id="section-thread-buffering-img">
 	  <title>Data buffering, from a networked source</title>
@@ -58,7 +460,7 @@
       Above, we've mentioned the <quote>queue</quote> element several times
       now. A queue is the thread boundary element through which you can
       force the use of threads. It does so by using a classic
-      provider/receiver model as learned in threading classes at
+      provider/consumer model as learned in threading classes at
       universities all around the world. By doing this, it acts both as a
       means to make data throughput between threads threadsafe, and it can
       also act as a buffer. Queues have several <classname>GObject</classname>
@@ -76,23 +478,4 @@
     </para>
   </sect1>
 
-  <sect1 id="section-threads-scheduling">
-    <title>Scheduling in &GStreamer;</title>
-
-    <para>
-      Each element in the &GStreamer; pipeline decides how it is going to
-      be scheduled. Elements can choose to be scheduled push-based or
-      pull-based. 
-      If elements support random access to data, such as file sources,
-      then elements downstream in the pipeline can ask to schedule the random
-      access elements in pull-based mode. Data is pulled from upstream
-      and pushed downstream. If pull-mode is not supported, the element can
-      decide to operate in push-mode.
-    </para>
-    <para>
-      In practice, most elements in &GStreamer;, such as decoders, encoders,
-      etc. only support push-based scheduling, which means that in practice,
-      &GStreamer; uses a push-based scheduling model.
-    </para>
-  </sect1>
 </chapter>
diff --git a/docs/manual/appendix-compiling.xml b/docs/manual/appendix-compiling.xml
new file mode 100644
index 0000000..2d83c98
--- /dev/null
+++ b/docs/manual/appendix-compiling.xml
@@ -0,0 +1,76 @@
+<chapter id="chapter-compiling">
+  <title>Compiling</title>
+  <para>
+    This section talks about the different things you can do when building
+    and shipping your applications and plugins.
+  </para>
+
+  <sect1 id="section-compiling-embedding">
+    <title>Embedding static elements in your application</title>
+    <para>
+      The <ulink type="http"
+      url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html">Plugin
+      Writer's Guide</ulink> describes in great detail how to write elements
+      for the &GStreamer; framework. In this section, we will solely discuss
+      how to embed such elements statically in your application. This can be
+      useful for application-specific elements that have no use elsewhere in
+      &GStreamer;.
+    </para>
+    <para>
+      Dynamically loaded plugins contain a structure that's defined using
+      <function>GST_PLUGIN_DEFINE ()</function>. This structure is loaded
+      when the plugin is loaded by the &GStreamer; core. The structure
+      contains an initialization function (usually called
+      <function>plugin_init</function>) that will be called right after that.
+      It's purpose is to register the elements provided by the plugin with
+      the &GStreamer; framework. 
+      If you want to embed elements directly in
+      your application, the only thing you need to do is to replace
+	  <function>GST_PLUGIN_DEFINE ()</function> with a call to
+          <function>gst_plugin_register_static ()</function>. As soon as you
+      call <function>gst_plugin_register_static ()</function>, the elements
+      will from then on be available like any other element, without them
+      having to be dynamically loadable libraries. In the example below, you
+      would be able to call <function>gst_element_factory_make
+      ("my-element-name", "some-name")</function> to create an instance of the
+      element.
+    </para>
+
+    <programlisting>
+<![CDATA[
+/*
+ * Here, you would write the actual plugin code.
+ */
+
+[..]
+
+static gboolean
+register_elements (GstPlugin *plugin)
+{
+  return gst_element_register (plugin, "my-element-name",
+			       GST_RANK_NONE, MY_PLUGIN_TYPE);
+}
+
+static
+my_code_init (void)
+{
+  ...
+
+  gst_plugin_register_static (
+    GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "my-private-plugins",
+    "Private elements of my application",
+    register_elements,
+    VERSION,
+    "LGPL",
+    "my-application-source",
+    "my-application",
+    "http://www.my-application.net/")
+
+  ...
+}
+]]>
+    </programlisting>
+  </sect1>
+</chapter>
diff --git a/docs/manual/basics-bins.xml b/docs/manual/basics-bins.xml
index 1e3155e..882f3d1 100644
--- a/docs/manual/basics-bins.xml
+++ b/docs/manual/basics-bins.xml
@@ -163,8 +163,17 @@
       of the top-level pipeline to start up the pipeline or shut it down.
     </para>
     <para>
+      The bin will perform the state changes on all its children from the
+      sink element to the source element. This ensures that the downstream
+      element is ready to receive data when the upstream element is brought
+      to PAUSED or PLAYING. Similarly when shutting down, the sink elements
+      will be set to READY or NULL first, which will cause the upstream
+      elements to receive a FLUSHING error and stop the streaming threads
+      before the elements are set to the READY or NULL state.
+    </para>
+    <para>
       Note, however, that if elements are added to a bin or pipeline that's
-      already running, , e.g. from within a "pad-added" or "new-decoded-pad"
+      already running, , e.g. from within a "pad-added"
       signal callback, its state will not automatically be brought in line with
       the current state or target state of the bin or pipeline it was added to.
       Instead, you have to need to set it to the desired target state yourself
diff --git a/docs/manual/basics-bus.xml b/docs/manual/basics-bus.xml
index 46e037a..d040c8d 100644
--- a/docs/manual/basics-bus.xml
+++ b/docs/manual/basics-bus.xml
@@ -2,7 +2,7 @@
   <title>Bus</title>
   <para>
     A bus is a simple system that takes care of forwarding messages from
-    the pipeline threads to an application in its own thread context. The
+    the streaming threads to an application in its own thread context. The
     advantage of a bus is that an application does not need to be
     thread-aware in order to use &GStreamer;, even though &GStreamer;
     itself is heavily threaded.
@@ -255,7 +255,7 @@
           manually extract the progress (in percent) from the message by
           extracting the <quote>buffer-percent</quote> property from the
           structure returned by <function>gst_message_get_structure
-          ()</function>.
+            ()</function>. See also <xref linkend="chapter-buffering"/>.
         </para>
       </listitem>
       <listitem>
diff --git a/docs/manual/basics-elements.xml b/docs/manual/basics-elements.xml
index 33b805f..8f81493 100644
--- a/docs/manual/basics-elements.xml
+++ b/docs/manual/basics-elements.xml
@@ -557,7 +557,7 @@
       automatically, so it's usually only necessary to set the state of the
       top-level pipeline to start up the pipeline or shut it down. However,
       when adding elements dynamically to an already-running pipeline, e.g.
-      from within a "pad-added" or "new-decoded-pad" signal callback, you
+      from within a "pad-added" signal callback, you
       need to set it to the desired target state yourself using
       <function>gst_element_set_state ()</function> or
       <function>gst_element_sync_state_with_parent ()</function>.
diff --git a/docs/manual/basics-pads.xml b/docs/manual/basics-pads.xml
index 91c6a5a..c490a25 100644
--- a/docs/manual/basics-pads.xml
+++ b/docs/manual/basics-pads.xml
@@ -120,7 +120,7 @@
       <!-- example-end pad.c d --></programlisting>
       <para>
         It is not uncommon to add elements to the pipeline only from within
-        the "pad-added" or "new-decoded-pad" callback. If you do this, don't
+        the "pad-added" callback. If you do this, don't
         forget to set the state of the newly-added elements to the target
         state of the pipeline using
         <function>gst_element_set_state ()</function> or
diff --git a/docs/manual/communication.png b/docs/manual/communication.png
index 2d136c6..2b11ed5 100644
--- a/docs/manual/communication.png
+++ b/docs/manual/communication.png
Binary files differ
diff --git a/docs/manual/gstreamer-overview.png b/docs/manual/gstreamer-overview.png
index b762ab2..bb2df9b 100644
--- a/docs/manual/gstreamer-overview.png
+++ b/docs/manual/gstreamer-overview.png
Binary files differ
diff --git a/docs/manual/highlevel-components.xml b/docs/manual/highlevel-playback.xml
similarity index 61%
rename from docs/manual/highlevel-components.xml
rename to docs/manual/highlevel-playback.xml
index b82c26c..27d2d1f 100644
--- a/docs/manual/highlevel-components.xml
+++ b/docs/manual/highlevel-playback.xml
@@ -1,5 +1,5 @@
-<chapter id="chapter-components">
-  <title>Components</title>
+<chapter id="chapter-playback-components">
+  <title>Playback Components</title>
 
   <para>
     &GStreamer; includes several higher-level components to simplify an
@@ -193,9 +193,12 @@
       responsible for reporting the error to the user.
     </para>
     <programlisting><!-- example-begin decodebin.c a -->
-#include &lt;gst/gst.h&gt;
+<![CDATA[
+#include <gst/gst.h>
+]]>
 <!-- example-end decodebin.c a -->
-[.. my_bus_callback goes here ..]<!-- example-begin decodebin.c b --><!--
+[.. my_bus_callback goes here ..]<!-- example-begin decodebin.c b -->
+<!--
 static gboolean
 my_bus_callback (GstBus     *bus,
 		 GstMessage *message,
@@ -230,6 +233,7 @@
 }
 --><!-- example-end decodebin.c b -->
 <!-- example-begin decodebin.c c -->
+<![CDATA[
 GstElement *pipeline, *audio;
 
 static void
@@ -274,12 +278,12 @@
   GstBus *bus;
 
   /* init GStreamer */
-  gst_init (&amp;argc, &amp;argv);
+  gst_init (&argc, &argv);
   loop = g_main_loop_new (NULL, FALSE);
 
   /* make sure we have input */
   if (argc != 2) {
-    g_print ("Usage: %s &lt;filename&gt;\n", argv[0]);
+    g_print ("Usage: %s <filename>\n", argv[0]);
     return -1;
   }
 
@@ -319,8 +323,8 @@
 
   return 0;
 }
+]]>
     <!-- example-end decodebin.c c --></programlisting>
-
     <para>
       Decodebin, similar to playbin, supports the following features:
     </para>
@@ -366,11 +370,248 @@
       command <command>gst-launch-1.0 filesrc location=file.ogg ! decodebin
       ! audioconvert ! audioresample ! autoaudiosink</command>.
     </para>
+  </sect1>
+
+  <sect1 id="section-components-uridecodebin">
+    <title>URIDecodebin</title>
     <para>
       The uridecodebin element is very similar to decodebin, only that it
       automatically plugs a source plugin based on the protocol of the URI
       given.
     </para>
+    <para>
+      Uridecodebin will also automatically insert buffering elements when
+      the uri is a slow network source. The buffering element will post
+      BUFFERING messages that the application needs to handle as explained
+      in <xref linkend="chapter-buffering"/>.     
+      The following properties can be used to configure the buffering method:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The buffer-size property allows you to configure a maximum size in
+          bytes for the buffer element.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The buffer-duration property allows you to configure a maximum size
+          in time for the buffer element. The time will be estimated based on
+          the bitrate of the network.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          With the download property you can enable the download buffering
+          method as described in <xref linkend="section-buffering-download"/>.
+          Setting this option to TRUE will only enable download buffering
+          for selected formats such as quicktime, flash video, avi and
+          webm.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          You can also enable buffering on the parsed/demuxed data with the
+          use-buffering property. This is interesting to enable buffering
+          on slower random access media such as a network file server.
+        </para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      URIDecodebin can be easily tested on the commandline, e.g. by using the
+      command <command>gst-launch-1.0 uridecodebin uri=file:///file.ogg !
+      ! audioconvert ! audioresample ! autoaudiosink</command>.
+    </para>
   </sect1>
 
+  <sect1 id="section-components-playsink">
+    <title>Playsink</title>
+    <para>
+      The playsink element is a powerful sink element. It has request pads
+      for raw decoded audio, video and text and it will configure itself to
+      play the media streams. It has the following features:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          It exposes GstStreamVolume, GstVideoOverlay, GstNavigation and
+          GstColorBalance interfaces and automatically plugs software
+          elements to implement the interfaces when needed.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          It will automatically plug conversion elements.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Can optionally render visualizations when there is no video input.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Configurable sink elements.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Configurable audio/video sync offset to fine-tune synchronization
+          in badly muxed files.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Support for taking a snapshot of the last video frame.
+        </para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      Below is an example of how you can use playsink. We use a uridecodebin
+      element to decode into raw audio and video streams which we then link
+      to the playsink request pads. We only link the first audio and video
+      pads, you could use an input-selector to link all pads.
+    </para>
+    <programlisting>
+<!-- example-begin playsink.c a -->
+<![CDATA[
+#include <gst/gst.h>
+]]>
+<!-- example-end playsink.c a -->
+[.. my_bus_callback goes here ..]
+<!-- example-begin playsink.c b -->
+<!--
+static gboolean
+my_bus_callback (GstBus     *bus,
+		 GstMessage *message,
+		 gpointer    data)
+{
+  GMainLoop *loop = data;
+
+  switch (GST_MESSAGE_TYPE (message)) {
+    case GST_MESSAGE_ERROR: {
+      GError *err;
+      gchar *debug;
+
+      gst_message_parse_error (message, &amp;err, &amp;debug);
+      g_print ("Error: %s\n", err-&gt;message);
+      g_error_free (err);
+      g_free (debug);
+
+      g_main_loop_quit (loop);
+      break;
+    }
+    case GST_MESSAGE_EOS:
+      /* end-of-stream */
+      g_main_loop_quit (loop);
+      break;
+    default:
+      /* unhandled message */
+      break;
+  }
+
+  /* remove message from the queue */
+  return TRUE;
+}
+-->
+<!-- example-end playsink.c b -->
+<!-- example-begin playsink.c c -->
+<![CDATA[
+GstElement *pipeline, *sink;
+
+static void
+cb_pad_added (GstElement *dec,
+	      GstPad     *pad,
+	      gpointer    data)
+{
+  GstCaps *caps;
+  GstStructure *str;
+  const gchar *name;
+  GstPadTemplate *templ;
+  GstElementClass *klass;
+
+  /* check media type */
+  caps = gst_pad_query_caps (pad, NULL);
+  str = gst_caps_get_structure (caps, 0);
+  name = gst_structure_get_name (str);
+
+  klass = GST_ELEMENT_GET_CLASS (sink);
+
+  if (g_str_has_prefix (name, "audio")) {
+    templ = gst_element_class_get_pad_template (klass, "audio_sink");
+  } else if (g_str_has_prefix (name, "video")) {
+    templ = gst_element_class_get_pad_template (klass, "video_sink");
+  } else if (g_str_has_prefix (name, "text")) {
+    templ = gst_element_class_get_pad_template (klass, "text_sink");
+  } else {
+    templ = NULL;
+  }
+
+  if (templ) {
+    GstPad *sinkpad;
+
+    sinkpad = gst_element_request_pad (sink, templ, NULL, NULL);
+
+    if (!gst_pad_is_linked (sinkpad))
+      gst_pad_link (pad, sinkpad);
+
+    gst_object_unref (sinkpad);
+  }
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  GMainLoop *loop;
+  GstElement *dec;
+  GstBus *bus;
+
+  /* init GStreamer */
+  gst_init (&argc, &argv);
+  loop = g_main_loop_new (NULL, FALSE);
+
+  /* make sure we have input */
+  if (argc != 2) {
+    g_print ("Usage: %s <uri>\n", argv[0]);
+    return -1;
+  }
+
+  /* setup */
+  pipeline = gst_pipeline_new ("pipeline");
+
+  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+  gst_bus_add_watch (bus, my_bus_callback, loop);
+  gst_object_unref (bus);
+
+  dec = gst_element_factory_make ("uridecodebin", "source");
+  g_object_set (G_OBJECT (dec), "uri", argv[1], NULL);
+  g_signal_connect (dec, "pad-added", G_CALLBACK (cb_pad_added), NULL);
+
+  /* create audio output */
+  sink = gst_element_factory_make ("playsink", "sink");
+  gst_util_set_object_arg (G_OBJECT (sink), "flags",  
+      "soft-colorbalance+soft-volume+vis+text+audio+video");
+  gst_bin_add_many (GST_BIN (pipeline), dec, sink, NULL);
+
+  /* run */
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+  g_main_loop_run (loop);
+
+  /* cleanup */
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (GST_OBJECT (pipeline));
+
+  return 0;
+}
+]]>
+<!-- example-end playsink.c c -->
+    </programlisting>
+    <para>
+      This example will show audio and video depending on what you
+      give it. Try this example on an audio file and you will see that
+      it shows visualizations. You can change the visualization at runtime by
+      changing the vis-plugin property.
+    </para>
+  </sect1>
 </chapter>
diff --git a/docs/manual/intro-gstreamer.xml b/docs/manual/intro-gstreamer.xml
index 1e40c97..38329e8 100644
--- a/docs/manual/intro-gstreamer.xml
+++ b/docs/manual/intro-gstreamer.xml
@@ -55,7 +55,8 @@
         <listitem><para>a plugin architecture</para></listitem>
         <listitem><para>a pipeline architecture</para></listitem>
         <listitem><para>a mechanism for media type handling/negotiation</para></listitem>
-        <listitem><para>over 150 plug-ins</para></listitem>
+        <listitem><para>a mechanism for synchronization</para></listitem>
+        <listitem><para>over 250 plug-ins providing more than 1000 elements</para></listitem>
         <listitem><para>a set of tools</para></listitem>
       </itemizedlist>
     </para> 
diff --git a/docs/manual/manual.xml b/docs/manual/manual.xml
index 14f32d1..6462ccc 100644
--- a/docs/manual/manual.xml
+++ b/docs/manual/manual.xml
@@ -41,16 +41,18 @@
 <!ENTITY METADATA             SYSTEM "advanced-metadata.xml">
 <!ENTITY INTERFACES           SYSTEM "advanced-interfaces.xml">
 <!ENTITY CLOCKS               SYSTEM "advanced-clocks.xml">
+<!ENTITY BUFFERING            SYSTEM "advanced-buffering.xml">
 <!ENTITY DPARAMS              SYSTEM "advanced-dparams.xml">
 <!ENTITY THREADS              SYSTEM "advanced-threads.xml">
 <!ENTITY AUTOPLUGGING         SYSTEM "advanced-autoplugging.xml">
 <!ENTITY DATAACCESS           SYSTEM "advanced-dataaccess.xml">
 
 <!-- Part 4: Higher-level interfaces -->
-<!ENTITY COMPONENTS           SYSTEM "highlevel-components.xml">
+<!ENTITY PLAYBACK             SYSTEM "highlevel-playback.xml">
 
 <!-- Appendices -->
 <!ENTITY PROGRAMS             SYSTEM "appendix-programs.xml">
+<!ENTITY COMPILING            SYSTEM "appendix-compiling.xml">
 <!ENTITY CHECKLIST            SYSTEM "appendix-checklist.xml">
 <!ENTITY PORTING              SYSTEM "appendix-porting.xml">
 <!ENTITY INTEGRATION          SYSTEM "appendix-integration.xml">
@@ -172,6 +174,7 @@
     &METADATA;
     &INTERFACES;
     &CLOCKS;
+    &BUFFERING;
     &DPARAMS;
     &THREADS;
     &AUTOPLUGGING;
@@ -199,7 +202,7 @@
       </para>
     </partintro>
 
-    &COMPONENTS;
+    &PLAYBACK;
 
   </part>
 
@@ -255,6 +258,7 @@
     -->
 
     &PROGRAMS;
+    &COMPILING;
     &CHECKLIST;
     &PORTING;
     &INTEGRATION;
diff --git a/docs/manual/mime-world.png b/docs/manual/mime-world.png
index 97b9557..f1e51f2 100644
--- a/docs/manual/mime-world.png
+++ b/docs/manual/mime-world.png
Binary files differ
diff --git a/docs/manual/thread-buffering.png b/docs/manual/thread-buffering.png
index e0886c1..006c602 100644
--- a/docs/manual/thread-buffering.png
+++ b/docs/manual/thread-buffering.png
Binary files differ
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index 02830bb..0e29152 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -99,7 +99,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -318,6 +318,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -354,6 +357,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 8c59924..7f28375 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp546320"></a>gstreamer Elements</h2></div></div></div>
+<a name="idp4169040"></a>gstreamer Elements</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-capsfilter.html">capsfilter</a></span><span class="refpurpose"> — Pass data without modification, limiting formats</span>
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index 9861817..1c56097 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp3821056"></a>gstreamer Plugins</h2></div></div></div>
+<a name="idp273520"></a>gstreamer Plugins</h2></div></div></div>
 <div class="toc"><dl><dt>
 <span class="refentrytitle"><a href="gstreamer-plugins-plugin-coreelements.html">coreelements</a></span><span class="refpurpose"> — <a name="plugin-coreelements"></a> GStreamer core elements</span>
 </dt></dl></div>
diff --git a/docs/plugins/html/gstreamer-plugins-capsfilter.html b/docs/plugins/html/gstreamer-plugins-capsfilter.html
index 0f0b28d..b860166 100644
--- a/docs/plugins/html/gstreamer-plugins-capsfilter.html
+++ b/docs/plugins/html/gstreamer-plugins-capsfilter.html
@@ -70,7 +70,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp7718544"></a><h3>Example launch line</h3>
+<a name="idp6769312"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -88,7 +88,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp8004944"></a><h3>Element Information</h3>
+<a name="idp8040384"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -111,7 +111,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp134944"></a><h3>Element Pads</h3>
+<a name="idm8384"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-fakesink.html b/docs/plugins/html/gstreamer-plugins-fakesink.html
index 8a6445e..e9747b9 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesink.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesink.html
@@ -86,7 +86,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp9553712"></a><h3>Example launch line</h3>
+<a name="idp5610160"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -104,7 +104,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp9556320"></a><h3>Element Information</h3>
+<a name="idp10697840"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -127,7 +127,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp7211360"></a><h3>Element Pads</h3>
+<a name="idp10705376"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-fakesrc.html b/docs/plugins/html/gstreamer-plugins-fakesrc.html
index f3044a9..1e53cca 100644
--- a/docs/plugins/html/gstreamer-plugins-fakesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fakesrc.html
@@ -102,7 +102,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp8516432"></a><h3>Example launch line</h3>
+<a name="idp8917984"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -124,7 +124,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp8519616"></a><h3>Element Information</h3>
+<a name="idp8921168"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -147,7 +147,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp8527024"></a><h3>Element Pads</h3>
+<a name="idp8928576"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-fdsink.html b/docs/plugins/html/gstreamer-plugins-fdsink.html
index 21c8077..81aa805 100644
--- a/docs/plugins/html/gstreamer-plugins-fdsink.html
+++ b/docs/plugins/html/gstreamer-plugins-fdsink.html
@@ -85,7 +85,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp7622240"></a><h3>Element Information</h3>
+<a name="idp6257216"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -108,7 +108,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp7657744"></a><h3>Element Pads</h3>
+<a name="idp5945264"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-fdsrc.html b/docs/plugins/html/gstreamer-plugins-fdsrc.html
index 04a1570..b40e4c4 100644
--- a/docs/plugins/html/gstreamer-plugins-fdsrc.html
+++ b/docs/plugins/html/gstreamer-plugins-fdsrc.html
@@ -97,7 +97,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp9288096"></a><h3>Example launch line</h3>
+<a name="idp5656528"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -119,7 +119,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp9291200"></a><h3>Element Information</h3>
+<a name="idp5659632"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -142,7 +142,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp9591808"></a><h3>Element Pads</h3>
+<a name="idp8604976"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-filesink.html b/docs/plugins/html/gstreamer-plugins-filesink.html
index db6e97f..f6fb907 100644
--- a/docs/plugins/html/gstreamer-plugins-filesink.html
+++ b/docs/plugins/html/gstreamer-plugins-filesink.html
@@ -80,7 +80,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp6010672"></a><h3>Example launch line</h3>
+<a name="idp5970928"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -98,7 +98,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp6013232"></a><h3>Element Information</h3>
+<a name="idp5973488"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -121,7 +121,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp6020640"></a><h3>Element Pads</h3>
+<a name="idp5980896"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-filesrc.html b/docs/plugins/html/gstreamer-plugins-filesrc.html
index 69cb79f..a9c98eb 100644
--- a/docs/plugins/html/gstreamer-plugins-filesrc.html
+++ b/docs/plugins/html/gstreamer-plugins-filesrc.html
@@ -82,7 +82,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp7329248"></a><h3>Example launch line</h3>
+<a name="idp8226560"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -100,7 +100,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp7331856"></a><h3>Element Information</h3>
+<a name="idp8229168"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -123,7 +123,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp9626240"></a><h3>Element Pads</h3>
+<a name="idp8236624"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-funnel.html b/docs/plugins/html/gstreamer-plugins-funnel.html
index 17468cc..bbcde44 100644
--- a/docs/plugins/html/gstreamer-plugins-funnel.html
+++ b/docs/plugins/html/gstreamer-plugins-funnel.html
@@ -68,7 +68,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp7279280"></a><h3>Element Information</h3>
+<a name="idp7509888"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -91,7 +91,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp5555680"></a><h3>Element Pads</h3>
+<a name="idp7802976"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-identity.html b/docs/plugins/html/gstreamer-plugins-identity.html
index 7a4b50e..a431f82 100644
--- a/docs/plugins/html/gstreamer-plugins-identity.html
+++ b/docs/plugins/html/gstreamer-plugins-identity.html
@@ -90,7 +90,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp10160416"></a><h3>Element Information</h3>
+<a name="idp11020544"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -113,7 +113,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp10167872"></a><h3>Element Pads</h3>
+<a name="idp11028000"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-input-selector.html b/docs/plugins/html/gstreamer-plugins-input-selector.html
index 503e522..fe14fca 100644
--- a/docs/plugins/html/gstreamer-plugins-input-selector.html
+++ b/docs/plugins/html/gstreamer-plugins-input-selector.html
@@ -105,7 +105,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp8999888"></a><h3>Element Information</h3>
+<a name="idp11352080"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -128,7 +128,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp9007424"></a><h3>Element Pads</h3>
+<a name="idp11359616"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-multiqueue.html b/docs/plugins/html/gstreamer-plugins-multiqueue.html
index d100671..cc0f183 100644
--- a/docs/plugins/html/gstreamer-plugins-multiqueue.html
+++ b/docs/plugins/html/gstreamer-plugins-multiqueue.html
@@ -83,7 +83,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp9479760"></a><p>
+<a name="idp9147568"></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>
@@ -173,7 +173,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp10309440"></a><h3>Element Information</h3>
+<a name="idp11591264"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -196,7 +196,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp10316896"></a><h3>Element Pads</h3>
+<a name="idp11598720"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-output-selector.html b/docs/plugins/html/gstreamer-plugins-output-selector.html
index 2349848..6850e8a 100644
--- a/docs/plugins/html/gstreamer-plugins-output-selector.html
+++ b/docs/plugins/html/gstreamer-plugins-output-selector.html
@@ -70,7 +70,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp5357952"></a><h3>Element Information</h3>
+<a name="idp10673888"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -93,7 +93,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp10642464"></a><h3>Element Pads</h3>
+<a name="idp5443200"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
index a606a24..1fd3126 100644
--- a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
+++ b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
@@ -28,7 +28,7 @@
 <td valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="idp6936016"></a><h2>Plugin Information</h2>
+<a name="idp11737760"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -38,7 +38,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.0.1</td>
+<td>1.0.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -56,7 +56,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="idp10559648"></a><h2>Elements</h2>
+<a name="idp8002864"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-queue.html b/docs/plugins/html/gstreamer-plugins-queue.html
index c1c9f75..371aa6a 100644
--- a/docs/plugins/html/gstreamer-plugins-queue.html
+++ b/docs/plugins/html/gstreamer-plugins-queue.html
@@ -122,7 +122,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp10717648"></a><h3>Element Information</h3>
+<a name="idp11887200"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -145,7 +145,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp10725104"></a><h3>Element Pads</h3>
+<a name="idp11894656"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-queue2.html b/docs/plugins/html/gstreamer-plugins-queue2.html
index 945aeb1..286ab05 100644
--- a/docs/plugins/html/gstreamer-plugins-queue2.html
+++ b/docs/plugins/html/gstreamer-plugins-queue2.html
@@ -110,7 +110,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp10988336"></a><h3>Element Information</h3>
+<a name="idp12065680"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -133,7 +133,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp10995744"></a><h3>Element Pads</h3>
+<a name="idp12073088"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-tee.html b/docs/plugins/html/gstreamer-plugins-tee.html
index 10ea870..0698ad7 100644
--- a/docs/plugins/html/gstreamer-plugins-tee.html
+++ b/docs/plugins/html/gstreamer-plugins-tee.html
@@ -83,7 +83,7 @@
 <p>
 </p>
 <div class="refsect2">
-<a name="idp5968864"></a><h3>Example launch line</h3>
+<a name="idp11758608"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -102,7 +102,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp5971584"></a><h3>Element Information</h3>
+<a name="idp11761328"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -125,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp11108624"></a><h3>Element Pads</h3>
+<a name="idp12171152"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-typefind.html b/docs/plugins/html/gstreamer-plugins-typefind.html
index c3bce0f..84edaa7 100644
--- a/docs/plugins/html/gstreamer-plugins-typefind.html
+++ b/docs/plugins/html/gstreamer-plugins-typefind.html
@@ -90,7 +90,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp9392352"></a><h3>Element Information</h3>
+<a name="idp8383824"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -113,7 +113,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp9399760"></a><h3>Element Pads</h3>
+<a name="idp8391232"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins-valve.html b/docs/plugins/html/gstreamer-plugins-valve.html
index bb6f732..f7a6e8a 100644
--- a/docs/plugins/html/gstreamer-plugins-valve.html
+++ b/docs/plugins/html/gstreamer-plugins-valve.html
@@ -81,7 +81,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="idp5663680"></a><h3>Element Information</h3>
+<a name="idp7026960"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
@@ -104,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="idp4984144"></a><h3>Element Pads</h3>
+<a name="idp6648192"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
 <tbody>
diff --git a/docs/plugins/html/gstreamer-plugins.devhelp2 b/docs/plugins/html/gstreamer-plugins.devhelp2
index 1c45f5a..5ffdc59 100644
--- a/docs/plugins/html/gstreamer-plugins.devhelp2
+++ b/docs/plugins/html/gstreamer-plugins.devhelp2
@@ -26,14 +26,14 @@
     </sub>
   </chapters>
   <functions>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-capsfilter.html#idp7718544"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-capsfilter.html#idp8004944"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-capsfilter.html#idp134944"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-capsfilter.html#idp6769312"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-capsfilter.html#idp8040384"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-capsfilter.html#idm8384"/>
     <keyword type="struct" name="struct GstCapsFilter" link="gstreamer-plugins-capsfilter.html#GstCapsFilter-struct"/>
     <keyword type="property" name="The &quot;caps&quot; property" link="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesrc.html#idp8516432"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesrc.html#idp8519616"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesrc.html#idp8527024"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesrc.html#idp8917984"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesrc.html#idp8921168"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesrc.html#idp8928576"/>
     <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 +57,9 @@
     <keyword type="property" name="The &quot;sync&quot; property" link="gstreamer-plugins-fakesrc.html#GstFakeSrc--sync"/>
     <keyword type="property" name="The &quot;format&quot; property" link="gstreamer-plugins-fakesrc.html#GstFakeSrc--format"/>
     <keyword type="signal" name="The &quot;handoff&quot; signal" link="gstreamer-plugins-fakesrc.html#GstFakeSrc-handoff"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesink.html#idp9553712"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesink.html#idp9556320"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesink.html#idp7211360"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-fakesink.html#idp5610160"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fakesink.html#idp10697840"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fakesink.html#idp10705376"/>
     <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 &quot;can-activate-pull&quot; property" link="gstreamer-plugins-fakesink.html#GstFakeSink--can-activate-pull"/>
@@ -72,19 +72,19 @@
     <keyword type="property" name="The &quot;num-buffers&quot; property" link="gstreamer-plugins-fakesink.html#GstFakeSink--num-buffers"/>
     <keyword type="signal" name="The &quot;handoff&quot; signal" link="gstreamer-plugins-fakesink.html#GstFakeSink-handoff"/>
     <keyword type="signal" name="The &quot;preroll-handoff&quot; signal" link="gstreamer-plugins-fakesink.html#GstFakeSink-preroll-handoff"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsink.html#idp7622240"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsink.html#idp7657744"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsink.html#idp6257216"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsink.html#idp5945264"/>
     <keyword type="struct" name="struct GstFdSink" link="gstreamer-plugins-fdsink.html#GstFdSink-struct"/>
     <keyword type="property" name="The &quot;fd&quot; property" link="gstreamer-plugins-fdsink.html#GstFdSink--fd"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-fdsrc.html#idp9288096"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsrc.html#idp9291200"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsrc.html#idp9591808"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-fdsrc.html#idp5656528"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-fdsrc.html#idp5659632"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-fdsrc.html#idp8604976"/>
     <keyword type="struct" name="struct GstFdSrc" link="gstreamer-plugins-fdsrc.html#GstFdSrc-struct"/>
     <keyword type="property" name="The &quot;fd&quot; property" link="gstreamer-plugins-fdsrc.html#GstFdSrc--fd"/>
     <keyword type="property" name="The &quot;timeout&quot; property" link="gstreamer-plugins-fdsrc.html#GstFdSrc--timeout"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesrc.html#idp7329248"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-filesrc.html#idp7331856"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesrc.html#idp9626240"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesrc.html#idp8226560"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-filesrc.html#idp8229168"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesrc.html#idp8236624"/>
     <keyword type="struct" name="struct GstFileSrc" link="gstreamer-plugins-filesrc.html#GstFileSrc-struct"/>
     <keyword type="property" name="The &quot;fd&quot; property" link="gstreamer-plugins-filesrc.html#GstFileSrc--fd"/>
     <keyword type="property" name="The &quot;location&quot; property" link="gstreamer-plugins-filesrc.html#GstFileSrc--location"/>
@@ -92,19 +92,19 @@
     <keyword type="property" name="The &quot;touch&quot; property" link="gstreamer-plugins-filesrc.html#GstFileSrc--touch"/>
     <keyword type="property" name="The &quot;use-mmap&quot; property" link="gstreamer-plugins-filesrc.html#GstFileSrc--use-mmap"/>
     <keyword type="property" name="The &quot;sequential&quot; property" link="gstreamer-plugins-filesrc.html#GstFileSrc--sequential"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesink.html#idp6010672"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-filesink.html#idp6013232"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesink.html#idp6020640"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-filesink.html#idp5970928"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-filesink.html#idp5973488"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-filesink.html#idp5980896"/>
     <keyword type="struct" name="struct GstFileSink" link="gstreamer-plugins-filesink.html#GstFileSink-struct"/>
     <keyword type="property" name="The &quot;location&quot; property" link="gstreamer-plugins-filesink.html#GstFileSink--location"/>
     <keyword type="property" name="The &quot;buffer-mode&quot; property" link="gstreamer-plugins-filesink.html#GstFileSink--buffer-mode"/>
     <keyword type="property" name="The &quot;buffer-size&quot; property" link="gstreamer-plugins-filesink.html#GstFileSink--buffer-size"/>
     <keyword type="property" name="The &quot;append&quot; property" link="gstreamer-plugins-filesink.html#GstFileSink--append"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-funnel.html#idp7279280"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-funnel.html#idp5555680"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-funnel.html#idp7509888"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-funnel.html#idp7802976"/>
     <keyword type="struct" name="struct GstFunnel" link="gstreamer-plugins-funnel.html#GstFunnel-struct"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-identity.html#idp10160416"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-identity.html#idp10167872"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-identity.html#idp11020544"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-identity.html#idp11028000"/>
     <keyword type="struct" name="struct GstIdentity" link="gstreamer-plugins-identity.html#GstIdentity-struct"/>
     <keyword type="property" name="The &quot;check-perfect&quot; property" link="gstreamer-plugins-identity.html#GstIdentity--check-perfect"/>
     <keyword type="property" name="The &quot;datarate&quot; property" link="gstreamer-plugins-identity.html#GstIdentity--datarate"/>
@@ -120,8 +120,8 @@
     <keyword type="property" name="The &quot;check-imperfect-timestamp&quot; property" link="gstreamer-plugins-identity.html#GstIdentity--check-imperfect-timestamp"/>
     <keyword type="property" name="The &quot;signal-handoffs&quot; property" link="gstreamer-plugins-identity.html#GstIdentity--signal-handoffs"/>
     <keyword type="signal" name="The &quot;handoff&quot; signal" link="gstreamer-plugins-identity.html#GstIdentity-handoff"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-input-selector.html#idp8999888"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-input-selector.html#idp9007424"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-input-selector.html#idp11352080"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-input-selector.html#idp11359616"/>
     <keyword type="struct" name="struct GstInputSelector" link="gstreamer-plugins-input-selector.html#GstInputSelector-struct"/>
     <keyword type="property" name="The &quot;active-pad&quot; property" link="gstreamer-plugins-input-selector.html#GstInputSelector--active-pad"/>
     <keyword type="property" name="The &quot;n-pads&quot; property" link="gstreamer-plugins-input-selector.html#GstInputSelector--n-pads"/>
@@ -131,9 +131,9 @@
     <keyword type="property" name="The &quot;sync-mode&quot; property" link="gstreamer-plugins-input-selector.html#GstInputSelector--sync-mode"/>
     <keyword type="signal" name="The &quot;block&quot; signal" link="gstreamer-plugins-input-selector.html#GstInputSelector-block"/>
     <keyword type="signal" name="The &quot;switch&quot; signal" link="gstreamer-plugins-input-selector.html#GstInputSelector-switch"/>
-    <keyword type="" name="" link="gstreamer-plugins-multiqueue.html#idp9479760"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-multiqueue.html#idp10309440"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-multiqueue.html#idp10316896"/>
+    <keyword type="" name="" link="gstreamer-plugins-multiqueue.html#idp9147568"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-multiqueue.html#idp11591264"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-multiqueue.html#idp11598720"/>
     <keyword type="struct" name="struct GstMultiQueue" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-struct"/>
     <keyword type="property" name="The &quot;extra-size-buffers&quot; property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-buffers"/>
     <keyword type="property" name="The &quot;extra-size-bytes&quot; property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-bytes"/>
@@ -147,14 +147,14 @@
     <keyword type="property" name="The &quot;sync-by-running-time&quot; property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--sync-by-running-time"/>
     <keyword type="signal" name="The &quot;overrun&quot; signal" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun"/>
     <keyword type="signal" name="The &quot;underrun&quot; signal" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-output-selector.html#idp5357952"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-output-selector.html#idp10642464"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-output-selector.html#idp10673888"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-output-selector.html#idp5443200"/>
     <keyword type="struct" name="struct GstOutputSelector" link="gstreamer-plugins-output-selector.html#GstOutputSelector-struct"/>
     <keyword type="property" name="The &quot;active-pad&quot; property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--active-pad"/>
     <keyword type="property" name="The &quot;resend-latest&quot; property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--resend-latest"/>
     <keyword type="property" name="The &quot;pad-negotiation-mode&quot; property" link="gstreamer-plugins-output-selector.html#GstOutputSelector--pad-negotiation-mode"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-queue.html#idp10717648"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue.html#idp10725104"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-queue.html#idp11887200"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue.html#idp11894656"/>
     <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 &quot;current-level-buffers&quot; property" link="gstreamer-plugins-queue.html#GstQueue--current-level-buffers"/>
@@ -172,8 +172,8 @@
     <keyword type="signal" name="The &quot;running&quot; signal" link="gstreamer-plugins-queue.html#GstQueue-running"/>
     <keyword type="signal" name="The &quot;underrun&quot; signal" link="gstreamer-plugins-queue.html#GstQueue-underrun"/>
     <keyword type="signal" name="The &quot;pushing&quot; signal" link="gstreamer-plugins-queue.html#GstQueue-pushing"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-queue2.html#idp10988336"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue2.html#idp10995744"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-queue2.html#idp12065680"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-queue2.html#idp12073088"/>
     <keyword type="struct" name="struct GstQueue2" link="gstreamer-plugins-queue2.html#GstQueue2-struct"/>
     <keyword type="property" name="The &quot;current-level-buffers&quot; property" link="gstreamer-plugins-queue2.html#GstQueue2--current-level-buffers"/>
     <keyword type="property" name="The &quot;current-level-bytes&quot; property" link="gstreamer-plugins-queue2.html#GstQueue2--current-level-bytes"/>
@@ -189,9 +189,9 @@
     <keyword type="property" name="The &quot;use-rate-estimate&quot; property" link="gstreamer-plugins-queue2.html#GstQueue2--use-rate-estimate"/>
     <keyword type="property" name="The &quot;temp-remove&quot; property" link="gstreamer-plugins-queue2.html#GstQueue2--temp-remove"/>
     <keyword type="property" name="The &quot;ring-buffer-max-size&quot; property" link="gstreamer-plugins-queue2.html#GstQueue2--ring-buffer-max-size"/>
-    <keyword type="" name="Example launch line" link="gstreamer-plugins-tee.html#idp5968864"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-tee.html#idp5971584"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-tee.html#idp11108624"/>
+    <keyword type="" name="Example launch line" link="gstreamer-plugins-tee.html#idp11758608"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-tee.html#idp11761328"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-tee.html#idp12171152"/>
     <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 &quot;has-chain&quot; property" link="gstreamer-plugins-tee.html#GstTee--has-chain"/>
@@ -201,16 +201,16 @@
     <keyword type="property" name="The &quot;silent&quot; property" link="gstreamer-plugins-tee.html#GstTee--silent"/>
     <keyword type="property" name="The &quot;pull-mode&quot; property" link="gstreamer-plugins-tee.html#GstTee--pull-mode"/>
     <keyword type="property" name="The &quot;alloc-pad&quot; property" link="gstreamer-plugins-tee.html#GstTee--alloc-pad"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-typefind.html#idp9392352"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-typefind.html#idp9399760"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-typefind.html#idp8383824"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-typefind.html#idp8391232"/>
     <keyword type="struct" name="struct GstTypeFindElement" link="gstreamer-plugins-typefind.html#GstTypeFindElement-struct"/>
     <keyword type="property" name="The &quot;caps&quot; property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--caps"/>
     <keyword type="property" name="The &quot;maximum&quot; property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--maximum"/>
     <keyword type="property" name="The &quot;minimum&quot; property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--minimum"/>
     <keyword type="property" name="The &quot;force-caps&quot; property" link="gstreamer-plugins-typefind.html#GstTypeFindElement--force-caps"/>
     <keyword type="signal" name="The &quot;have-type&quot; signal" link="gstreamer-plugins-typefind.html#GstTypeFindElement-have-type"/>
-    <keyword type="" name="Element Information" link="gstreamer-plugins-valve.html#idp5663680"/>
-    <keyword type="" name="Element Pads" link="gstreamer-plugins-valve.html#idp4984144"/>
+    <keyword type="" name="Element Information" link="gstreamer-plugins-valve.html#idp7026960"/>
+    <keyword type="" name="Element Pads" link="gstreamer-plugins-valve.html#idp6648192"/>
     <keyword type="struct" name="struct GstValve" link="gstreamer-plugins-valve.html#GstValve-struct"/>
     <keyword type="property" name="The &quot;drop&quot; property" link="gstreamer-plugins-valve.html#GstValve--drop"/>
     <keyword type="constant" name="FAKE_SRC_DATA_ALLOCATE" link="gstreamer-plugins-fakesrc.html#FAKE-SRC-DATA-ALLOCATE:CAPS"/>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index ac26f6a..76907b7 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.0.1)
+      for GStreamer Core Plugins 1.0 (1.0.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>
diff --git a/docs/plugins/inspect/plugin-coreelements.xml b/docs/plugins/inspect/plugin-coreelements.xml
index 1617bac..ed31aa3 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.0.1</version>
+  <version>1.0.2</version>
   <license>LGPL</license>
   <source>gstreamer</source>
   <package>GStreamer source release</package>
diff --git a/docs/pwg/Makefile.in b/docs/pwg/Makefile.in
index 6919b13..473b2cb 100644
--- a/docs/pwg/Makefile.in
+++ b/docs/pwg/Makefile.in
@@ -105,7 +105,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -353,6 +353,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -389,6 +392,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/pwg/advanced-clock.xml b/docs/pwg/advanced-clock.xml
index beb6bd7..89c1f29 100644
--- a/docs/pwg/advanced-clock.xml
+++ b/docs/pwg/advanced-clock.xml
@@ -73,7 +73,10 @@
     <para>
       Synchronization is now a matter of making sure that a buffer with a
       certain running-time is played when the clock reaches the same
-      running-time. Usually this task is done by sink elements.
+      running-time. Usually this task is done by sink elements. Sink also
+      have to take into account the latency configured in the pipeline and
+      add this to the buffer running-time before synchronizing to the
+      pipeline clock.
     </para>
   </sect1>
   
@@ -120,11 +123,11 @@
     </sect2>
 
     <sect2>
-      <title>Parser elements </title>
+      <title>Parser/Decoder/Encoder elements </title>
       <para>
-        Parser elements must use the incomming timestamps and transfer those
-        to the resulting output buffers. They are allowed to interpolate or
-        reconstruct timestamps on missing input buffers when they can.
+        Parser/Decoder elements must use the incomming timestamps and transfer
+        those to the resulting output buffers. They are allowed to interpolate
+        or reconstruct timestamps on missing input buffers when they can.
       </para>
     </sect2>
 
@@ -139,8 +142,18 @@
         buffer timestamps.
       </para>
     </sect2>
+
+    <sect2>
+      <title>Muxer elements</title>
+      <para>
+        Muxer elements should use the incomming buffer running-time to mux the
+        different streams together. They should copy the incomming running-time
+        to the outgoing buffers.
+      </para>
+    </sect2>
     
-    <sect2> <title> Sink elements </title>
+    <sect2>
+      <title>Sink elements</title>
       <para>
 	If the element is intended to emit samples at a specific time (real time
 	playing), the element should require a clock, and thus implement the
@@ -148,8 +161,9 @@
       </para>
       <para>
         The sink should then make sure that the sample with running-time is played
-        exactly when the pipeline clock reaches that running-time. Some elements
-        might use the clock API such as <function>gst_clock_id_wait()</function>
+        exactly when the pipeline clock reaches that running-time + latency.
+        Some elements might use the clock API such as
+        <function>gst_clock_id_wait()</function>
         to perform this action. Other sinks might need to use other means of
         scheduling timely playback of the data.
       </para>
diff --git a/docs/pwg/advanced-events.xml b/docs/pwg/advanced-events.xml
index 5d10d55..997d5b3 100644
--- a/docs/pwg/advanced-events.xml
+++ b/docs/pwg/advanced-events.xml
@@ -200,7 +200,9 @@
     <sect2 id="section-events-caps" xreflabel="Caps">
       <title>Caps</title>
       <para>
-        WRITEME
+        The CAPS event contains the format description of the following
+        buffers. See <xref linkend="chapter-negotiation"/> for more
+        information about negotiation.
       </para>
     </sect2>
 
@@ -378,7 +380,9 @@
     <sect2 id="section-events-qos" xreflabel="Quality Of Service (QOS)">
       <title>Quality Of Service (QOS)</title>
       <para>
-        WRITEME
+        The QOS event contains a report about the current real-time
+        performance of the stream. See more info in 
+        <xref linkend="chapter-advanced-qos"/>.
       </para>
     </sect2>
 
diff --git a/docs/pwg/advanced-negotiation.xml b/docs/pwg/advanced-negotiation.xml
index 6264ec2..bc0ecbb 100644
--- a/docs/pwg/advanced-negotiation.xml
+++ b/docs/pwg/advanced-negotiation.xml
@@ -1,185 +1,262 @@
 <chapter id="chapter-negotiation" xreflabel="Caps negotiation">
   <title>Caps negotiation</title>
   <para>
-    Caps negotiation is the process where elements configure themselves
-    and each other for streaming a particular media format over their pads.
-    Since different types of elements have different requirements for the
-    media formats they can negotiate to, it is important that this process
-    is generic and implements all those use cases correctly.
-  </para>
-  <para>
-    In this chapter, we will discuss downstream negotiation and upstream
-    negotiation from a pipeline perspective, implicating the responsibilities
-    of different types of elements in a pipeline, and we will introduce the
-    concept of <emphasis>fixed caps</emphasis>.
+    Caps negotiation is the act of finding a media format (GstCaps) between
+    elements that they can handle. This process in &GStreamer; can in most
+    cases find an optimal solution for the complete pipeline. In this section
+    we explain how this works.
   </para>
 
-  <sect1 id="section-nego-requirements" xreflabel="Caps negotiation use cases">
-    <title>Caps negotiation use cases</title>
+  <sect1 id="section-nego-basics">
+    <title>Caps negotiation basics</title>
     <para>
-      Let's take the case of a file source, linked to a demuxer, linked to a
-      decoder, linked to a converter with a caps filter and finally an audio
-      output. When data flow originally starts, the demuxer will parse the
-      file header (e.g. the Ogg headers), and notice that there is, for
-      example, a Vorbis stream in this Ogg file. Noticing that, it will
-      create an output pad for the Vorbis elementary stream and set a
-      Vorbis-caps on it. Lastly, it adds the pad. As of this point, the pad
-      is ready to be used to stream data, and so the Ogg demuxer is now done.
-      This pad is <emphasis>not</emphasis> re-negotiable, since the type of
-      the data stream is embedded within the data.
-    </para>
-    <para>
-      The Vorbis decoder will decode the Vorbis headers and the Vorbis data
-      coming in on its sinkpad. Now, some decoders may be able to output in
-      multiple output formats, for example both 16-bit integer output and
-      floating-point output, whereas other decoders may be able to only decode
-      into one specific format, e.g. only floating-point (32-bit) audio. Those
-      two cases have consequences for how caps negotiation should be
-      implemented in this decoder element. In the one case, it is possible to
-      use fixed caps, and you're done. In the other case, however, you should
-      implement the possibility for <emphasis>renegotiation</emphasis> in this
-      element, which is the possibility for the data format to be changed to
-      another format at some point in the future. We will discuss how to do
-      this in one of the sections further on in this chapter.
-    </para>
-    <para>
-      The filter can be used by applications to force, for example, a specific
-      channel configuration (5.1/surround or 2.0/stereo), on the pipeline, so
-      that the user can enjoy sound coming from all its speakers. The audio
-      sink, in this example, is a standard ALSA output element (alsasink).
-      The converter element supports any-to-any, and the filter will make sure
-      that only a specifically wanted channel configuration streams through
-      this link (as provided by the user's channel configuration preference).
-      By changing this preference while the pipeline is running, some elements
-      will have to renegotiate <emphasis>while the pipeline is
-      running</emphasis>. This is done through upstream caps renegotiation.
-      That, too, will be discussed in detail in a section further below.
-    </para>
-    <para>
-      In order for caps negotiation on non-fixed links to work correctly,
-      pads can optionally implement a query function that tells peer elements
-      what formats it supports and/or prefers. When upstream renegotiation is
-      triggered, this becomes important.
-    </para>
-    <para>
-      Downstream elements are notified of a newly set caps with a
-      GST_EVENT_CAPS on the sinkpad. So when the vorbis decoder sets a caps on
-      its source pad (to configure the output format), the converter will
-      receive a caps event. 
-      When an element receives a buffer, it should check if it has received
-      all needed format information in a CAPS event previously. If it hasn't,
-      it should return an error from the chain function.
-    </para>
-  </sect1>
-
-  <sect1 id="section-nego-fixedcaps" xreflabel="Fixed caps">
-    <title>Fixed caps</title>
-    <para>
-      The simplest way in which to do caps negotiation is setting a fixed
-      caps on a pad. After a fixed caps has been set, the pad can not be
-      renegotiated from the outside. The only way to reconfigure the pad
-      is for the element owning the pad to set a new fixed caps on the pad.
-      Fixed caps is a setup property for pads, called when creating the pad:
-    </para>
-    <programlisting>
-[..]
-  pad = gst_pad_new_from_static_template (..);
-  gst_pad_use_fixed_caps (pad);
-[..]
-    </programlisting>
-    <para>
-      The fixed caps can then be set on the pad by calling
-      <function>gst_pad_set_caps ()</function>.
-    </para>
-    <programlisting>
-[..]
-  caps = gst_caps_new_simple ("audio/x-raw",
-      "format", G_TYPE_STRING, GST_AUDIO_NE(F32),
-      "rate", G_TYPE_INT, &lt;samplerate&gt;,
-      "channels", G_TYPE_INT, &lt;num-channels&gt;, NULL);
-  if (!gst_pad_set_caps (pad, caps)) {
-    GST_ELEMENT_ERROR (element, CORE, NEGOTIATION, (NULL),
-        ("Some debug information here"));
-    return GST_FLOW_ERROR;
-  }
-[..]
-    </programlisting>
-    <para>
-      Elements that could implement fixed caps (on their source pads) are,
-      in general, all elements that are not renegotiable. Examples include:
+      In &GStreamer;, negotiation of the media format always follows the
+      following simple rules:
     </para>
     <itemizedlist>
       <listitem>
         <para>
-          A typefinder, since the type found is part of the actual data stream
-          and can thus not be re-negotiated.
+          A downstream element suggest a format on its sinkpad and places the
+          suggestion in the result of the CAPS query performed on the sinkpad.
+          See also <xref linkend="section-nego-getcaps"/>.
         </para>
       </listitem>
       <listitem>
         <para>
-          Pretty much all demuxers, since the contained elementary data
-          streams are defined in the file headers, and thus not
-          renegotiable.
+          An upstream element decides on a format. It sends the selected media
+          format downstream on its source pad with a CAPS event. Downstream
+          elements reconfigure themselves to handle the media type in the CAPS
+          event on the sinkpad.
         </para>
       </listitem>
       <listitem>
         <para>
-          Some decoders, where the format is embedded in the data stream
-          and not part of the peercaps <emphasis>and</emphasis> where the
-          decoder itself is not reconfigurable, too.
+          An upstream element can inform downstream that it would like to
+          suggest a new format by sending a RECONFIGURE event upstream. The
+          RECONFIGURE event simply instructs an upstream element to restart
+          the negotiation phase. Because the element that sent out the
+          RECONFIGURE event is now suggesting another format, the format
+          in the pipeline might change.
         </para>
       </listitem>
     </itemizedlist>
     <para>
-      All other elements that need to be configured for the format should
-      implement full caps negotiation, which will be explained in the next
-      few sections.
+      In addition to the CAPS and RECONFIGURE event and the CAPS query, there
+      is an ACCEPT_CAPS query to quickly check if a certain caps can
+      be accepted by an element.
+    </para>
+    <para>
+      All negotiation follows these simple rules. Let's take a look at some
+      typical uses cases and how negotiation happens.
     </para>
   </sect1>
 
-  <sect1 id="section-nego-downstream" xreflabel="Downstream caps negotiation">
-    <title>Downstream caps negotiation</title>
+  <sect1 id="section-nego-usecases">
+    <title>Caps negotiation use cases</title>
     <para>
-      Downstream negotiation takes place when a format needs to be set on a
-      source pad to configure the output format, but this element allows
-      renegotiation because its format is configured on the sinkpad caps,
-      or because it supports multiple formats. The requirements for doing
-      the actual negotiation differ slightly.
+      In what follows we will look at some use cases for push-mode scheduling.
+      The pull-mode scheduling negotiation phase is discussed in
+      <xref linkend="section-nego-pullmode"/> and is actually similar as we
+      will see. 
     </para>
+    <para>
+      Since the sink pads only suggest formats and the source pads need to
+      decide, the most complicated work is done in the source pads.
+      We can identify 3 caps negotiation use cases for the source pads:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Fixed negotiation. An element can output one format only.
+          See <xref linkend="section-nego-fixed"/>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Transform negotiation. There is a (fixed) transform between the
+          input and output format of the element, usually based on some
+          element property. The caps that the element will produce depend
+          on the upstream caps and the caps that the element can accept
+          depend on the downstream caps.
+          See <xref linkend="section-nego-transform"/>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Dynamic negotiation. An element can output many formats.
+          See <xref linkend="section-nego-dynamic"/>.
+        </para>
+      </listitem>
+    </itemizedlist>
 
-    <sect2 id="section-nego-downstream-embed"
-        xreflabel="Negotiating caps embedded in input caps">
-      <title>Negotiating caps embedded in input caps</title>
+    <sect2 id="section-nego-fixed">
+      <title>Fixed negotiation</title>
       <para>
-        Many elements, particularly effects and converters, will be able
-        to parse the format of the stream from their input caps, and decide
-        the output format right at that time already. For those elements, all
-        (downstream) caps negotiation can be done from the 
-        <function>_event ()</function> function when a GST_EVENT_CAPS is
-        received on the sinkpad. This CAPS event is received whenever the
-        format changes or when no format was negotiated yet. It will always
-        be called before you receive the buffer in the format specified in
-        the CAPS event.
+        In this case, the source pad can only produce a fixed format. Usually
+        this format is encoded inside the media. No downstream element can
+        ask for a different format, the only way that the source pad will
+        renegotiate is when the element decides to change the caps itself.
       </para>
       <para>
-        In the <function>_event ()</function>-function, the element can
-        forward the CAPS event to the next element and, if that pad accepts the
-        format too, the element can parse the relevant parameters from the
-        caps and configure itself internally. The caps passed to this function
-        is <emphasis>always</emphasis> a subset of the template caps, so
-        there's no need for extensive safety checking. The following example
-        should give a clear indication of how such a function can be
-        implemented:
+        Elements that could implement fixed caps (on their source pads) are,
+        in general, all elements that are not renegotiable. Examples include:
       </para>
-      <programlisting><!-- example-begin forwardcaps.c a --><!--
-#include "init.func"
-static GstCaps *
-gst_my_filter_getcaps (GstPad * pad)
+      <itemizedlist>
+        <listitem>
+          <para>
+            A typefinder, since the type found is part of the actual data stream
+            and can thus not be re-negotiated. The typefinder will look at the
+            stream of bytes, figure out the type, send a CAPS event with the
+            caps and then push buffers of the type.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Pretty much all demuxers, since the contained elementary data
+            streams are defined in the file headers, and thus not
+            renegotiable.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Some decoders, where the format is embedded in the data stream
+            and not part of the peercaps <emphasis>and</emphasis> where the
+            decoder itself is not reconfigurable, too.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Some sources that produce a fixed format.
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
+        <function>gst_pad_use_fixed_caps()</function> is used on the source
+        pad with fixed caps. As long as the pad is not negotiated, the default
+        CAPS query will return the caps presented in the padtemplate. As soon
+        as the pad is negotiated, the CAPS query will return the negotiated
+        caps (and nothing else). These are the relevant code snippets for fixed
+        caps source pads.
+      </para>
+      <programlisting>
+<![CDATA[
+[..]
+  pad = gst_pad_new_from_static_template (..);
+  gst_pad_use_fixed_caps (pad);
+[..]
+]]>
+      </programlisting>
+      <para>
+        The fixed caps can then be set on the pad by calling
+        <function>gst_pad_set_caps ()</function>.
+      </para>
+      <programlisting>
+<![CDATA[
+[..]
+    caps = gst_caps_new_simple ("audio/x-raw",
+        "format", G_TYPE_STRING, GST_AUDIO_NE(F32),
+        "rate", G_TYPE_INT, <samplerate>,
+        "channels", G_TYPE_INT, <num-channels>, NULL);
+    if (!gst_pad_set_caps (pad, caps)) {
+      GST_ELEMENT_ERROR (element, CORE, NEGOTIATION, (NULL),
+          ("Some debug information here"));
+      return GST_FLOW_ERROR;
+    }
+[..]
+]]>
+      </programlisting>
+      <para>
+        These types of elements also don't have a relation between the input
+        format and the output format, the input caps simply don't contain the
+        information needed to produce the output caps.
+      </para>
+      <para>
+        All other elements that need to be configured for the format should
+        implement full caps negotiation, which will be explained in the next
+        few sections.
+      </para>
+    </sect2>
+
+    <sect2 id="section-nego-transform">
+      <title>Transform negotiation</title>
+      <para>
+        In this negotiation technique, there is a fixed transform between
+        the element input caps and the output caps. This transformation
+        could be parameterized by element properties but not by the
+        content of the stream (see <xref linkend="section-nego-fixed"/>
+        for that use-case).
+      </para>
+      <para>
+        The caps that the element can accept depend on the (fixed
+        transformation) downstream caps. The caps that the element can
+        produce depend on the (fixed transformation of) the upstream
+        caps.
+      </para>
+      <para>
+        This type of element can usually set caps on its source pad from
+        the <function>_event()</function> function on the sink pad when
+        it received the CAPS event. This means that the caps transform
+        function transforms a fixed caps into another fixed caps.
+        Examples of elements include:
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Videobox. It adds configurable border around a video frame
+            depending on object properties.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Identity elements. All elements that don't change the format
+            of the data, only the content. Video and audio effects are an
+            example. Other examples include elements that inspect the
+            stream.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Some decoders and encoders, where the output format is defined
+            by input format, like mulawdec and mulawenc. These decoders
+            usually have no headers that define the content of the stream.
+            They are usually more like conversion elements.
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
+        Below is an example of a negotiation steps of a typical transform 
+        element. In the sink pad CAPS event handler, we compute the caps
+        for the source pad and set those.
+      </para>
+      <programlisting>
+<![CDATA[
+  [...]
+
+static gboolean
+gst_my_filter_setcaps (GstMyFilter *filter,
+		       GstCaps *caps)
 {
-  return  NULL;
+  GstStructure *structure;
+  int rate, channels;
+  gboolean ret;
+  GstCaps *outcaps;
+
+  structure = gst_caps_get_structure (caps, 0);
+  ret = gst_structure_get_int (structure, "rate", &rate);
+  ret = ret && gst_structure_get_int (structure, "channels", &channels);
+  if (!ret)
+    return FALSE;
+
+  outcaps = gst_caps_new_simple ("audio/x-raw",
+      "format", G_TYPE_STRING, GST_AUDIO_NE(S16),
+      "rate", G_TYPE_INT, samplerate,
+      "channels", G_TYPE_INT, channels, NULL);
+  ret = gst_pad_set_caps (filter->srcpad, outcaps);
+  gst_caps_unref (outcaps);
+
+  return ret;
 }
---><!-- example-end forwardcaps.c a -->
-<!-- example-begin forwardcaps.c b -->
+
 static gboolean
 gst_my_filter_sink_event (GstPad    *pad,
 		          GstObject *parent,
@@ -192,19 +269,9 @@
     case GST_EVENT_CAPS:
     {
       GstCaps *caps;
-      GstStructure *s;
 
-      gst_event_parse_caps (event, &amp;caps);
-
-      /* forward-negotiate */
-      ret = gst_pad_set_caps (filter-&gt;srcpad, caps);
-      if (!ret)
-        return FALSE;
-
-      /* negotiation succeeded, so now configure ourselves */
-      s = gst_caps_get_structure (caps, 0);
-      gst_structure_get_int (s, "rate", &amp;filter-&gt;samplerate);
-      gst_structure_get_int (s, "channels", &amp;filter-&gt;channels);
+      gst_event_parse_caps (event, &caps);
+      ret = gst_my_filter_setcaps (filter, caps);
       break;
     }
     default:
@@ -213,77 +280,122 @@
   }
   return ret;
 }
-<!-- example-end forwardcaps.c b -->
-<!-- example-begin forwardcaps.c c --><!--
-#include "chain.func"
-#include "state.func"
-#include "register.func"
-      --><!-- example-end forwardcaps.c c --></programlisting>
+
+  [...]
+]]>
+      </programlisting>
+    </sect2>
+
+    <sect2 id="section-nego-dynamic">
+      <title>Dynamic negotiation</title>
       <para>
-        There may also be cases where the filter actually is able to
-        <emphasis>change</emphasis> the format of the stream. In those cases,
-        it will negotiate a new format. Obviously, the element should first
-        attempt to configure <quote>pass-through</quote>, which means that
-        it does not change the stream's format. However, if that fails,
-        then it should call <function>gst_pad_get_allowed_caps ()</function>
-        on its sourcepad to get a list of supported formats on the outputs,
-        and pick the first. The return value of that function is guaranteed
-        to be a subset of the template caps or NULL when there is no peer.
+        A last negotiation method is the most complex and powerful dynamic
+        negotiation.
       </para>
       <para>
+        Like with the transform negotiation in 
+        <xref linkend="section-nego-transform"/>, dynamic negotiation will
+        perform a transformation on the downstream/upstream caps. Unlike the
+        transform negotiation, this transform will convert fixed caps to
+        unfixed caps. This means that the sink pad input caps can be converted
+        into unfixed (multiple) formats. The source pad will have to choose a
+        format from all the possibilities. It would usually like to choose a
+        format that requires the least amount of effort to produce but it does
+        not have to be. The selection of the format should also depend on the
+        caps that can be accepted downstream (see a QUERY_CAPS function in
+        <xref linkend="section-nego-getcaps"/>).
+      </para>
+      <para>
+        A typical flow goes like this:
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Caps are received on the sink pad of the element.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            If the element prefers to operate in passthrough mode, check
+            if downstream accepts the caps with the ACCEPT_CAPS query. If it
+            does, we can complete negotiation and we can operate in
+            passthrough mode.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Calculate the possible caps for the source pad.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Query the downstream peer pad for the list of possible
+            caps.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Select from the downstream list the first caps that you can
+            transform to and set this as the output caps. You might have to
+            fixate the caps to some reasonable defaults to construct
+            fixed caps.
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
+        Examples of this type of elements include:
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Converter elements such as videoconvert, audioconvert, audioresample,
+            videoscale, ...
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Source elements such as audiotestsrc, videotestsrc, v4l2src,
+            pulsesrc, ...
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
         Let's look at the example of an element that can convert between
         samplerates, so where input and output samplerate don't have to be
         the same:
       </para>
-      <programlisting><!-- example-begin convertcaps.c a --><!--
-#include "init.func"
-static GstCaps *
-gst_my_filter_getcaps (GstPad * pad)
-{
-  return NULL;
-}
-static GstBuffer *
-gst_my_filter_convert (GstMyFilter *filter, GstBuffer *in)
-{
-  return NULL;
-}
-static gboolean
-gst_my_filter_event (GstPad * pad, GstEvent * event)
-{
-  return gst_pad_event_default (pad, event);
-}
---><!-- example-end convertcaps.c a -->
-<!-- example-begin convertcaps.c b -->
+      <programlisting>
+<![CDATA[
 static gboolean
 gst_my_filter_setcaps (GstMyFilter *filter,
 		       GstCaps *caps)
 {
-  if (gst_pad_set_caps (filter-&gt;sinkpad, caps)) {
-    filter-&gt;passthrough = TRUE;
+  if (gst_pad_set_caps (filter->sinkpad, caps)) {
+    filter->passthrough = TRUE;
   } else {
     GstCaps *othercaps, *newcaps;
     GstStructure *s = gst_caps_get_structure (caps, 0), *others;
 
     /* no passthrough, setup internal conversion */
-    gst_structure_get_int (s, "channels", &amp;filter-&gt;channels);
-    othercaps = gst_pad_get_allowed_caps (filter-&gt;srcpad);
+    gst_structure_get_int (s, "channels", &filter->channels);
+    othercaps = gst_pad_get_allowed_caps (filter->srcpad);
     others = gst_caps_get_structure (othercaps, 0);
     gst_structure_set (others,
-        "channels", G_TYPE_INT, filter-&gt;channels, NULL);
+      "channels", G_TYPE_INT, filter->channels, NULL);
 
     /* now, the samplerate value can optionally have multiple values, so
      * we "fixate" it, which means that one fixed value is chosen */
     newcaps = gst_caps_copy_nth (othercaps, 0);
     gst_caps_unref (othercaps);
-    gst_pad_fixate_caps (filter-&gt;srcpad, newcaps);
-    if (!gst_pad_set_caps (filter-&gt;srcpad, newcaps))
+    gst_pad_fixate_caps (filter->srcpad, newcaps);
+    if (!gst_pad_set_caps (filter->srcpad, newcaps))
       return FALSE;
 
     /* we are now set up, configure internally */
-    filter-&gt;passthrough = FALSE;
-    gst_structure_get_int (s, "rate", &amp;filter-&gt;from_samplerate);
+    filter->passthrough = FALSE;
+    gst_structure_get_int (s, "rate", &filter->from_samplerate);
     others = gst_caps_get_structure (newcaps, 0);
-    gst_structure_get_int (others, "rate", &amp;filter-&gt;to_samplerate);
+    gst_structure_get_int (others, "rate", &filter->to_samplerate);
   }
 
   return TRUE;
@@ -302,7 +414,7 @@
     {
       GstCaps *caps;
 
-      gst_event_parse_caps (event, &amp;caps);
+      gst_event_parse_caps (event, &caps);
       ret = gst_my_filter_setcaps (filter, caps);
       break;
     }
@@ -322,44 +434,17 @@
   GstBuffer *out;
 
   /* push on if in passthrough mode */
-  if (filter-&gt;passthrough)
-    return gst_pad_push (filter-&gt;srcpad, buf);
+  if (filter->passthrough)
+    return gst_pad_push (filter->srcpad, buf);
 
   /* convert, push */
   out = gst_my_filter_convert (filter, buf);
   gst_buffer_unref (buf);
 
-  return gst_pad_push (filter-&gt;srcpad, out);
+  return gst_pad_push (filter->srcpad, out);
 }
-<!-- example-end convertcaps.c b -->
-<!-- example-begin convertcaps.c c --><!--
-#include "state.func"
-#include "register.func"
-      --><!-- example-end convertcaps.c c --></programlisting>
-    </sect2>
-
-    <sect2 id="section-nego-downstream-parse"
-        xreflabel="Parsing and setting caps">
-      <title>Parsing and setting caps</title>
-      <para>
-        Other elements, such as certain types of decoders, will not be able
-        to parse the caps from their input, simply because the input format
-        does not contain the information required to know the output format
-        yet; rather, the data headers need to be parsed, too. In many cases,
-        fixed-caps will be enough, but in some cases, particularly in cases
-        where such decoders are renegotiable, it is also possible to use
-        full caps negotiation.
-      </para>
-      <para>
-        Fortunately, the code required to do so is very similar to the last
-        code example in <xref linkend="section-nego-downstream-embed"/>, with
-        the difference being that the caps is selected in the <function>_chain
-        ()</function>-function rather than in the <function>_event
-        ()</function>-function. The rest, as for getting all allowed caps from
-        the source pad, fixating and such, is all the same. Re-negotiation,
-        which will be handled in the next section, is very different for such
-        elements, though.
-      </para>
+]]>
+      </programlisting>
     </sect2>
   </sect1>
 
@@ -389,19 +474,40 @@
     <itemizedlist>
       <listitem>
         <para>
-          Elements that can be reconfigured on the srcpad should check its
-          NEED_RECONFIGURE flag with
-          <function>gst_pad_check_reconfigure ()</function> and it should
-          start renegotiation when the function returns TRUE.
+          Elements that want to propose a new format upstream need to first
+          check if the new caps are acceptable upstream with an ACCEPT_CAPS
+          query. Then they would send a RECONFIGURE event and be prepared to
+          answer the CAPS query with the new prefered format. It should be
+          noted that when there is no upstream element that can (or wants)
+          to renegotiate, the element needs to deal with the currently
+          configured format.
         </para>
       </listitem>
       <listitem>
         <para>
-          Elements that want to propose a new format upstream need to send
-          a RECONFIGURE event and be prepared to answer the CAPS query with
-          the new prefered format. It should be noted that when there is no
-          upstream element that can (or wants) to renegotiate, the element
-          needs to deal with the currently configured format.
+          Elements that operate in transform negotiation according to
+          <xref linkend="section-nego-transform"/> pass the RECONFIGURE
+          event upstream. Because these elements simply do a fixed transform
+          based on the upstream caps, they need to send the event upstream
+          so that it can select a new format.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Elements that operate in fixed negotiation 
+          (<xref linkend="section-nego-fixed"/>) drop the RECONFIGURE event.
+          These elements can't reconfigure and their output caps don't depend
+          on the upstream caps so the event can be dropped.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Elements that can be reconfigured on the source pad (source pads
+          implementing dynamic negotiation in
+          <xref linkend="section-nego-dynamic"/>) should check its
+          NEED_RECONFIGURE flag with
+          <function>gst_pad_check_reconfigure ()</function> and it should
+          start renegotiation when the function returns TRUE.
         </para>
       </listitem>
     </itemizedlist>
@@ -419,10 +525,8 @@
     </para>
     <para>
     </para>
-    <programlisting><!-- example-begin getcaps.c a --><!--
-#include "init.func"
---><!-- example-end getcaps.c a -->
-<!-- example-begin getcaps.c b -->
+    <programlisting>
+<![CDATA[
 static gboolean
 gst_my_filter_query (GstPad *pad, GstObject * parent, GstQuery * query)
 {
@@ -436,15 +540,15 @@
       GstCaps *temp, *caps, *filter, *tcaps;
       gint i;
 
-      otherpad = (pad == filter-&gt;srcpad) ? filter-&gt;sinkpad :
-                                              filter-&gt;srcpad;
+      otherpad = (pad == filter->srcpad) ? filter->sinkpad :
+                                           filter->srcpad;
       caps = gst_pad_get_allowed_caps (otherpad);
 
-      gst_query_parse_caps (query, &amp;filter);
+      gst_query_parse_caps (query, &filter);
 
       /* We support *any* samplerate, indifferent from the samplerate
        * supported by the linked elements on both sides. */
-      for (i = 0; i &lt; gst_caps_get_size (caps); i++) {
+      for (i = 0; i < gst_caps_get_size (caps); i++) {
         GstStructure *structure = gst_caps_get_structure (caps, i);
 
         gst_structure_remove_field (structure, "rate");
@@ -476,17 +580,17 @@
   }
   return ret;
 }
-<!-- example-end getcaps.c b -->
-<!-- example-begin getcaps.c c --><!--
-static gboolean
-gst_my_filter_setcaps (GstPad * pad, GstCaps * caps)
-{
-  return FALSE;
-}
-#include "chain.func"
-#include "state.func"
-#include "register.func"
-    --><!-- example-end getcaps.c c --></programlisting>
+]]>
+    </programlisting>
+  </sect1>
+
+  <sect1 id="section-nego-pullmode">
+    <title>Pull-mode Caps negotiation</title>
+    <para>
+      WRITEME, the mechanism of pull-mode negotiation is not yet fully
+      understood.
+    </para>
+
     <para>
       Using all the knowledge you've acquired by reading this chapter, you
       should be able to write an element that does correct caps negotiation.
diff --git a/docs/pwg/advanced-qos.xml b/docs/pwg/advanced-qos.xml
new file mode 100644
index 0000000..a6561bc
--- /dev/null
+++ b/docs/pwg/advanced-qos.xml
@@ -0,0 +1,283 @@
+<chapter id="chapter-advanced-qos">
+  <title>Quality Of Service (QoS)</title>
+
+  <para>
+    Quality of Service in &GStreamer; is about measuring and ajusting
+    the real-time performance of a pipeline. The real-time performance is
+    always measured relative to the pipeline clock and typically happens in
+    the sinks when they synchronize buffers against the clock.
+  </para>
+  <para>
+    When buffers arrive late in the sink, i.e. when their running-time is
+    smaller than that of the clock, we say that the pipeline is having a
+    quality of service problem. These are a few possible reasons:
+  </para>
+  <itemizedlist>
+    <listitem>
+      <para>
+        High CPU load, there is not enough CPU power to handle the stream,
+        causing buffers to arrive late in the sink.
+      </para>
+    </listitem>
+    <listitem>
+      <para>
+        Network problems
+      </para>
+    </listitem>
+    <listitem>
+      <para>
+        Other resource problems such as disk load, memory bottlenecks etc
+      </para>
+    </listitem>
+  </itemizedlist>
+  <para>
+    The measurements result in QOS events that aim to adjust the datarate
+    in one or more upstream elements. Two types of adjustments can be
+    made:
+  </para>
+  <itemizedlist>
+    <listitem>
+      <para>
+        Short time "emergency" corrections based on latest observation in
+        the sinks.
+      </para>
+      <para>
+        Long term rate corrections based on trends observed in the sinks.
+      </para>
+    </listitem>
+  </itemizedlist>
+  <para>
+    It is also possible for the application to artificially introduce delay
+    between synchronized buffers, this is called throttling. It can be used
+    to limit or reduce the framerate, for example.
+  </para>
+
+  <sect1 id="section-measuring">
+    <title>Measuring QoS</title>
+    <para>
+      Elements that synchronize buffers on the pipeline clock will usually
+      measure the current QoS. They will also need to keep some statistics
+      in order to generate the QOS event.
+    </para>
+    <para>
+      For each buffer that arrives in the sink, the element needs to calculate
+      how late or how early it was. This is called the jitter. Negative jitter
+      values mean that the buffer was early, positive values mean that the
+      buffer was late. the jitter value gives an indication of how early/late
+      a buffer was.
+    </para>
+    <para>
+      A synchronizing element will also need to calculate how much time
+      elapsed between receiving two consecutive buffers. We call this the
+      processing time because that is the amount of time it takes for the
+      upstream element to produce/process the buffer. We can compare this
+      processing time to the duration of the buffer to have a measurement
+      of how fast upstream can produce data, called the proportion.
+      If, for example, upstream can produce a buffer in 0.5 seconds of 1
+      second long, it is operating at twice the required speed. If, on the
+      other hand, it takes 2 seconds to produce a buffer with 1 seconds worth
+      of data, upstream is producing buffers too slow and we won't be able to
+      keep sycnhronization. Usually, a running average is kept of the
+      proportion.
+    </para>
+    <para>
+      A synchronizing element also needs to measure its own performance in
+      order to figure out if the performace problem is upstream of itself.
+    </para>
+    <para>
+      These measurements are used to construct a QOS event that is sent
+      upstream. Note that a QoS event is sent for each buffer that arrives
+      in the sink.
+    </para>
+  </sect1>
+
+  <sect1 id="section-handling">
+    <title>Handling QoS</title>
+    <para>
+      An element will have to install an event function on its source pads
+      in order to receive QOS events. Usually, the element will need to
+      store the value of the QOS event and use them in the data processing
+      function. The element will need to use a lock to protect these QoS
+      values as shown in the example below. Also make sure to pass the
+      QoS event upstream.
+    </para>
+    <programlisting>
+<![CDATA[
+    [...]
+
+    case GST_EVENT_QOS:
+    {
+      GstQOSType type;
+      gdouble proportion;
+      GstClockTimeDiff diff;
+      GstClockTime timestamp;
+
+      gst_event_parse_qos (event, &type, &proportion, &diff, &timestamp);
+
+      GST_OBJECT_LOCK (decoder);
+      priv->qos_proportion = proportion;
+      priv->qos_timestamp = timestamp;
+      priv->qos_diff = diff;
+      GST_OBJECT_UNLOCK (decoder);
+
+      res = gst_pad_push_event (decoder->sinkpad, event);
+      break;
+    }
+
+    [...]
+]]>
+    </programlisting>
+    <para>
+      With the QoS values, there are two types of corrections that an element
+      can do:
+    </para>
+
+    <sect2 id="section-handling-short">
+      <title>Short term correction</title>
+      <para>
+        The timestamp and the jitter value in the QOS event can be used to
+        perform a short term correction. If the jitter is positive, the
+        previous buffer arrived late and we can be sure that a buffer with
+        a timestamp &lt; timestamp + jitter is also going to be late. We
+        can thus drop all buffers with a timestamp less than timestamp +
+        jitter.
+      </para>
+      <para>
+        If the buffer duration is known, a better estimation for the next
+        likely timestamp as: timestamp + 2 * jitter + duration.
+      </para>
+      <para>
+        A possible algorithm typically looks like this:
+      </para>
+      <programlisting>
+<![CDATA[
+  [...]
+
+  GST_OBJECT_LOCK (dec);
+  qos_proportion = priv->qos_proportion;
+  qos_timestamp = priv->qos_timestamp;
+  qos_diff = priv->qos_diff;
+  GST_OBJECT_UNLOCK (dec);
+
+  /* calculate the earliest valid timestamp */
+  if (G_LIKELY (GST_CLOCK_TIME_IS_VALID (qos_timestamp))) {
+    if (G_UNLIKELY (qos_diff > 0)) {
+      earliest_time = qos_timestamp + 2 * qos_diff + frame_duration;
+    } else {
+      earliest_time = qos_timestamp + qos_diff;
+    }
+  } else {
+    earliest_time = GST_CLOCK_TIME_NONE;
+  }
+
+  /* compare earliest_time to running-time of next buffer */
+  if (earliest_time > timestamp)
+    goto drop_buffer;
+
+  [...]
+]]>
+      </programlisting>
+    </sect2>
+
+    <sect2 id="section-handling-long">
+      <title>Long term correction</title>
+      <para>
+        Long term corrections are a bit more difficult to perform. They
+        rely on the value of the propertion in the QOS event. Elements should
+        reduce the amount of resources they comsume by the proportion 
+        field in the QoS message.
+      </para>
+      <para>
+        Here are some possible strategies to achieve this:
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Permanently dropping frames or reducing the CPU or bandwidth
+            requirements of the element. Some decoders might be able to
+            skip decoding of B frames.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Switch to lower quality processing or reduce the algorithmic
+            complexity. Care should be taken that this doesn't introduce
+            disturbing visual or audible glitches.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Switch to a lower quality source to reduce network bandwidth.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Assign more CPU cycles to critical parts of the pipeline. This
+            could, for example, be done by increasing the thread priority.
+          </para>
+        </listitem>
+      </itemizedlist>
+      <para>
+        In all cases, elements should be prepared to go back to their normal
+        processing rate when the proportion member in the QOS event approaches
+        the ideal proportion of 1.0 again.
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1 id="section-throttle">
+    <title>Throttling</title>
+    <para>
+      Elements synchronizing to the clock should expose a property to configure
+      them in throttle mode. In throttle mode, the time distance between buffers
+      is kept to a configurable throttle interval. This means that effectively
+      the buffer rate is limited to 1 buffer per throttle interval. This can be
+      used to limit the framerate, for example.
+    </para>
+    <para>
+      When an element is configured in throttling mode (this is usually only
+      implemented on sinks) it should produce QoS events upstream with the jitter
+      field set to the throttle interval. This should instruct upstream elements to
+      skip or drop the remaining buffers in the configured throttle interval.
+    </para>
+    <para>
+      The proportion field is set to the desired slowdown needed to get the
+      desired throttle interval. Implementations can use the QoS Throttle type,
+      the proportion and the jitter member to tune their implementations.
+    </para>
+    <para>
+      The default sink base class, has the <quote>throttle-time</quote>
+      property for this feature. You can test this with: 
+      <command>gst-launch-1.0 videotestsrc !
+        xvimagesink throttle-time=500000000</command>
+    </para>
+  </sect1>
+
+  <sect1 id="section-messages">
+    <title>QoS Messages</title>
+    <para>
+      In addition to the QOS events that are sent between elements in the
+      pipeline, there are also QOS messages posted on the pipeline bus to
+      inform the application of QoS decisions. The QOS message contains
+      the timestamps of when something was dropped along with the amount
+      of dropped vs processed items.  Elements must post a QOS
+      message under these conditions:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The element dropped a buffer because of QoS reasons.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          An element changes its processing strategy because of QoS reasons
+          (quality). This could include a decoder that decides to drop every
+          B frame to increase its processing speed or an effect element
+          switching to a lower quality algorithm.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect1>
+  
+</chapter>
diff --git a/docs/pwg/building-boiler.xml b/docs/pwg/building-boiler.xml
index 7cba279..77d78ce 100644
--- a/docs/pwg/building-boiler.xml
+++ b/docs/pwg/building-boiler.xml
@@ -378,6 +378,7 @@
       correct template would look like this:
     </para>
     <programlisting>
+<![CDATA[
 static GstStaticPadTemplate sink_factory =
 GST_STATIC_PAD_TEMPLATE (
   "sink",
@@ -390,6 +391,7 @@
       "rate = (int) [ 8000, 96000 ]"
   )
 );
+]]>
     </programlisting>
     <para>
       Values surrounded by curly brackets (<quote>{</quote> and
@@ -428,7 +430,9 @@
       Also, in this function, any supported element type in the plugin should
       be registered.
     </para>
-    <programlisting><!-- example-begin register.func -->
+    <programlisting>
+<!-- example-begin register.func -->
+<![CDATA[
 static gboolean
 plugin_init (GstPlugin *plugin)
 {
@@ -448,7 +452,9 @@
   "GStreamer",
   "http://gstreamer.net/"
 )
-    <!-- example-end register.func --></programlisting>
+]]>
+<!-- example-end register.func -->
+    </programlisting>
     <para>
       Note that the information returned by the plugin_init() function will be
       cached in a central registry. For this reason, it is important that the
diff --git a/docs/pwg/building-eventfn.xml b/docs/pwg/building-eventfn.xml
index 51836ef..b72e376 100644
--- a/docs/pwg/building-eventfn.xml
+++ b/docs/pwg/building-eventfn.xml
@@ -13,18 +13,11 @@
     Below follows a very simple event function that we install on the sink
     pad of our element.
   </para>
-  <programlisting><!-- example-begin event.c a --><!--
-#include "init.func"
-#include "caps.func"
-static gboolean
-gst_my_filter_event (GstPad * pad, GstObject * parent, GstEvent * event)
-{
-  return gst_pad_event_default (pad, parent, event);
-}
---><!-- example-end event.c a -->
+  <programlisting>
+<![CDATA[
 static gboolean gst_my_filter_sink_event (GstPad    *pad,
                                           GstObject *parent,
-                                          GstBuffer *buf);
+                                          GstEvent  *event);
 
 [..]
 
@@ -34,7 +27,7 @@
 [..]
   /* configure event function on the pad before adding
    * the pad to the element */
-  gst_pad_set_event_function (filter-&gt;sinkpad,
+  gst_pad_set_event_function (filter->sinkpad,
       gst_my_filter_sink_event);
 [..]
 }
@@ -67,6 +60,7 @@
   }
   return ret;
 }
+]]>
   </programlisting>
   <para>
     It is a good idea to call the default event handler
diff --git a/docs/pwg/building-queryfn.xml b/docs/pwg/building-queryfn.xml
new file mode 100644
index 0000000..ad2e943
--- /dev/null
+++ b/docs/pwg/building-queryfn.xml
@@ -0,0 +1,72 @@
+
+<!-- ############ chapter ############# -->
+
+<chapter id="chapter-building-queryfn">
+  <title>The query function</title>
+  <para>
+    Through the query function, your element will receive queries that it
+    has to reply to. These are queries like position, duration but also
+    about the supported formats and scheduling modes your element supports.
+    Queries can travel both upstream and downstream, so you can receive them
+    on sink pads as well as source pads. 
+  </para>
+  <para>
+    Below follows a very simple query function that we install on the source
+    pad of our element.
+  </para>
+  <programlisting>
+<![CDATA[
+static gboolean gst_my_filter_src_query (GstPad    *pad,
+                                         GstObject *parent,
+                                         GstQuery  *query);
+
+[..]
+
+static void
+gst_my_filter_init (GstMyFilter * filter)
+{
+[..]
+  /* configure event function on the pad before adding
+   * the pad to the element */
+  gst_pad_set_event_function (filter->srcpad,
+      gst_my_filter_src_event);
+[..]
+}
+
+static gboolean
+gst_my_filter_src_query (GstPad    *pad,
+		         GstObject *parent,
+		         GstQuery  *query)
+{
+  gboolean ret;
+  GstMyFilter *filter = GST_MY_FILTER (parent);
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+      /* we should report the current position */
+      [...]
+      break;
+    case GST_QUERY_DURATION:
+      /* we should report the duration here */
+      [...]
+      break;
+    case GST_QUERY_CAPS:
+      /* we should report the supported caps here */
+      [...]
+      break;
+    default:
+      /* just call the default handler */
+      ret = gst_pad_query_default (pad, parent, query);
+      break;
+  }
+  return ret;
+}
+]]>
+  </programlisting>
+  <para>
+    It is a good idea to call the default query handler
+    <function>gst_pad_query_default ()</function> for unknown queries.
+    Depending on the query type, the default handler will forward 
+    the query or simply unref it.
+  </para>
+</chapter>
diff --git a/docs/pwg/intro-basics.xml b/docs/pwg/intro-basics.xml
index 4a50e91..e864e5e 100644
--- a/docs/pwg/intro-basics.xml
+++ b/docs/pwg/intro-basics.xml
@@ -220,6 +220,7 @@
         GstAllocator.  Elements can ask a GstBufferPool or GstAllocator
         from the downstream peer element. If downstream is able to provide
         these objects, upstream can use them to allocate buffers.
+        See more in <xref linkend="chapter-allocation"/>.
       </para>
       <para>
         Many sink elements have accelerated methods for copying data
@@ -254,7 +255,8 @@
       for ensuring that the parameters required to fully specify a format match
       up correctly when linking pads between elements. Each link that is
       made between elements has a specified type and optionally a set of
-      properties.
+      properties. See more about caps negotiation in
+      <xref linkend="chapter-negotiation"/>.
     </para>
 
     <!-- ############ sect2 ############# -->
diff --git a/docs/pwg/pwg.xml b/docs/pwg/pwg.xml
index 6d91f26..4f79709 100644
--- a/docs/pwg/pwg.xml
+++ b/docs/pwg/pwg.xml
@@ -18,22 +18,24 @@
 <!ENTITY BUILDING_PADS        SYSTEM "building-pads.xml">
 <!ENTITY BUILDING_CHAINFN     SYSTEM "building-chainfn.xml">
 <!ENTITY BUILDING_EVENTFN     SYSTEM "building-eventfn.xml">
+<!ENTITY BUILDING_QUERYFN     SYSTEM "building-queryfn.xml">
 <!ENTITY BUILDING_STATE       SYSTEM "building-state.xml">
 <!ENTITY BUILDING_PROPS       SYSTEM "building-props.xml">
 <!ENTITY BUILDING_SIGNALS     SYSTEM "building-signals.xml">
 <!ENTITY BUILDING_TESTAPP     SYSTEM "building-testapp.xml">
 
 <!-- Part 3: Advanced Filter Concepts -->
+<!ENTITY ADVANCED_REQUEST     SYSTEM "advanced-request.xml">
+<!ENTITY ADVANCED_SCHEDULING  SYSTEM "advanced-scheduling.xml">
 <!ENTITY ADVANCED_NEGOTIATION SYSTEM "advanced-negotiation.xml">
 <!ENTITY ADVANCED_ALLOCATION  SYSTEM "advanced-allocation.xml">
-<!ENTITY ADVANCED_SCHEDULING  SYSTEM "advanced-scheduling.xml">
 <!ENTITY ADVANCED_TYPES       SYSTEM "advanced-types.xml">
-<!ENTITY ADVANCED_REQUEST     SYSTEM "advanced-request.xml">
+<!ENTITY ADVANCED_EVENTS      SYSTEM "advanced-events.xml">
 <!ENTITY ADVANCED_CLOCK       SYSTEM "advanced-clock.xml">
+<!ENTITY ADVANCED_QOS         SYSTEM "advanced-qos.xml">
 <!ENTITY ADVANCED_DPARAMS     SYSTEM "advanced-dparams.xml">
 <!ENTITY ADVANCED_INTERFACES  SYSTEM "advanced-interfaces.xml">
 <!ENTITY ADVANCED_TAGGING     SYSTEM "advanced-tagging.xml">
-<!ENTITY ADVANCED_EVENTS      SYSTEM "advanced-events.xml">
 
 <!-- Part 4: Creating special element types -->
 <!ENTITY OTHER_BASE           SYSTEM "other-base.xml">
@@ -119,6 +121,7 @@
     &BUILDING_PADS;
     &BUILDING_CHAINFN;
     &BUILDING_EVENTFN;
+    &BUILDING_QUERYFN;
     &BUILDING_STATE;
     &BUILDING_PROPS;
     &BUILDING_SIGNALS;
@@ -140,16 +143,17 @@
       </para>
     </partintro>
 
+    &ADVANCED_REQUEST;
+    &ADVANCED_SCHEDULING;
     &ADVANCED_NEGOTIATION;
     &ADVANCED_ALLOCATION;
-    &ADVANCED_SCHEDULING;
     &ADVANCED_TYPES;
-    &ADVANCED_REQUEST;
+    &ADVANCED_EVENTS;
     &ADVANCED_CLOCK;
+    &ADVANCED_QOS;
     &ADVANCED_DPARAMS;
     &ADVANCED_INTERFACES;
     &ADVANCED_TAGGING;
-    &ADVANCED_EVENTS;
 
     <!-- FIXME: add querying, event handling and conversion -->
 
diff --git a/docs/slides/Makefile.in b/docs/slides/Makefile.in
index c30c7ad..0579672 100644
--- a/docs/slides/Makefile.in
+++ b/docs/slides/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -299,6 +299,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -335,6 +338,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/docs/xsl/Makefile.in b/docs/xsl/Makefile.in
index 8f3a6ce..6a522b6 100644
--- a/docs/xsl/Makefile.in
+++ b/docs/xsl/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -299,6 +299,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -335,6 +338,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/gst/Makefile.in b/gst/Makefile.in
index bd3a622..0c96219 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -86,7 +86,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -496,6 +496,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -532,6 +535,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/gst/gst.c b/gst/gst.c
index 1be9773..c58e101 100644
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -545,8 +545,9 @@
     GST_DEBUG ("already initialized");
     return TRUE;
   }
-
+#if !GLIB_CHECK_VERSION(2, 35, 0)
   g_type_init ();
+#endif
 
 #ifndef GST_DISABLE_GST_DEBUG
   _priv_gst_debug_init ();
diff --git a/gst/gstallocator.c b/gst/gstallocator.c
index df5b04f..a80b9a1 100644
--- a/gst/gstallocator.c
+++ b/gst/gstallocator.c
@@ -106,6 +106,7 @@
   copy = gst_allocator_alloc (mem->allocator, size, &params);
   if (!gst_memory_map (copy, &dinfo, GST_MAP_WRITE)) {
     GST_CAT_WARNING (GST_CAT_MEMORY, "could not write map memory %p", copy);
+    gst_allocator_free (mem->allocator, copy);
     gst_memory_unmap (mem, &sinfo);
     return NULL;
   }
diff --git a/gst/gstbin.c b/gst/gstbin.c
index cc39027..550b7d6 100644
--- a/gst/gstbin.c
+++ b/gst/gstbin.c
@@ -441,7 +441,7 @@
 
   gobject_class->dispose = gst_bin_dispose;
 
-  gst_element_class_set_metadata (gstelement_class, "Generic bin",
+  gst_element_class_set_static_metadata (gstelement_class, "Generic bin",
       "Generic/Bin",
       "Simple container object",
       "Erik Walthinsen <omega@cse.ogi.edu>,"
diff --git a/gst/gstelement.c b/gst/gstelement.c
index c8205df..b4b87f4 100644
--- a/gst/gstelement.c
+++ b/gst/gstelement.c
@@ -130,6 +130,9 @@
 static gboolean gst_element_set_clock_func (GstElement * element,
     GstClock * clock);
 static void gst_element_set_bus_func (GstElement * element, GstBus * bus);
+static gboolean gst_element_post_message_default (GstElement * element,
+    GstMessage * message);
+
 
 static gboolean gst_element_default_send_event (GstElement * element,
     GstEvent * event);
@@ -235,6 +238,7 @@
   klass->query = GST_DEBUG_FUNCPTR (gst_element_default_query);
   klass->send_event = GST_DEBUG_FUNCPTR (gst_element_default_send_event);
   klass->numpadtemplates = 0;
+  klass->post_message = GST_DEBUG_FUNCPTR (gst_element_post_message_default);
 
   klass->elementfactory = NULL;
 }
@@ -1662,22 +1666,8 @@
   return result;
 }
 
-/**
- * gst_element_post_message:
- * @element: a #GstElement posting the message
- * @message: (transfer full): a #GstMessage to post
- *
- * Post a message on the element's #GstBus. This function takes ownership of the
- * message; if you want to access the message after this call, you should add an
- * additional reference before calling.
- *
- * Returns: %TRUE if the message was successfully posted. The function returns
- * %FALSE if the element did not have a bus.
- *
- * MT safe.
- */
-gboolean
-gst_element_post_message (GstElement * element, GstMessage * message)
+static gboolean
+gst_element_post_message_default (GstElement * element, GstMessage * message)
 {
   GstBus *bus;
   gboolean result = FALSE;
@@ -1713,6 +1703,34 @@
 }
 
 /**
+ * gst_element_post_message:
+ * @element: a #GstElement posting the message
+ * @message: (transfer full): a #GstMessage to post
+ *
+ * Post a message on the element's #GstBus. This function takes ownership of the
+ * message; if you want to access the message after this call, you should add an
+ * additional reference before calling.
+ *
+ * Returns: %TRUE if the message was successfully posted. The function returns
+ * %FALSE if the element did not have a bus.
+ *
+ * MT safe.
+ */
+gboolean
+gst_element_post_message (GstElement * element, GstMessage * message)
+{
+  GstElementClass *klass;
+
+  g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+
+  klass = GST_ELEMENT_GET_CLASS (element);
+  if (klass->post_message)
+    return klass->post_message (element, message);
+
+  return FALSE;
+}
+
+/**
  * _gst_element_error_printf:
  * @format: the printf-like format to use, or %NULL
  *
diff --git a/gst/gstelement.h b/gst/gstelement.h
index 725dc34..df71720 100644
--- a/gst/gstelement.h
+++ b/gst/gstelement.h
@@ -591,6 +591,8 @@
  * @send_event: send a #GstEvent to the element
  * @query: perform a #GstQuery on the element
  * @state_changed: called immediately after a new state was set.
+ * @post_message: called when a message is posted on the element. Chain up to
+ *                the parent class' handler to have it posted on the bus.
  *
  * GStreamer element class. Override the vmethods to implement the element
  * functionality.
@@ -645,8 +647,10 @@
 
   gboolean              (*query)                (GstElement *element, GstQuery *query);
 
+  gboolean              (*post_message)         (GstElement *element, GstMessage *message);
+
   /*< private >*/
-  gpointer _gst_reserved[GST_PADDING_LARGE];
+  gpointer _gst_reserved[GST_PADDING_LARGE-1];
 };
 
 /* element class pad templates */
diff --git a/gst/gstevent.c b/gst/gstevent.c
index 188325d..87d4acb 100644
--- a/gst/gstevent.c
+++ b/gst/gstevent.c
@@ -568,7 +568,6 @@
   GstEvent *event;
 
   g_return_val_if_fail (GST_CLOCK_TIME_IS_VALID (timestamp), NULL);
-  g_return_val_if_fail (GST_CLOCK_TIME_IS_VALID (duration), NULL);
 
   GST_CAT_TRACE (GST_CAT_EVENT, "creating gap %" GST_TIME_FORMAT " - "
       "%" GST_TIME_FORMAT " (duration: %" GST_TIME_FORMAT ")",
diff --git a/gst/gstinfo.c b/gst/gstinfo.c
index eadb5e0..5929d10 100644
--- a/gst/gstinfo.c
+++ b/gst/gstinfo.c
@@ -129,6 +129,8 @@
 
 #endif /* !GST_DISABLE_GST_DEBUG */
 
+extern gboolean gst_is_initialized (void);
+
 /* we want these symbols exported even if debug is disabled, to maintain
  * ABI compatibility. Unless GST_REMOVE_DISABLED is defined. */
 #if !defined(GST_DISABLE_GST_DEBUG) || !defined(GST_REMOVE_DISABLED)
@@ -1104,8 +1106,9 @@
   __log_functions = g_slist_prepend (list, entry);
   g_mutex_unlock (&__log_func_mutex);
 
-  GST_DEBUG ("prepended log function %p (user data %p) to log functions",
-      func, user_data);
+  if (gst_is_initialized ())
+    GST_DEBUG ("prepended log function %p (user data %p) to log functions",
+        func, user_data);
 }
 
 static gint
@@ -1180,8 +1183,9 @@
   removals =
       gst_debug_remove_with_compare_func
       (gst_debug_compare_log_function_by_func, (gpointer) func);
-  GST_DEBUG ("removed log function %p %d times from log function list", func,
-      removals);
+  if (gst_is_initialized ())
+    GST_DEBUG ("removed log function %p %d times from log function list", func,
+        removals);
 
   return removals;
 }
@@ -1202,9 +1206,11 @@
   removals =
       gst_debug_remove_with_compare_func
       (gst_debug_compare_log_function_by_data, data);
-  GST_DEBUG
-      ("removed %d log functions with user data %p from log function list",
-      removals, data);
+
+  if (gst_is_initialized ())
+    GST_DEBUG
+        ("removed %d log functions with user data %p from log function list",
+        removals, data);
 
   return removals;
 }
@@ -1311,8 +1317,9 @@
 
     walk = g_slist_next (walk);
     if (g_pattern_match_string (entry->pat, cat->name)) {
-      GST_LOG ("category %s matches pattern %p - gets set to level %d",
-          cat->name, entry->pat, entry->level);
+      if (gst_is_initialized ())
+        GST_LOG ("category %s matches pattern %p - gets set to level %d",
+            cat->name, entry->pat, entry->level);
       gst_debug_category_set_threshold (cat, entry->level);
       goto exit;
     }
@@ -1338,8 +1345,9 @@
   LevelNameEntry *entry = (LevelNameEntry *) user_data;
 
   if (g_pattern_match_string (entry->pat, cat->name)) {
-    GST_LOG ("category %s matches pattern %p - gets set to level %d",
-        cat->name, entry->pat, entry->level);
+    if (gst_is_initialized ())
+      GST_LOG ("category %s matches pattern %p - gets set to level %d",
+          cat->name, entry->pat, entry->level);
     gst_debug_category_set_threshold (cat, entry->level);
   }
 }
diff --git a/gst/gstpad.c b/gst/gstpad.c
index 92891fa..e609fe2 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -3579,7 +3579,7 @@
   }
 no_peer:
   {
-    GST_WARNING_OBJECT (pad, "pad has no peer");
+    GST_INFO_OBJECT (pad, "pad has no peer");
     GST_OBJECT_UNLOCK (pad);
     return FALSE;
   }
diff --git a/gst/gstpad.h b/gst/gstpad.h
index 676cd69..0378b5a 100644
--- a/gst/gstpad.h
+++ b/gst/gstpad.h
@@ -154,7 +154,6 @@
  * Note that the custom return values should not be exposed outside of the
  * element scope.
  */
-/* FIXME 0.11: remove custom flow returns */
 typedef enum {
   /* custom success starts here */
   GST_FLOW_CUSTOM_SUCCESS_2 = 102,
@@ -563,6 +562,8 @@
  * blocking type.
  *
  * The callback is allowed to modify the data pointer in @info.
+ *
+ * Returns: a #GstPadProbeReturn
  */
 typedef GstPadProbeReturn   (*GstPadProbeCallback)   (GstPad *pad, GstPadProbeInfo *info,
                                                       gpointer user_data);
diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c
index c15f003..f92b5c3 100644
--- a/gst/gstpipeline.c
+++ b/gst/gstpipeline.c
@@ -182,7 +182,7 @@
 
   gobject_class->dispose = gst_pipeline_dispose;
 
-  gst_element_class_set_metadata (gstelement_class, "Pipeline object",
+  gst_element_class_set_static_metadata (gstelement_class, "Pipeline object",
       "Generic/Bin",
       "Complete pipeline object",
       "Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com>");
diff --git a/gst/gstpoll.c b/gst/gstpoll.c
index 5a0a886..d790b31 100644
--- a/gst/gstpoll.c
+++ b/gst/gstpoll.c
@@ -271,7 +271,7 @@
 #if !defined(HAVE_PPOLL) && defined(HAVE_POLL)
 /* check if all file descriptors will fit in an fd_set */
 static gboolean
-selectable_fds (const GstPoll * set)
+selectable_fds (GstPoll * set)
 {
   guint i;
 
@@ -311,7 +311,7 @@
 #endif
 
 static GstPollMode
-choose_mode (const GstPoll * set, GstClockTime timeout)
+choose_mode (GstPoll * set, GstClockTime timeout)
 {
   GstPollMode mode;
 
diff --git a/gst/gstpreset.c b/gst/gstpreset.c
index 4a97276..68a657c 100644
--- a/gst/gstpreset.c
+++ b/gst/gstpreset.c
@@ -390,7 +390,6 @@
         if (presets)
           g_key_file_free (presets);
         presets = in_user;
-        version = version_user;
       }
     }
 
diff --git a/gst/gstquery.c b/gst/gstquery.c
index 008cf55..25a4f38 100644
--- a/gst/gstquery.c
+++ b/gst/gstquery.c
@@ -1109,7 +1109,7 @@
  * @mode: a buffering mode
  * @avg_in: the average input rate
  * @avg_out: the average output rate
- * @buffering_left: amount of buffering time left
+ * @buffering_left: amount of buffering time left in milliseconds
  *
  * Configures the buffering stats values in @query.
  */
@@ -1136,7 +1136,8 @@
  * @mode: (out) (allow-none): a buffering mode, or NULL
  * @avg_in: (out) (allow-none): the average input rate, or NULL
  * @avg_out: (out) (allow-none): the average output rat, or NULLe
- * @buffering_left: (out) (allow-none): amount of buffering time left, or NULL
+ * @buffering_left: (out) (allow-none): amount of buffering time left in
+ *     milliseconds, or NULL
  *
  * Extracts the buffering stats values from @query.
  */
diff --git a/gst/gstsample.c b/gst/gstsample.c
index 93cb0b0..adfe6ba 100644
--- a/gst/gstsample.c
+++ b/gst/gstsample.c
@@ -84,7 +84,7 @@
  * gst_sample_new:
  * @buffer: (transfer none) (allow-none): a #GstBuffer, or NULL
  * @caps: (transfer none) (allow-none): a #GstCaps, or NULL
- * @segment: transfer none) (allow-none): a #GstSegment, or NULL
+ * @segment: (transfer none) (allow-none): a #GstSegment, or NULL
  * @info: (transfer full) (allow-none): a #GstStructure, or NULL
  *
  * Create a new #GstSample with the provided details.
diff --git a/gst/parse/Makefile.in b/gst/parse/Makefile.in
index b578d9e..78c7949 100644
--- a/gst/parse/Makefile.in
+++ b/gst/parse/Makefile.in
@@ -83,7 +83,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -339,6 +339,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -375,6 +378,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/gst/parse/grammar.tab.h b/gst/parse/grammar.tab.h
index 164198f..51454ce 100644
--- a/gst/parse/grammar.tab.h
+++ b/gst/parse/grammar.tab.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 2.6.2.  */
 
 /* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,6 +30,15 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+#ifndef PRIV_GST_PARSE_YY_GRAMMAR_TAB_H
+# define PRIV_GST_PARSE_YY_GRAMMAR_TAB_H
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int priv_gst_parse_yydebug;
+#endif
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -48,12 +57,10 @@
 #endif
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 2068 of yacc.c  */
+/* Line 2049 of yacc.c  */
 #line 632 "./grammar.y"
 
     gchar *s;
@@ -64,9 +71,8 @@
     graph_t *g;
 
 
-
-/* Line 2068 of yacc.c  */
-#line 70 "grammar.tab.h"
+/* Line 2049 of yacc.c  */
+#line 76 "grammar.tab.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -74,5 +80,18 @@
 #endif
 
 
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int priv_gst_parse_yyparse (void *YYPARSE_PARAM);
+#else
+int priv_gst_parse_yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int priv_gst_parse_yyparse (void *scanner, graph_t *graph);
+#else
+int priv_gst_parse_yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
-
+#endif /* !PRIV_GST_PARSE_YY_GRAMMAR_TAB_H  */
diff --git a/gstreamer.doap b/gstreamer.doap
index ed20425..3245b60 100644
--- a/gstreamer.doap
+++ b/gstreamer.doap
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.0.2</revision>
+   <branch>1.0</branch>
+   <name></name>
+   <created>2012-10-24</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.0.2.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.0.1</revision>
    <branch>1.0</branch>
    <name></name>
diff --git a/gstreamer.spec b/gstreamer.spec
index 33569de..12d3259 100644
--- a/gstreamer.spec
+++ b/gstreamer.spec
@@ -4,7 +4,7 @@
 %define 	_glib2		2.32.0
 
 Name: 		%{gstreamer}
-Version: 	1.0.1
+Version: 	1.0.2
 Release: 	1
 Summary: 	GStreamer streaming media framework runtime
 
diff --git a/libs/Makefile.in b/libs/Makefile.in
index 21cff6c..96d1071 100644
--- a/libs/Makefile.in
+++ b/libs/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -339,6 +339,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -375,6 +378,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/libs/gst/Makefile.in b/libs/gst/Makefile.in
index 67d6d43..5aec43c 100644
--- a/libs/gst/Makefile.in
+++ b/libs/gst/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -338,6 +338,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -374,6 +377,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/libs/gst/base/Makefile.in b/libs/gst/base/Makefile.in
index 1183bb6..55a7370 100644
--- a/libs/gst/base/Makefile.in
+++ b/libs/gst/base/Makefile.in
@@ -85,7 +85,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -382,6 +382,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -418,6 +421,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
index e1a705b..2053221 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -3343,7 +3343,7 @@
 /**
  * gst_base_parse_set_pts_interpolation:
  * @parse: a #GstBaseParse
- * @passthrough: %TRUE if parser should interpolate PTS timestamps
+ * @pts_interpolate: %TRUE if parser should interpolate PTS timestamps
  *
  * By default, the base class will guess PTS timestamps using a simple
  * interpolation (previous timestamp + duration), which is incorrect for
diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c
index 556f05d..f8f3302 100644
--- a/libs/gst/base/gstbasesrc.c
+++ b/libs/gst/base/gstbasesrc.c
@@ -183,6 +183,12 @@
 #define GST_LIVE_SIGNAL(elem)                 g_cond_signal (GST_LIVE_GET_COND (elem));
 #define GST_LIVE_BROADCAST(elem)              g_cond_broadcast (GST_LIVE_GET_COND (elem));
 
+
+#define GST_ASYNC_GET_COND(elem)              (&GST_BASE_SRC_CAST(elem)->priv->async_cond)
+#define GST_ASYNC_WAIT(elem)                  g_cond_wait (GST_ASYNC_GET_COND (elem), GST_OBJECT_GET_LOCK (elem))
+#define GST_ASYNC_SIGNAL(elem)                g_cond_signal (GST_ASYNC_GET_COND (elem));
+
+
 /* BaseSrc signals and args */
 enum
 {
@@ -251,6 +257,8 @@
   GstBufferPool *pool;
   GstAllocator *allocator;
   GstAllocationParams params;
+
+  GCond async_cond;
 };
 
 static GstElementClass *parent_class = NULL;
@@ -444,6 +452,7 @@
   basesrc->priv->do_timestamp = DEFAULT_DO_TIMESTAMP;
   g_atomic_int_set (&basesrc->priv->have_events, FALSE);
 
+  g_cond_init (&basesrc->priv->async_cond);
   basesrc->priv->start_result = GST_FLOW_FLUSHING;
   GST_OBJECT_FLAG_UNSET (basesrc, GST_BASE_SRC_FLAG_STARTED);
   GST_OBJECT_FLAG_UNSET (basesrc, GST_BASE_SRC_FLAG_STARTING);
@@ -462,6 +471,7 @@
 
   g_mutex_clear (&basesrc->live_lock);
   g_cond_clear (&basesrc->live_cond);
+  g_cond_clear (&basesrc->priv->async_cond);
 
   event_p = &basesrc->pending_seek;
   gst_event_replace (event_p, NULL);
@@ -3091,6 +3101,8 @@
   gboolean result;
 
   GST_LIVE_LOCK (basesrc);
+
+  GST_OBJECT_LOCK (basesrc);
   if (GST_BASE_SRC_IS_STARTING (basesrc))
     goto was_starting;
   if (GST_BASE_SRC_IS_STARTED (basesrc))
@@ -3098,12 +3110,12 @@
 
   basesrc->priv->start_result = GST_FLOW_FLUSHING;
   GST_OBJECT_FLAG_SET (basesrc, GST_BASE_SRC_FLAG_STARTING);
+  gst_segment_init (&basesrc->segment, basesrc->segment.format);
+  GST_OBJECT_UNLOCK (basesrc);
+
   basesrc->num_buffers_left = basesrc->num_buffers;
   basesrc->running = FALSE;
   basesrc->priv->segment_pending = FALSE;
-  GST_OBJECT_LOCK (basesrc);
-  gst_segment_init (&basesrc->segment, basesrc->segment.format);
-  GST_OBJECT_UNLOCK (basesrc);
   GST_LIVE_UNLOCK (basesrc);
 
   bclass = GST_BASE_SRC_GET_CLASS (basesrc);
@@ -3115,8 +3127,12 @@
   if (!result)
     goto could_not_start;
 
-  if (!gst_base_src_is_async (basesrc))
+  if (!gst_base_src_is_async (basesrc)) {
     gst_base_src_start_complete (basesrc, GST_FLOW_OK);
+    /* not really waiting here, we call this to get the result
+     * from the start_complete call */
+    result = gst_base_src_start_wait (basesrc) == GST_FLOW_OK;
+  }
 
   return result;
 
@@ -3124,12 +3140,14 @@
 was_starting:
   {
     GST_DEBUG_OBJECT (basesrc, "was starting");
+    GST_OBJECT_UNLOCK (basesrc);
     GST_LIVE_UNLOCK (basesrc);
     return TRUE;
   }
 was_started:
   {
     GST_DEBUG_OBJECT (basesrc, "was started");
+    GST_OBJECT_UNLOCK (basesrc);
     GST_LIVE_UNLOCK (basesrc);
     return TRUE;
   }
@@ -3232,12 +3250,12 @@
       goto no_get_range;
   }
 
-  GST_LIVE_LOCK (basesrc);
+  GST_OBJECT_LOCK (basesrc);
   GST_OBJECT_FLAG_SET (basesrc, GST_BASE_SRC_FLAG_STARTED);
   GST_OBJECT_FLAG_UNSET (basesrc, GST_BASE_SRC_FLAG_STARTING);
   basesrc->priv->start_result = ret;
-  GST_LIVE_SIGNAL (basesrc);
-  GST_LIVE_UNLOCK (basesrc);
+  GST_ASYNC_SIGNAL (basesrc);
+  GST_OBJECT_UNLOCK (basesrc);
 
   GST_PAD_STREAM_UNLOCK (basesrc->srcpad);
 
@@ -3263,11 +3281,11 @@
   }
 error:
   {
-    GST_LIVE_LOCK (basesrc);
+    GST_OBJECT_LOCK (basesrc);
     basesrc->priv->start_result = ret;
     GST_OBJECT_FLAG_UNSET (basesrc, GST_BASE_SRC_FLAG_STARTING);
-    GST_LIVE_SIGNAL (basesrc);
-    GST_LIVE_UNLOCK (basesrc);
+    GST_ASYNC_SIGNAL (basesrc);
+    GST_OBJECT_UNLOCK (basesrc);
     return;
   }
 }
@@ -3285,27 +3303,16 @@
 {
   GstFlowReturn result;
 
-  GST_LIVE_LOCK (basesrc);
-  if (G_UNLIKELY (basesrc->priv->flushing))
-    goto flushing;
-
+  GST_OBJECT_LOCK (basesrc);
   while (GST_BASE_SRC_IS_STARTING (basesrc)) {
-    GST_LIVE_WAIT (basesrc);
-    if (G_UNLIKELY (basesrc->priv->flushing))
-      goto flushing;
+    GST_ASYNC_WAIT (basesrc);
   }
   result = basesrc->priv->start_result;
-  GST_LIVE_UNLOCK (basesrc);
+  GST_OBJECT_UNLOCK (basesrc);
+
+  GST_DEBUG_OBJECT (basesrc, "got %s", gst_flow_get_name (result));
 
   return result;
-
-  /* ERRORS */
-flushing:
-  {
-    GST_DEBUG_OBJECT (basesrc, "we are flushing");
-    GST_LIVE_UNLOCK (basesrc);
-    return GST_FLOW_FLUSHING;
-  }
 }
 
 static gboolean
@@ -3321,15 +3328,15 @@
   /* stop the task */
   gst_pad_stop_task (basesrc->srcpad);
 
-  GST_LIVE_LOCK (basesrc);
+  GST_OBJECT_LOCK (basesrc);
   if (!GST_BASE_SRC_IS_STARTED (basesrc) && !GST_BASE_SRC_IS_STARTING (basesrc))
     goto was_stopped;
 
   GST_OBJECT_FLAG_UNSET (basesrc, GST_BASE_SRC_FLAG_STARTING);
   GST_OBJECT_FLAG_UNSET (basesrc, GST_BASE_SRC_FLAG_STARTED);
   basesrc->priv->start_result = GST_FLOW_FLUSHING;
-  GST_LIVE_SIGNAL (basesrc);
-  GST_LIVE_UNLOCK (basesrc);
+  GST_ASYNC_SIGNAL (basesrc);
+  GST_OBJECT_UNLOCK (basesrc);
 
   bclass = GST_BASE_SRC_GET_CLASS (basesrc);
   if (bclass->stop)
@@ -3342,7 +3349,7 @@
 was_stopped:
   {
     GST_DEBUG_OBJECT (basesrc, "was started");
-    GST_LIVE_UNLOCK (basesrc);
+    GST_OBJECT_UNLOCK (basesrc);
     return TRUE;
   }
 }
diff --git a/libs/gst/base/gstbasesrc.h b/libs/gst/base/gstbasesrc.h
index b0ae337..466f0fc 100644
--- a/libs/gst/base/gstbasesrc.h
+++ b/libs/gst/base/gstbasesrc.h
@@ -255,7 +255,7 @@
 void            gst_base_src_set_do_timestamp (GstBaseSrc *src, gboolean timestamp);
 gboolean        gst_base_src_get_do_timestamp (GstBaseSrc *src);
 
-gboolean        gst_base_src_new_seamless_segment (GstBaseSrc *src, gint64 start, gint64 stop, gint64 position);
+gboolean        gst_base_src_new_seamless_segment (GstBaseSrc *src, gint64 start, gint64 stop, gint64 time);
 
 gboolean        gst_base_src_set_caps         (GstBaseSrc *src, GstCaps *caps);
 
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c
index dfd46b8..9c9b003 100644
--- a/libs/gst/base/gstcollectpads.c
+++ b/libs/gst/base/gstcollectpads.c
@@ -524,7 +524,7 @@
  * @user_data: user data to pass to @clip_func
  *
  * Install a clipping function that is called right after a buffer is received
- * on a pad managed by @pads. See #GstCollectPad2ClipFunction for more info.
+ * on a pad managed by @pads. See #GstCollectPadsClipFunction for more info.
  */
 void
 gst_collect_pads_set_clip_function (GstCollectPads * pads,
@@ -1353,7 +1353,7 @@
     }
 
     /* check if the waiting state should be changed */
-    comp_time = MAX (data->segment.start, data->segment.position);
+    comp_time = data->segment.position;
     cmp_res = pads->priv->compare_func (pads, data, comp_time,
         pads->priv->earliest_data, pads->priv->earliest_time,
         pads->priv->compare_user_data);
@@ -1558,6 +1558,30 @@
 
 }
 
+static GstClockTime
+gst_collect_pads_clip_time (GstCollectPads * pads, GstCollectData * data,
+    GstClockTime time)
+{
+  GstClockTime otime = time;
+  GstBuffer *in, *out = NULL;
+
+  if (pads->priv->clip_func) {
+    in = gst_buffer_new ();
+    GST_BUFFER_TIMESTAMP (in) = time;
+    pads->priv->clip_func (pads, data, in, &out, pads->priv->clip_user_data);
+    if (out) {
+      otime = GST_BUFFER_TIMESTAMP (out);
+      gst_buffer_unref (out);
+    } else {
+      /* FIXME should distinguish between ahead or after segment,
+       * let's assume after segment and use some large time ... */
+      otime = G_MAXINT64 / 2;
+    }
+  }
+
+  return otime;
+}
+
 /**
  * gst_collect_pads_event_default:
  * @pads: the collectpads to use
@@ -1668,9 +1692,6 @@
 
       GST_DEBUG_OBJECT (data->pad, "got segment %" GST_SEGMENT_FORMAT, &seg);
 
-      /* sanitize to make sure; reasonably so at start */
-      seg.position = seg.start;
-
       /* default collection can not handle other segment formats than time */
       if (buffer_func && seg.format != GST_FORMAT_TIME) {
         GST_WARNING_OBJECT (pads, "GstCollectPads default collecting "
@@ -1678,14 +1699,20 @@
         goto newsegment_done;
       }
 
+      /* need to update segment first */
       data->segment = seg;
       GST_COLLECT_PADS_STATE_SET (data, GST_COLLECT_PADS_STATE_NEW_SEGMENT);
 
+      /* now we can use for e.g. running time */
+      seg.position = gst_collect_pads_clip_time (pads, data, seg.start);
+      /* update again */
+      data->segment = seg;
+
       /* default muxing functionality */
       if (!buffer_func)
         goto newsegment_done;
 
-      gst_collect_pads_handle_position_update (pads, data, seg.start);
+      gst_collect_pads_handle_position_update (pads, data, seg.position);
 
     newsegment_done:
       GST_COLLECT_PADS_STREAM_UNLOCK (pads);
@@ -1704,9 +1731,10 @@
         start += duration;
       /* we do not expect another buffer until after gap,
        * so that is our position now */
-      data->segment.position = start;
+      data->segment.position = gst_collect_pads_clip_time (pads, data, start);
 
-      gst_collect_pads_handle_position_update (pads, data, start);
+      gst_collect_pads_handle_position_update (pads, data,
+          data->segment.position);
 
       GST_COLLECT_PADS_STREAM_UNLOCK (pads);
       goto eat;
diff --git a/libs/gst/base/gstcollectpads.h b/libs/gst/base/gstcollectpads.h
index ee1c038..c33ca4f 100644
--- a/libs/gst/base/gstcollectpads.h
+++ b/libs/gst/base/gstcollectpads.h
@@ -147,7 +147,7 @@
  * GstCollectPadsBufferFunction:
  * @pads: the #GstCollectPads that trigered the callback
  * @data: the #GstCollectData of pad that has received the buffer
- * @buffer: the #GstBuffer
+ * @buffer: (transfer full): the #GstBuffer
  * @user_data: user data passed to gst_collect_pads_set_buffer_function()
  *
  * A function that will be called when a (considered oldest) buffer can be muxed.
@@ -217,7 +217,7 @@
  * GstCollectPadsClipFunction:
  * @pads: a #GstCollectPads
  * @data: a #GstCollectData
- * @inbuffer: the input #GstBuffer
+ * @inbuffer: (transfer full): the input #GstBuffer
  * @outbuffer: the output #GstBuffer
  * @user_data: user data
  *
diff --git a/libs/gst/check/Makefile.in b/libs/gst/check/Makefile.in
index 3fa368b..96f2e16 100644
--- a/libs/gst/check/Makefile.in
+++ b/libs/gst/check/Makefile.in
@@ -85,7 +85,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -413,6 +413,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -449,6 +452,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/libs/gst/check/libcheck/Makefile.am b/libs/gst/check/libcheck/Makefile.am
index e7465e3..e814fc8 100644
--- a/libs/gst/check/libcheck/Makefile.am
+++ b/libs/gst/check/libcheck/Makefile.am
@@ -29,9 +29,9 @@
 libcheckinternal_la_SOURCES	= $(CFILES) $(HFILES)
 
 # define HAVE_PTHREAD here as well so we keep changes to the code to a minimum
-if HAVE_PTHREAD_H
-libcheckinternal_la_CFLAGS	= -D_GNU_SOURCE -DHAVE_PTHREAD
-libcheckinternal_la_LIBADD	= -lpthread
+if HAVE_PTHREAD
+libcheckinternal_la_CFLAGS	= $(PTHREAD_CFLAGS) -D_GNU_SOURCE -DHAVE_PTHREAD
+libcheckinternal_la_LIBADD	= $(PTHREAD_LIBS)
 else
 libcheckinternal_la_CFLAGS	= -D_GNU_SOURCE
 libcheckinternal_la_LIBADD	=
diff --git a/libs/gst/check/libcheck/Makefile.in b/libs/gst/check/libcheck/Makefile.in
index 910f594..874eaa0 100644
--- a/libs/gst/check/libcheck/Makefile.in
+++ b/libs/gst/check/libcheck/Makefile.in
@@ -83,7 +83,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -99,7 +99,9 @@
 CONFIG_CLEAN_FILES = check.h
 CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
-libcheckinternal_la_DEPENDENCIES =
+am__DEPENDENCIES_1 =
+@HAVE_PTHREAD_TRUE@libcheckinternal_la_DEPENDENCIES =  \
+@HAVE_PTHREAD_TRUE@	$(am__DEPENDENCIES_1)
 am__objects_1 = libcheckinternal_la-check.lo \
 	libcheckinternal_la-check_error.lo \
 	libcheckinternal_la-check_list.lo \
@@ -346,6 +348,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -382,6 +387,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -457,12 +463,12 @@
 
 noinst_HEADERS = $(HFILES)
 libcheckinternal_la_SOURCES = $(CFILES) $(HFILES)
-@HAVE_PTHREAD_H_FALSE@libcheckinternal_la_CFLAGS = -D_GNU_SOURCE
+@HAVE_PTHREAD_FALSE@libcheckinternal_la_CFLAGS = -D_GNU_SOURCE
 
 # define HAVE_PTHREAD here as well so we keep changes to the code to a minimum
-@HAVE_PTHREAD_H_TRUE@libcheckinternal_la_CFLAGS = -D_GNU_SOURCE -DHAVE_PTHREAD
-@HAVE_PTHREAD_H_FALSE@libcheckinternal_la_LIBADD = 
-@HAVE_PTHREAD_H_TRUE@libcheckinternal_la_LIBADD = -lpthread
+@HAVE_PTHREAD_TRUE@libcheckinternal_la_CFLAGS = $(PTHREAD_CFLAGS) -D_GNU_SOURCE -DHAVE_PTHREAD
+@HAVE_PTHREAD_FALSE@libcheckinternal_la_LIBADD = 
+@HAVE_PTHREAD_TRUE@libcheckinternal_la_LIBADD = $(PTHREAD_LIBS)
 all: all-am
 
 .SUFFIXES:
diff --git a/libs/gst/controller/Makefile.in b/libs/gst/controller/Makefile.in
index 54a19ff..5402961 100644
--- a/libs/gst/controller/Makefile.in
+++ b/libs/gst/controller/Makefile.in
@@ -85,7 +85,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -378,6 +378,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -414,6 +417,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/libs/gst/helpers/Makefile.in b/libs/gst/helpers/Makefile.in
index d68803b..b50d309 100644
--- a/libs/gst/helpers/Makefile.in
+++ b/libs/gst/helpers/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -337,6 +337,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -373,6 +376,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/libs/gst/net/Makefile.in b/libs/gst/net/Makefile.in
index 7687c2e..1da3866 100644
--- a/libs/gst/net/Makefile.in
+++ b/libs/gst/net/Makefile.in
@@ -85,7 +85,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -376,6 +376,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -412,6 +415,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/m4/Makefile.in b/m4/Makefile.in
index e83c601..10ca2b3 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -299,6 +299,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -335,6 +338,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
new file mode 100644
index 0000000..d90de34
--- /dev/null
+++ b/m4/ax_pthread.m4
@@ -0,0 +1,309 @@
+# ===========================================================================
+#        http://www.gnu.org/software/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro figures out how to build C programs using POSIX threads. It
+#   sets the PTHREAD_LIBS output variable to the threads library and linker
+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+#   flags that are needed. (The user can also force certain compiler
+#   flags/libs to be tested by setting these environment variables.)
+#
+#   Also sets PTHREAD_CC to any special C compiler that is needed for
+#   multi-threaded programs (defaults to the value of CC otherwise). (This
+#   is necessary on AIX to use the special cc_r compiler alias.)
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also link it with them as well. e.g. you should link with
+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+#   If you are only building threads programs, you may wish to use these
+#   variables in your default LIBS, CFLAGS, and CC:
+#
+#     LIBS="$PTHREAD_LIBS $LIBS"
+#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+#     CC="$PTHREAD_CC"
+#
+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
+#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
+#   PTHREAD_CFLAGS.
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+#   is not found. If ACTION-IF-FOUND is not specified, the default action
+#   will define HAVE_PTHREAD.
+#
+#   Please let the authors know if this macro fails on any platform, or if
+#   you have any other suggestions or comments. This macro was based on work
+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+#   grateful for the helpful feedback of numerous users.
+#
+#   Updated for Autoconf 2.68 by Daniel Richard G.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#   Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 18
+
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PUSH([C])
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case ${host_os} in
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+        darwin*)
+        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+                pthread-config)
+                AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+                if test x"$ax_pthread_config" = xno; then continue; fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }],
+                       [pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */])],
+                [ax_pthread_ok=yes],
+                [])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        AC_MSG_CHECKING([for joinable pthread attribute])
+        attr_name=unknown
+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                           [int attr = $attr; return attr /* ; */])],
+                [attr_name=$attr; break],
+                [])
+        done
+        AC_MSG_RESULT($attr_name)
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+                               [Define to necessary symbol if this constant
+                                uses a non-standard name on your system.])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case ${host_os} in
+            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
+            osf* | hpux*) flag="-D_REENTRANT";;
+            solaris*)
+            if test "$GCC" = "yes"; then
+                flag="-D_REENTRANT"
+            else
+                flag="-mt -D_REENTRANT"
+            fi
+            ;;
+        esac
+        AC_MSG_RESULT(${flag})
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+            ax_cv_PTHREAD_PRIO_INHERIT, [
+                AC_LINK_IFELSE([
+                    AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
+                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
+            AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+        if test x"$GCC" != xyes; then
+          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+        else
+          PTHREAD_CC=$CC
+        fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+        :
+else
+        ax_pthread_ok=no
+        $2
+fi
+AC_LANG_POP
+])dnl AX_PTHREAD
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 88585f5..f92e394 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -91,7 +91,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -343,6 +343,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -379,6 +382,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/plugins/Makefile.in b/plugins/Makefile.in
index b666215..dea363a 100644
--- a/plugins/Makefile.in
+++ b/plugins/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -338,6 +338,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -374,6 +377,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/plugins/elements/Makefile.in b/plugins/elements/Makefile.in
index 3bb168f..f3a15f3 100644
--- a/plugins/elements/Makefile.in
+++ b/plugins/elements/Makefile.in
@@ -83,7 +83,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -384,6 +384,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -420,6 +423,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/po/af.gmo b/po/af.gmo
index 0493a4f..31ea98d 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index c8e924a..e0eb849 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 69eb1b2..4cbd51b 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 769f4a3..8575797 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 74b5e91..b405c98 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
index 721f025..e21b622 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 85ed3bf..8ebcab2 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index e1b0ece..b9c5c2e 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 5753867..495d667 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 710654a..b7308d6 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 83e5ed5..f4ca8d4 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 32dcbec..1481a41 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-12-01 08:17+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 33e089c..4521245 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 4e6cc89..d47e417 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2010-11-06 22:52+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 0a09083..575cd91 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 8f8201a..b1176e1 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-04-27 23:44+0200\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@googlemail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/el.gmo b/po/el.gmo
index a455013..2fbd84c 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 6627a62..b36f28a 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 97bc750..9ee9846 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 3467f8f..16b5d5a 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 125a03b..e3d082b 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 0114bba..edec533 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 2650637..669361b 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 3c8fd52..1259a45 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 f431ebe..0e2f115 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 5579d6a..a266c88 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 c14147e..5679a0a 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 56b1307..670f0c3 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 0528a13..bf57f7f 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index fabafa4..801d72f 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-04-28 09:34+0200\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 cf363d1..62414d4 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 68ff249..2040757 100644
--- a/po/gl.po
+++ b/po/gl.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-09-05 12:49+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 26de4c4..a7afb33 100644
--- a/po/gstreamer-1.0.pot
+++ b/po/gstreamer-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.0.1\n"
+"Project-Id-Version: gstreamer 1.0.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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"
@@ -98,7 +98,7 @@
 msgid "Show GStreamer Options"
 msgstr ""
 
-#: gst/gst.c:931
+#: gst/gst.c:932
 msgid "Unknown option"
 msgstr ""
 
@@ -1048,11 +1048,11 @@
 msgid "empty pipeline not allowed"
 msgstr ""
 
-#: libs/gst/base/gstbasesrc.c:2428
+#: libs/gst/base/gstbasesrc.c:2438
 msgid "Internal clock error."
 msgstr ""
 
-#: libs/gst/base/gstbasesrc.c:2780 libs/gst/base/gstbasesrc.c:2789
+#: libs/gst/base/gstbasesrc.c:2790 libs/gst/base/gstbasesrc.c:2799
 #: libs/gst/base/gstbasesink.c:3767 plugins/elements/gstqueue.c:1188
 #: plugins/elements/gstqueue2.c:2565
 msgid "Internal data flow error."
diff --git a/po/hu.gmo b/po/hu.gmo
index 3d1a9bd..c2b3003 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 7c324dc..9809b56 100644
--- a/po/hu.po
+++ b/po/hu.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2010-11-01 13:39+0100\n"
 "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index 7d67d70..cbc7075 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index df401e4..e4d924a 100644
--- a/po/id.po
+++ b/po/id.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2012-01-28 11:44+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 210dfc5..0cf2261 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 0ca767f..93728d9 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 849267d..4291958 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index ff16663..58c9f8f 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.20.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2008-10-16 19:57+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 ee908a4..5648e40 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index a72f537..2cdaa18 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 6f6b37c..5f12813 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 4d2dfdd..54d15f9 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 f8edad9..1cce4a8 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index dc62507..22476ff 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-04-26 23:10+0200\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 6e7d530..8f1befe 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 074e087..8fc877a 100644
--- a/po/pl.po
+++ b/po/pl.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-04-26 17:54+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 8d24cca..3d52cb1 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 ad3c969..5ef10d8 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -17,7 +17,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.10.31.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-01-08 01:36-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
diff --git a/po/ro.gmo b/po/ro.gmo
index 9c9b705..1286844 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index b8b1571..74abd8c 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 1cee399..e631cba 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 3d511a9..6cdbe2d 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-04-26 20:25+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 de829fb..8e71857 100644
--- a/po/rw.gmo
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
index 9806639..eec9bac 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 ebdb3bb..8816a93 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 2671780..8a34bab 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2010-11-08 16:13+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 0b4a08f..5621888 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 603887a..3b4929b 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2012-03-01 14:05+0100\n"
 "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index 76da38e..015b4e3 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 448c5fc..23eb6c9 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 c5c65d7..0e54450 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 4fffefe..3f7b15c 100644
--- a/po/sr.po
+++ b/po/sr.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-12-05 10:40+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <gnu@prevod.org>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 7cbeb8f..130daf5 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index e0087d4..a744b25 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 53a9529..35be958 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 999e65c..f4ed47a 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 33d594c..2597c72 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index a09a103..f59da01 100644
--- a/po/uk.po
+++ b/po/uk.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2011-04-30 20:26+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index 0be7025..2369279 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index c85036b..fbc612f 100644
--- a/po/vi.po
+++ b/po/vi.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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\n"
 "PO-Revision-Date: 2010-10-03 19:09+1030\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 2faafa5..7ca7f55 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 50144b2..a3105e5 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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 68e4d8d..ee285a2 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 3dd810a..ccce8cc 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: 2012-10-07 12:26+0100\n"
+"POT-Creation-Date: 2012-10-24 13:55+0100\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/Makefile.in b/tests/Makefile.in
index ed1bbb3..d7fc3ca 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -338,6 +338,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -374,6 +377,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in
index b7f3ff1..b8034a1 100644
--- a/tests/benchmarks/Makefile.in
+++ b/tests/benchmarks/Makefile.in
@@ -85,7 +85,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -375,6 +375,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -411,6 +414,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 3f572df..2fcd657 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -104,7 +104,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -969,6 +969,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -1005,6 +1008,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index a10532c..68eb34e 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -86,7 +86,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -344,6 +344,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -380,6 +383,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/adapter/Makefile.in b/tests/examples/adapter/Makefile.in
index 5f39a69..4a43b77 100644
--- a/tests/examples/adapter/Makefile.in
+++ b/tests/examples/adapter/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -335,6 +335,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -371,6 +374,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/controller/Makefile.in b/tests/examples/controller/Makefile.in
index 26737fa..d0629ae 100644
--- a/tests/examples/controller/Makefile.in
+++ b/tests/examples/controller/Makefile.in
@@ -83,7 +83,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -344,6 +344,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -380,6 +383,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/helloworld/Makefile.in b/tests/examples/helloworld/Makefile.in
index 4c5d16c..40db837 100644
--- a/tests/examples/helloworld/Makefile.in
+++ b/tests/examples/helloworld/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -334,6 +334,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -370,6 +373,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/launch/Makefile.in b/tests/examples/launch/Makefile.in
index 2f01e35..dbdff9a 100644
--- a/tests/examples/launch/Makefile.in
+++ b/tests/examples/launch/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -335,6 +335,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -371,6 +374,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/manual/Makefile.am b/tests/examples/manual/Makefile.am
index 6e79e67..30ac1b4 100644
--- a/tests/examples/manual/Makefile.am
+++ b/tests/examples/manual/Makefile.am
@@ -21,7 +21,6 @@
 EXTRA_DIST = extract.pl
 
 EXAMPLES = \
-	dynamic \
 	$(GNOME) \
 	elementcreate \
 	elementmake \
@@ -40,8 +39,12 @@
 	appsrc \
 	appsink \
 	dynformat \
+	effectswitch \
+	testrtpool \
+	norebuffer \
 	playbin \
-	decodebin
+	decodebin \
+	playsink 
 
 BUILT_SOURCES = \
 	elementmake.c elementcreate.c elementget.c elementlink.c elementfactory.c \
@@ -51,13 +54,17 @@
 	helloworld.c \
 	init.c \
 	query.c \
-	typefind.c dynamic.c \
+	typefind.c \
 	blockprobe.c \
 	probe.c \
 	appsrc.c \
 	appsink.c \
 	dynformat.c \
-	playbin.c decodebin.c
+	effectswitch.c \
+	testrtpool.c \
+	norebuffer.c \
+	playbin.c decodebin.c \
+	playsink.c
 
 CLEANFILES = core core.* test-registry.* *.gcno *.gcda $(BUILT_SOURCES)
 
@@ -86,7 +93,7 @@
 query.c: $(top_srcdir)/docs/manual/advanced-position.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
-typefind.c dynamic.c: $(top_srcdir)/docs/manual/advanced-autoplugging.xml
+typefind.c: $(top_srcdir)/docs/manual/advanced-autoplugging.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
 blockprobe.c: $(top_srcdir)/docs/manual/advanced-dataaccess.xml
@@ -104,7 +111,16 @@
 dynformat.c: $(top_srcdir)/docs/manual/advanced-dataaccess.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
-playbin.c decodebin.c: $(top_srcdir)/docs/manual/highlevel-components.xml
+effectswitch.c: $(top_srcdir)/docs/manual/advanced-dataaccess.xml
+	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
+
+norebuffer.c: $(top_srcdir)/docs/manual/advanced-buffering.xml
+	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
+
+playbin.c decodebin.c playsink.c: $(top_srcdir)/docs/manual/highlevel-playback.xml
+	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
+
+testrtpool.c: $(top_srcdir)/docs/manual/advanced-threads.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
 TESTS = bin \
@@ -112,3 +128,6 @@
 	ghostpad init
 
 noinst_PROGRAMS = $(EXAMPLES)
+
+testrtpool_LDADD = $(GST_OBJ_LIBS) $(PTHREAD_LIBS)
+testrtpool_CFLAGS = $(GST_OBJ_CFLAGS) $(PTHREAD_CFLAGS)
diff --git a/tests/examples/manual/Makefile.in b/tests/examples/manual/Makefile.in
index 99b25f2..141598b 100644
--- a/tests/examples/manual/Makefile.in
+++ b/tests/examples/manual/Makefile.in
@@ -85,7 +85,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -101,14 +101,15 @@
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 am__EXEEXT_1 =
-am__EXEEXT_2 = dynamic$(EXEEXT) $(am__EXEEXT_1) elementcreate$(EXEEXT) \
+am__EXEEXT_2 = $(am__EXEEXT_1) elementcreate$(EXEEXT) \
 	elementmake$(EXEEXT) elementfactory$(EXEEXT) \
 	elementget$(EXEEXT) elementlink$(EXEEXT) bin$(EXEEXT) \
 	pad$(EXEEXT) ghostpad$(EXEEXT) helloworld$(EXEEXT) \
 	init$(EXEEXT) query$(EXEEXT) typefind$(EXEEXT) \
 	blockprobe$(EXEEXT) probe$(EXEEXT) appsrc$(EXEEXT) \
-	appsink$(EXEEXT) dynformat$(EXEEXT) playbin$(EXEEXT) \
-	decodebin$(EXEEXT)
+	appsink$(EXEEXT) dynformat$(EXEEXT) effectswitch$(EXEEXT) \
+	testrtpool$(EXEEXT) norebuffer$(EXEEXT) playbin$(EXEEXT) \
+	decodebin$(EXEEXT) playsink$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 appsink_SOURCES = appsink.c
 appsink_OBJECTS = appsink.$(OBJEXT)
@@ -144,18 +145,18 @@
 decodebin_DEPENDENCIES =  \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
-dynamic_SOURCES = dynamic.c
-dynamic_OBJECTS = dynamic.$(OBJEXT)
-dynamic_LDADD = $(LDADD)
-dynamic_DEPENDENCIES =  \
-	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
-	$(am__DEPENDENCIES_1)
 dynformat_SOURCES = dynformat.c
 dynformat_OBJECTS = dynformat.$(OBJEXT)
 dynformat_LDADD = $(LDADD)
 dynformat_DEPENDENCIES =  \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+effectswitch_SOURCES = effectswitch.c
+effectswitch_OBJECTS = effectswitch.$(OBJEXT)
+effectswitch_LDADD = $(LDADD)
+effectswitch_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 elementcreate_SOURCES = elementcreate.c
 elementcreate_OBJECTS = elementcreate.$(OBJEXT)
 elementcreate_LDADD = $(LDADD)
@@ -204,6 +205,12 @@
 init_DEPENDENCIES =  \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+norebuffer_SOURCES = norebuffer.c
+norebuffer_OBJECTS = norebuffer.$(OBJEXT)
+norebuffer_LDADD = $(LDADD)
+norebuffer_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 pad_SOURCES = pad.c
 pad_OBJECTS = pad.$(OBJEXT)
 pad_LDADD = $(LDADD)
@@ -216,6 +223,12 @@
 playbin_DEPENDENCIES =  \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+playsink_SOURCES = playsink.c
+playsink_OBJECTS = playsink.$(OBJEXT)
+playsink_LDADD = $(LDADD)
+playsink_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 probe_SOURCES = probe.c
 probe_OBJECTS = probe.$(OBJEXT)
 probe_LDADD = $(LDADD)
@@ -228,6 +241,12 @@
 query_DEPENDENCIES =  \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+testrtpool_SOURCES = testrtpool.c
+testrtpool_OBJECTS = testrtpool-testrtpool.$(OBJEXT)
+testrtpool_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+testrtpool_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testrtpool_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 typefind_SOURCES = typefind.c
 typefind_OBJECTS = typefind.$(OBJEXT)
 typefind_LDADD = $(LDADD)
@@ -260,14 +279,16 @@
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = appsink.c appsrc.c bin.c blockprobe.c decodebin.c dynamic.c \
-	dynformat.c elementcreate.c elementfactory.c elementget.c \
-	elementlink.c elementmake.c ghostpad.c helloworld.c init.c \
-	pad.c playbin.c probe.c query.c typefind.c
-DIST_SOURCES = appsink.c appsrc.c bin.c blockprobe.c decodebin.c \
-	dynamic.c dynformat.c elementcreate.c elementfactory.c \
+SOURCES = appsink.c appsrc.c bin.c blockprobe.c decodebin.c \
+	dynformat.c effectswitch.c elementcreate.c elementfactory.c \
 	elementget.c elementlink.c elementmake.c ghostpad.c \
-	helloworld.c init.c pad.c playbin.c probe.c query.c typefind.c
+	helloworld.c init.c norebuffer.c pad.c playbin.c playsink.c \
+	probe.c query.c testrtpool.c typefind.c
+DIST_SOURCES = appsink.c appsrc.c bin.c blockprobe.c decodebin.c \
+	dynformat.c effectswitch.c elementcreate.c elementfactory.c \
+	elementget.c elementlink.c elementmake.c ghostpad.c \
+	helloworld.c init.c norebuffer.c pad.c playbin.c playsink.c \
+	probe.c query.c testrtpool.c typefind.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -468,6 +489,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -504,6 +528,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -574,7 +599,6 @@
 
 EXTRA_DIST = extract.pl
 EXAMPLES = \
-	dynamic \
 	$(GNOME) \
 	elementcreate \
 	elementmake \
@@ -593,8 +617,12 @@
 	appsrc \
 	appsink \
 	dynformat \
+	effectswitch \
+	testrtpool \
+	norebuffer \
 	playbin \
-	decodebin
+	decodebin \
+	playsink 
 
 BUILT_SOURCES = \
 	elementmake.c elementcreate.c elementget.c elementlink.c elementfactory.c \
@@ -604,19 +632,25 @@
 	helloworld.c \
 	init.c \
 	query.c \
-	typefind.c dynamic.c \
+	typefind.c \
 	blockprobe.c \
 	probe.c \
 	appsrc.c \
 	appsink.c \
 	dynformat.c \
-	playbin.c decodebin.c
+	effectswitch.c \
+	testrtpool.c \
+	norebuffer.c \
+	playbin.c decodebin.c \
+	playsink.c
 
 CLEANFILES = core core.* test-registry.* *.gcno *.gcda $(BUILT_SOURCES)
 AM_CFLAGS = $(GST_OBJ_CFLAGS)
 LDADD = $(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(GST_OBJ_LIBS)
 
+testrtpool_LDADD = $(GST_OBJ_LIBS) $(PTHREAD_LIBS)
+testrtpool_CFLAGS = $(GST_OBJ_CFLAGS) $(PTHREAD_CFLAGS)
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -676,12 +710,12 @@
 decodebin$(EXEEXT): $(decodebin_OBJECTS) $(decodebin_DEPENDENCIES) $(EXTRA_decodebin_DEPENDENCIES) 
 	@rm -f decodebin$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(decodebin_OBJECTS) $(decodebin_LDADD) $(LIBS)
-dynamic$(EXEEXT): $(dynamic_OBJECTS) $(dynamic_DEPENDENCIES) $(EXTRA_dynamic_DEPENDENCIES) 
-	@rm -f dynamic$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(dynamic_OBJECTS) $(dynamic_LDADD) $(LIBS)
 dynformat$(EXEEXT): $(dynformat_OBJECTS) $(dynformat_DEPENDENCIES) $(EXTRA_dynformat_DEPENDENCIES) 
 	@rm -f dynformat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dynformat_OBJECTS) $(dynformat_LDADD) $(LIBS)
+effectswitch$(EXEEXT): $(effectswitch_OBJECTS) $(effectswitch_DEPENDENCIES) $(EXTRA_effectswitch_DEPENDENCIES) 
+	@rm -f effectswitch$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(effectswitch_OBJECTS) $(effectswitch_LDADD) $(LIBS)
 elementcreate$(EXEEXT): $(elementcreate_OBJECTS) $(elementcreate_DEPENDENCIES) $(EXTRA_elementcreate_DEPENDENCIES) 
 	@rm -f elementcreate$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elementcreate_OBJECTS) $(elementcreate_LDADD) $(LIBS)
@@ -706,18 +740,27 @@
 init$(EXEEXT): $(init_OBJECTS) $(init_DEPENDENCIES) $(EXTRA_init_DEPENDENCIES) 
 	@rm -f init$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(init_OBJECTS) $(init_LDADD) $(LIBS)
+norebuffer$(EXEEXT): $(norebuffer_OBJECTS) $(norebuffer_DEPENDENCIES) $(EXTRA_norebuffer_DEPENDENCIES) 
+	@rm -f norebuffer$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(norebuffer_OBJECTS) $(norebuffer_LDADD) $(LIBS)
 pad$(EXEEXT): $(pad_OBJECTS) $(pad_DEPENDENCIES) $(EXTRA_pad_DEPENDENCIES) 
 	@rm -f pad$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pad_OBJECTS) $(pad_LDADD) $(LIBS)
 playbin$(EXEEXT): $(playbin_OBJECTS) $(playbin_DEPENDENCIES) $(EXTRA_playbin_DEPENDENCIES) 
 	@rm -f playbin$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(playbin_OBJECTS) $(playbin_LDADD) $(LIBS)
+playsink$(EXEEXT): $(playsink_OBJECTS) $(playsink_DEPENDENCIES) $(EXTRA_playsink_DEPENDENCIES) 
+	@rm -f playsink$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(playsink_OBJECTS) $(playsink_LDADD) $(LIBS)
 probe$(EXEEXT): $(probe_OBJECTS) $(probe_DEPENDENCIES) $(EXTRA_probe_DEPENDENCIES) 
 	@rm -f probe$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(probe_OBJECTS) $(probe_LDADD) $(LIBS)
 query$(EXEEXT): $(query_OBJECTS) $(query_DEPENDENCIES) $(EXTRA_query_DEPENDENCIES) 
 	@rm -f query$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(query_OBJECTS) $(query_LDADD) $(LIBS)
+testrtpool$(EXEEXT): $(testrtpool_OBJECTS) $(testrtpool_DEPENDENCIES) $(EXTRA_testrtpool_DEPENDENCIES) 
+	@rm -f testrtpool$(EXEEXT)
+	$(AM_V_CCLD)$(testrtpool_LINK) $(testrtpool_OBJECTS) $(testrtpool_LDADD) $(LIBS)
 typefind$(EXEEXT): $(typefind_OBJECTS) $(typefind_DEPENDENCIES) $(EXTRA_typefind_DEPENDENCIES) 
 	@rm -f typefind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(typefind_OBJECTS) $(typefind_LDADD) $(LIBS)
@@ -733,8 +776,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blockprobe.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decodebin.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynamic.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynformat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/effectswitch.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elementcreate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elementfactory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elementget.Po@am__quote@
@@ -743,10 +786,13 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghostpad.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/helloworld.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norebuffer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pad.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/playbin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/playsink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/probe.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/query.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrtpool-testrtpool.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typefind.Po@am__quote@
 
 .c.o:
@@ -770,6 +816,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
+testrtpool-testrtpool.o: testrtpool.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrtpool_CFLAGS) $(CFLAGS) -MT testrtpool-testrtpool.o -MD -MP -MF $(DEPDIR)/testrtpool-testrtpool.Tpo -c -o testrtpool-testrtpool.o `test -f 'testrtpool.c' || echo '$(srcdir)/'`testrtpool.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testrtpool-testrtpool.Tpo $(DEPDIR)/testrtpool-testrtpool.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testrtpool.c' object='testrtpool-testrtpool.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrtpool_CFLAGS) $(CFLAGS) -c -o testrtpool-testrtpool.o `test -f 'testrtpool.c' || echo '$(srcdir)/'`testrtpool.c
+
+testrtpool-testrtpool.obj: testrtpool.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrtpool_CFLAGS) $(CFLAGS) -MT testrtpool-testrtpool.obj -MD -MP -MF $(DEPDIR)/testrtpool-testrtpool.Tpo -c -o testrtpool-testrtpool.obj `if test -f 'testrtpool.c'; then $(CYGPATH_W) 'testrtpool.c'; else $(CYGPATH_W) '$(srcdir)/testrtpool.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testrtpool-testrtpool.Tpo $(DEPDIR)/testrtpool-testrtpool.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testrtpool.c' object='testrtpool-testrtpool.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrtpool_CFLAGS) $(CFLAGS) -c -o testrtpool-testrtpool.obj `if test -f 'testrtpool.c'; then $(CYGPATH_W) 'testrtpool.c'; else $(CYGPATH_W) '$(srcdir)/testrtpool.c'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -1099,7 +1159,7 @@
 query.c: $(top_srcdir)/docs/manual/advanced-position.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
-typefind.c dynamic.c: $(top_srcdir)/docs/manual/advanced-autoplugging.xml
+typefind.c: $(top_srcdir)/docs/manual/advanced-autoplugging.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
 blockprobe.c: $(top_srcdir)/docs/manual/advanced-dataaccess.xml
@@ -1117,7 +1177,16 @@
 dynformat.c: $(top_srcdir)/docs/manual/advanced-dataaccess.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
-playbin.c decodebin.c: $(top_srcdir)/docs/manual/highlevel-components.xml
+effectswitch.c: $(top_srcdir)/docs/manual/advanced-dataaccess.xml
+	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
+
+norebuffer.c: $(top_srcdir)/docs/manual/advanced-buffering.xml
+	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
+
+playbin.c decodebin.c playsink.c: $(top_srcdir)/docs/manual/highlevel-playback.xml
+	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
+
+testrtpool.c: $(top_srcdir)/docs/manual/advanced-threads.xml
 	$(PERL_PATH) $(srcdir)/extract.pl $@ $<
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/examples/manual/decodebin.c b/tests/examples/manual/decodebin.c
index 7985868..d18f2ad 100644
--- a/tests/examples/manual/decodebin.c
+++ b/tests/examples/manual/decodebin.c
@@ -1,8 +1,8 @@
 
-/*** block a  from ../../../docs/manual/highlevel-components.xml ***/
+/*** block a  from ../../../docs/manual/highlevel-playback.xml ***/
 #include <gst/gst.h>
 
-/*** block b  from ../../../docs/manual/highlevel-components.xml ***/
+/*** block b  from ../../../docs/manual/highlevel-playback.xml ***/
 static gboolean
 my_bus_callback (GstBus     *bus,
 		 GstMessage *message,
@@ -36,7 +36,7 @@
   return TRUE;
 }
 
-/*** block c  from ../../../docs/manual/highlevel-components.xml ***/
+/*** block c  from ../../../docs/manual/highlevel-playback.xml ***/
 GstElement *pipeline, *audio;
 
 static void
diff --git a/tests/examples/manual/dynamic.c b/tests/examples/manual/dynamic.c
deleted file mode 100644
index 355caa7..0000000
--- a/tests/examples/manual/dynamic.c
+++ /dev/null
@@ -1,330 +0,0 @@
-
-/*** block a  from ../../../docs/manual/advanced-autoplugging.xml ***/
-#include <gst/gst.h>
-
-GstElement *pipeline;
-
-/*** block b  from ../../../docs/manual/advanced-autoplugging.xml ***/
-static GList *factories;
-
-/*
- * This function is called by the registry loader. Its return value
- * (TRUE or FALSE) decides whether the given feature will be included
- * in the list that we're generating further down.
- */
-
-static gboolean
-cb_feature_filter (GstPluginFeature *feature,
-		   gpointer          data)
-{
-  const gchar *klass;
-  guint rank;
-
-  /* we only care about element factories */
-  if (!GST_IS_ELEMENT_FACTORY (feature))
-    return FALSE;
-
-  /* only parsers, demuxers and decoders */
-  klass = gst_element_factory_get_metadata (GST_ELEMENT_FACTORY (feature), GST_ELEMENT_METADATA_KLASS);
-  if (g_strrstr (klass, "Demux") == NULL &&
-      g_strrstr (klass, "Decoder") == NULL &&
-      g_strrstr (klass, "Parse") == NULL)
-    return FALSE;
-
-  /* only select elements with autoplugging rank */
-  rank = gst_plugin_feature_get_rank (feature);
-  if (rank < GST_RANK_MARGINAL)
-    return FALSE;
-
-  return TRUE;
-}
-
-/*
- * This function is called to sort features by rank.
- */
-
-static gint
-cb_compare_ranks (GstPluginFeature *f1,
-		  GstPluginFeature *f2)
-{
-  return gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1);
-}
-
-static void
-init_factories (void)
-{
-  /* first filter out the interesting element factories */
-  factories = gst_registry_feature_filter (
-      gst_registry_get (),
-      (GstPluginFeatureFilter) cb_feature_filter, FALSE, NULL);
-
-  /* sort them according to their ranks */
-  factories = g_list_sort (factories, (GCompareFunc) cb_compare_ranks);
-}
-
-/*** block c  from ../../../docs/manual/advanced-autoplugging.xml ***/
-static void try_to_plug (GstPad *pad, GstCaps *caps);
-
-static GstElement *audiosink;
-
-static void
-cb_newpad (GstElement *element,
-	   GstPad     *pad,
-	   gpointer    data)
-{
-  GstCaps *caps;
-
-  caps = gst_pad_query_caps (pad, NULL);
-  try_to_plug (pad, caps);
-  gst_caps_unref (caps);
-}
-
-static void
-close_link (GstPad      *srcpad,
-	    GstElement  *sinkelement,
-	    const gchar *padname,
-	    const GList *templlist)
-{
-  GstPad *pad;
-  gboolean has_dynamic_pads = FALSE;
-
-  g_print ("Plugging pad %s:%s to newly created %s:%s\n",
-	   gst_object_get_name (GST_OBJECT (gst_pad_get_parent (srcpad))),
-	   gst_pad_get_name (srcpad),
-	   gst_object_get_name (GST_OBJECT (sinkelement)), padname);
-
-  /* add the element to the pipeline and set correct state */
-  if (sinkelement != audiosink) {
-    gst_bin_add (GST_BIN (pipeline), sinkelement);
-    gst_element_set_state (sinkelement, GST_STATE_READY);
-  }
-  pad = gst_element_get_static_pad (sinkelement, padname);
-  gst_pad_link (srcpad, pad);
-  if (sinkelement != audiosink) {
-    gst_element_set_state (sinkelement, GST_STATE_PAUSED);
-  }
-  gst_object_unref (GST_OBJECT (pad));
-
-  /* if we have static source pads, link those. If we have dynamic
-   * source pads, listen for pad-added signals on the element */
-  for ( ; templlist != NULL; templlist = templlist->next) {
-    GstStaticPadTemplate *templ = templlist->data;
-
-    /* only sourcepads, no request pads */
-    if (templ->direction != GST_PAD_SRC ||
-        templ->presence == GST_PAD_REQUEST) {
-      continue;
-    }
-
-    switch (templ->presence) {
-      case GST_PAD_ALWAYS: {
-        GstPad *pad = gst_element_get_static_pad (sinkelement, templ->name_template);
-        GstCaps *caps = gst_pad_query_caps (pad, NULL);
-
-        /* link */
-        try_to_plug (pad, caps);
-        gst_object_unref (GST_OBJECT (pad));
-        gst_caps_unref (caps);
-        break;
-      }
-      case GST_PAD_SOMETIMES:
-        has_dynamic_pads = TRUE;
-        break;
-      default:
-        break;
-    }
-  }
-
-  /* listen for newly created pads if this element supports that */
-  if (has_dynamic_pads) {
-    g_signal_connect (sinkelement, "pad-added", G_CALLBACK (cb_newpad), NULL);
-  }
-}
-
-static void
-try_to_plug (GstPad        *pad,
-	     GstCaps       *caps)
-{
-  GstObject *parent = GST_OBJECT (GST_OBJECT_PARENT (pad));
-  const gchar *media;
-  const GList *item;
-  GstCaps *res, *audiocaps;
-
-  /* don't plug if we're already plugged - FIXME: memleak for pad */
-  if (GST_PAD_IS_LINKED (gst_element_get_static_pad (audiosink, "sink"))) {
-    g_print ("Omitting link for pad %s:%s because we're already linked\n",
-	     GST_OBJECT_NAME (parent), GST_OBJECT_NAME (pad));
-    return;
-  }
-
-  /* as said above, we only try to plug audio... Omit video */
-  media = gst_structure_get_name (gst_caps_get_structure (caps, 0));
-  if (g_strrstr (media, "video")) {
-    g_print ("Omitting link for pad %s:%s because media type %s is non-audio\n",
-	     GST_OBJECT_NAME (parent), GST_OBJECT_NAME (pad), media);
-    return;
-  }
-
-  /* can it link to the audiopad? */
-  audiocaps = gst_pad_query_caps (gst_element_get_static_pad (audiosink, "sink"),
-  NULL);
-  res = gst_caps_intersect (caps, audiocaps);
-  if (res && !gst_caps_is_empty (res)) {
-    g_print ("Found pad to link to audiosink - plugging is now done\n");
-    close_link (pad, audiosink, "sink", NULL);
-    gst_caps_unref (audiocaps);
-    gst_caps_unref (res);
-    return;
-  }
-  gst_caps_unref (audiocaps);
-  gst_caps_unref (res);
-
-  /* try to plug from our list */
-  for (item = factories; item != NULL; item = item->next) {
-    GstElementFactory *factory = GST_ELEMENT_FACTORY (item->data);
-    const GList *pads;
-
-    for (pads = gst_element_factory_get_static_pad_templates (factory);
-         pads != NULL; pads = pads->next) {
-      GstStaticPadTemplate *templ = pads->data;
-
-      /* find the sink template - need an always pad*/
-      if (templ->direction != GST_PAD_SINK ||
-          templ->presence != GST_PAD_ALWAYS) {
-        continue;
-      }
-
-      /* can it link? */
-      res = gst_caps_intersect (caps,
-          gst_static_caps_get (&templ->static_caps));
-      if (res && !gst_caps_is_empty (res)) {
-        GstElement *element;
-        gchar *name_template = g_strdup (templ->name_template);
-
-        /* close link and return */
-        gst_caps_unref (res);
-        element = gst_element_factory_create (factory, NULL);
-        close_link (pad, element, name_template,
-		    gst_element_factory_get_static_pad_templates (factory));
-        g_free (name_template);
-        return;
-      }
-      gst_caps_unref (res);
-
-      /* we only check one sink template per factory, so move on to the
-       * next factory now */
-      break;
-    }
-  }
-
-  /* if we get here, no item was found */
-  g_print ("No compatible pad found to decode %s on %s:%s\n",
-	   media, GST_OBJECT_NAME (parent), GST_OBJECT_NAME (pad));
-}
-
-static void
-cb_typefound (GstElement *typefind,
-	      guint       probability,
-	      GstCaps    *caps,
-	      gpointer    data)
-{
-  gchar *s;
-  GstPad *pad;
-
-  s = gst_caps_to_string (caps);
-  g_print ("Detected media type %s\n", s);
-  g_free (s);
-
-  /* actually plug now */
-  pad = gst_element_get_static_pad (typefind, "src");
-  try_to_plug (pad, caps);
-  gst_object_unref (GST_OBJECT (pad));
-}
-
-/*** block d  from ../../../docs/manual/advanced-autoplugging.xml ***/
-static gboolean
-my_bus_callback (GstBus     *bus,
-                 GstMessage *message,
-                 gpointer    data)
-{
-  GMainLoop *loop = data;
-
-  switch (GST_MESSAGE_TYPE (message)) {
-    case GST_MESSAGE_ERROR: {
-      GError *err;
-      gchar *debug;
-
-      gst_message_parse_error (message, &err, &debug);
-      g_print ("Error: %s\n", err->message);
-      g_error_free (err);
-      g_free (debug);
-
-      g_main_loop_quit (loop);
-      break;
-    }
-    case GST_MESSAGE_EOS:
-      /* end-of-stream */
-      g_main_loop_quit (loop);
-      break;
-    default:
-      break;
-  }
-
-  /* remove from queue */
-  return TRUE;
-}
-
-gint
-main (gint   argc,
-      gchar *argv[])
-{
-  GMainLoop *loop;
-  GstElement *typefind, *realsink;
-  GstBus *bus;
-  GError *err = NULL;
-  gchar *p;
-
-  /* init GStreamer and ourselves */
-  gst_init (&argc, &argv);
-  loop = g_main_loop_new (NULL, FALSE);
-  init_factories ();
-
-  /* args */
-  if (argc != 2) {
-    g_print ("Usage: %s <filename>\n", argv[0]);
-    return -1;
-  }
-
-  /* pipeline */
-  p = g_strdup_printf ("filesrc location=\"%s\" ! typefind name=tf", argv[1]);
-  pipeline = gst_parse_launch (p, &err);
-  g_free (p);
-
-  if (err) {
-    g_error ("Could not construct pipeline: %s", err->message);
-    g_error_free (err);
-    return -1;
-  }
-
-  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
-  gst_bus_add_watch (bus, my_bus_callback, NULL);
-  gst_object_unref (bus);
-
-  typefind = gst_bin_get_by_name (GST_BIN (pipeline), "tf");
-  g_signal_connect (typefind, "have-type", G_CALLBACK (cb_typefound), NULL);
-  gst_object_unref (GST_OBJECT (typefind));
-  audiosink = gst_element_factory_make ("audioconvert", "aconv");
-  realsink = gst_element_factory_make ("alsasink", "audiosink");
-  gst_bin_add_many (GST_BIN (pipeline), audiosink, realsink, NULL);
-  gst_element_link (audiosink, realsink);
-  gst_element_set_state (pipeline, GST_STATE_PLAYING);
-
-  /* run */
-  g_main_loop_run (loop);
-
-  /* exit */
-  gst_element_set_state (pipeline, GST_STATE_NULL);
-  gst_object_unref (GST_OBJECT (pipeline));
-
-  return 0;
-}
diff --git a/tests/examples/manual/effectswitch.c b/tests/examples/manual/effectswitch.c
new file mode 100644
index 0000000..5cba9c0
--- /dev/null
+++ b/tests/examples/manual/effectswitch.c
@@ -0,0 +1,192 @@
+
+/*** block  from ../../../docs/manual/advanced-dataaccess.xml ***/
+#include <gst/gst.h>
+
+static gchar *opt_effects = NULL;
+
+#define DEFAULT_EFFECTS "identity,exclusion,navigationtest," \
+    "agingtv,videoflip,vertigotv,gaussianblur,shagadelictv,edgetv"
+
+static GstPad *blockpad;
+static GstElement *conv_before;
+static GstElement *conv_after;
+static GstElement *cur_effect;
+static GstElement *pipeline;
+
+static GQueue effects = G_QUEUE_INIT;
+
+static GstPadProbeReturn
+event_probe_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GMainLoop *loop = user_data;
+  GstElement *next;
+
+  if (GST_EVENT_TYPE (GST_PAD_PROBE_INFO_DATA (info)) != GST_EVENT_EOS)
+    return GST_PAD_PROBE_OK;
+
+  gst_pad_remove_probe (pad, GST_PAD_PROBE_INFO_ID (info));
+
+  /* push current event back into the queue */
+  g_queue_push_tail (&effects, gst_object_ref (cur_effect));
+  /* take next effect from the queue */
+  next = g_queue_pop_head (&effects);
+  if (next == NULL) {
+    GST_DEBUG_OBJECT (pad, "no more effects");
+    g_main_loop_quit (loop);
+    return GST_PAD_PROBE_DROP;
+  }
+
+  g_print ("Switching from '%s' to '%s'..\n", GST_OBJECT_NAME (cur_effect),
+      GST_OBJECT_NAME (next));
+
+  gst_element_set_state (cur_effect, GST_STATE_NULL);
+
+  /* remove unlinks automatically */
+  GST_DEBUG_OBJECT (pipeline, "removing %" GST_PTR_FORMAT, cur_effect);
+  gst_bin_remove (GST_BIN (pipeline), cur_effect);
+
+  GST_DEBUG_OBJECT (pipeline, "adding   %" GST_PTR_FORMAT, next);
+  gst_bin_add (GST_BIN (pipeline), next);
+
+  GST_DEBUG_OBJECT (pipeline, "linking..");
+  gst_element_link_many (conv_before, next, conv_after, NULL);
+
+  gst_element_set_state (next, GST_STATE_PLAYING);
+
+  cur_effect = next;
+  GST_DEBUG_OBJECT (pipeline, "done");
+
+  return GST_PAD_PROBE_DROP;
+}
+
+static GstPadProbeReturn
+pad_probe_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GstPad *srcpad, *sinkpad;
+
+  GST_DEBUG_OBJECT (pad, "pad is blocked now");
+
+  /* remove the probe first */
+  gst_pad_remove_probe (pad, GST_PAD_PROBE_INFO_ID (info));
+
+  /* install new probe for EOS */
+  srcpad = gst_element_get_static_pad (cur_effect, "src");
+  gst_pad_add_probe (srcpad, GST_PAD_PROBE_TYPE_BLOCK |
+      GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, event_probe_cb, user_data, NULL);
+  gst_object_unref (srcpad);
+
+  /* push EOS into the element, the probe will be fired when the
+   * EOS leaves the effect and it has thus drained all of its data */
+  sinkpad = gst_element_get_static_pad (cur_effect, "sink");
+  gst_pad_send_event (sinkpad, gst_event_new_eos ());
+  gst_object_unref (sinkpad);
+
+  return GST_PAD_PROBE_OK;
+}
+
+static gboolean
+timeout_cb (gpointer user_data)
+{
+  gst_pad_add_probe (blockpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
+      pad_probe_cb, user_data, NULL);
+
+  return TRUE;
+}
+
+static gboolean
+bus_cb (GstBus * bus, GstMessage * msg, gpointer user_data)
+{
+  GMainLoop *loop = user_data;
+
+  switch (GST_MESSAGE_TYPE (msg)) {
+    case GST_MESSAGE_ERROR:{
+      GError *err = NULL;
+      gchar *dbg;
+
+      gst_message_parse_error (msg, &err, &dbg);
+      gst_object_default_error (msg->src, err, dbg);
+      g_error_free (err);
+      g_free (dbg);
+      g_main_loop_quit (loop);
+      break;
+    }
+    default:
+      break;
+  }
+  return TRUE;
+}
+
+int
+main (int argc, char **argv)
+{
+  GOptionEntry options[] = {
+    {"effects", 'e', 0, G_OPTION_ARG_STRING, &opt_effects,
+        "Effects to use (comma-separated list of element names)", NULL},
+    {NULL}
+  };
+  GOptionContext *ctx;
+  GError *err = NULL;
+  GMainLoop *loop;
+  GstElement *src, *sink;
+  gchar **effect_names, **e;
+
+  ctx = g_option_context_new ("");
+  g_option_context_add_main_entries (ctx, options, NULL);
+  g_option_context_add_group (ctx, gst_init_get_option_group ());
+  if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
+    g_print ("Error initializing: %s\n", err->message);
+    return 1;
+  }
+  g_option_context_free (ctx);
+
+  if (opt_effects != NULL)
+    effect_names = g_strsplit (opt_effects, ",", -1);
+  else
+    effect_names = g_strsplit (DEFAULT_EFFECTS, ",", -1);
+
+  for (e = effect_names; e != NULL && *e != NULL; ++e) {
+    GstElement *el;
+
+    el = gst_element_factory_make (*e, NULL);
+    if (el) {
+      g_print ("Adding effect '%s'\n", *e);
+      g_queue_push_tail (&effects, el);
+    }
+  }
+
+  pipeline = gst_pipeline_new ("pipeline");
+
+  src = gst_element_factory_make ("videotestsrc", NULL);
+  g_object_set (src, "is-live", TRUE, NULL);
+
+  blockpad = gst_element_get_static_pad (src, "src");
+
+  conv_before = gst_element_factory_make ("videoconvert", NULL);
+
+  cur_effect = g_queue_pop_head (&effects);
+
+  conv_after = gst_element_factory_make ("videoconvert", NULL);
+
+  sink = gst_element_factory_make ("ximagesink", NULL);
+
+  gst_bin_add_many (GST_BIN (pipeline), src, conv_before, cur_effect,
+      conv_after, sink, NULL);
+
+  gst_element_link_many (src, conv_before, cur_effect, conv_after,
+      sink, NULL);
+
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  gst_bus_add_watch (GST_ELEMENT_BUS (pipeline), bus_cb, loop);
+
+  g_timeout_add_seconds (1, timeout_cb, loop);
+
+  g_main_loop_run (loop);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (pipeline);
+
+  return 0;
+}
diff --git a/tests/examples/manual/norebuffer.c b/tests/examples/manual/norebuffer.c
new file mode 100644
index 0000000..67db10f
--- /dev/null
+++ b/tests/examples/manual/norebuffer.c
@@ -0,0 +1,153 @@
+
+/*** block a  from ../../../docs/manual/advanced-buffering.xml ***/
+#include <gst/gst.h>
+
+GstState target_state;
+static gboolean is_live;
+static gboolean is_buffering;
+
+static gboolean
+buffer_timeout (gpointer data)
+{
+  GstElement *pipeline = data;
+  GstQuery *query;
+  gboolean busy;
+  gint percent;
+  gint64 estimated_total;
+  gint64 position, duration;
+  guint64 play_left;
+
+  query = gst_query_new_buffering (GST_FORMAT_TIME);
+
+  if (!gst_element_query (pipeline, query))
+    return TRUE;
+
+  gst_query_parse_buffering_percent (query, &busy, &percent);
+  gst_query_parse_buffering_range (query, NULL, NULL, NULL, &estimated_total);
+
+  if (estimated_total == -1)
+    estimated_total = 0;
+
+  /* calculate the remaining playback time */
+  if (!gst_element_query_position (pipeline, GST_FORMAT_TIME, &position))
+    position = -1;
+  if (!gst_element_query_duration (pipeline, GST_FORMAT_TIME, &duration))
+    duration = -1;
+
+  if (duration != -1 && position != -1)
+    play_left = GST_TIME_AS_MSECONDS (duration - position);
+  else
+    play_left = 0;
+
+  g_message ("play_left %" G_GUINT64_FORMAT", estimated_total %" G_GUINT64_FORMAT
+      ", percent %d", play_left, estimated_total, percent);
+
+  /* we are buffering or the estimated download time is bigger than the
+   * remaining playback time. We keep buffering. */
+  is_buffering = (busy || estimated_total * 1.1 > play_left);
+
+  if (!is_buffering)
+    gst_element_set_state (pipeline, target_state);
+
+  return is_buffering;
+}
+
+static void
+on_message_buffering (GstBus *bus, GstMessage *message, gpointer user_data)
+{
+  GstElement *pipeline = user_data;
+  gint percent;
+
+  /* no state management needed for live pipelines */
+  if (is_live)
+    return;
+
+  gst_message_parse_buffering (message, &percent);
+
+  if (percent < 100) {
+    /* buffering busy */
+    if (is_buffering == FALSE) {
+      is_buffering = TRUE;
+      if (target_state == GST_STATE_PLAYING) {
+        /* we were not buffering but PLAYING, PAUSE  the pipeline. */
+        gst_element_set_state (pipeline, GST_STATE_PAUSED);
+      }
+    }
+  }
+}
+
+static void
+on_message_async_done (GstBus *bus, GstMessage *message, gpointer user_data)
+{
+  GstElement *pipeline = user_data;
+
+  if (is_buffering == FALSE)
+    gst_element_set_state (pipeline, target_state);
+  else
+    g_timeout_add (500, buffer_timeout, pipeline);
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  GstElement *pipeline;
+  GMainLoop *loop;
+  GstBus *bus;
+  GstStateChangeReturn ret;
+
+  /* init GStreamer */
+  gst_init (&argc, &argv);
+  loop = g_main_loop_new (NULL, FALSE);
+
+  /* make sure we have a URI */
+  if (argc != 2) {
+    g_print ("Usage: %s <URI>\n", argv[0]);
+    return -1;
+  }
+
+  /* set up */
+  pipeline = gst_element_factory_make ("playbin", "pipeline");
+  g_object_set (G_OBJECT (pipeline), "uri", argv[1], NULL);
+  g_object_set (G_OBJECT (pipeline), "flags", 0x697 , NULL);
+
+  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+  gst_bus_add_signal_watch (bus);
+
+  g_signal_connect (bus, "message::buffering",
+    (GCallback) on_message_buffering, pipeline);
+  g_signal_connect (bus, "message::async-done",
+    (GCallback) on_message_async_done, pipeline);
+  gst_object_unref (bus);
+
+  is_buffering = FALSE;
+  target_state = GST_STATE_PLAYING;
+  ret = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+
+  switch (ret) {
+    case GST_STATE_CHANGE_SUCCESS:
+      is_live = FALSE;
+      break;
+
+    case GST_STATE_CHANGE_FAILURE:
+      g_warning ("failed to PAUSE");
+      return -1;
+
+    case GST_STATE_CHANGE_NO_PREROLL:
+      is_live = TRUE;
+      break;
+
+    default:
+      break;
+  }
+
+  /* now run */
+  g_main_loop_run (loop);
+
+  /* also clean up */
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (GST_OBJECT (pipeline));
+  g_main_loop_unref (loop);
+
+  return 0;
+}
diff --git a/tests/examples/manual/playbin.c b/tests/examples/manual/playbin.c
index 868b586..3534af3 100644
--- a/tests/examples/manual/playbin.c
+++ b/tests/examples/manual/playbin.c
@@ -1,8 +1,8 @@
 
-/*** block a  from ../../../docs/manual/highlevel-components.xml ***/
+/*** block a  from ../../../docs/manual/highlevel-playback.xml ***/
 #include <gst/gst.h>
 
-/*** block b  from ../../../docs/manual/highlevel-components.xml ***/
+/*** block b  from ../../../docs/manual/highlevel-playback.xml ***/
 static gboolean
 my_bus_callback (GstBus     *bus,
 		 GstMessage *message,
@@ -36,7 +36,7 @@
   return TRUE;
 }
 
-/*** block c  from ../../../docs/manual/highlevel-components.xml ***/
+/*** block c  from ../../../docs/manual/highlevel-playback.xml ***/
 gint
 main (gint   argc,
       gchar *argv[])
diff --git a/tests/examples/manual/playsink.c b/tests/examples/manual/playsink.c
new file mode 100644
index 0000000..b469ec2
--- /dev/null
+++ b/tests/examples/manual/playsink.c
@@ -0,0 +1,126 @@
+
+/*** block a  from ../../../docs/manual/highlevel-playback.xml ***/
+#include <gst/gst.h>
+
+/*** block b  from ../../../docs/manual/highlevel-playback.xml ***/
+static gboolean
+my_bus_callback (GstBus     *bus,
+		 GstMessage *message,
+		 gpointer    data)
+{
+  GMainLoop *loop = data;
+
+  switch (GST_MESSAGE_TYPE (message)) {
+    case GST_MESSAGE_ERROR: {
+      GError *err;
+      gchar *debug;
+
+      gst_message_parse_error (message, &err, &debug);
+      g_print ("Error: %s\n", err->message);
+      g_error_free (err);
+      g_free (debug);
+
+      g_main_loop_quit (loop);
+      break;
+    }
+    case GST_MESSAGE_EOS:
+      /* end-of-stream */
+      g_main_loop_quit (loop);
+      break;
+    default:
+      /* unhandled message */
+      break;
+  }
+
+  /* remove message from the queue */
+  return TRUE;
+}
+
+/*** block c  from ../../../docs/manual/highlevel-playback.xml ***/
+GstElement *pipeline, *sink;
+
+static void
+cb_pad_added (GstElement *dec,
+	      GstPad     *pad,
+	      gpointer    data)
+{
+  GstCaps *caps;
+  GstStructure *str;
+  const gchar *name;
+  GstPadTemplate *templ;
+  GstElementClass *klass;
+
+  /* check media type */
+  caps = gst_pad_query_caps (pad, NULL);
+  str = gst_caps_get_structure (caps, 0);
+  name = gst_structure_get_name (str);
+
+  klass = GST_ELEMENT_GET_CLASS (sink);
+
+  if (g_str_has_prefix (name, "audio")) {
+    templ = gst_element_class_get_pad_template (klass, "audio_sink");
+  } else if (g_str_has_prefix (name, "video")) {
+    templ = gst_element_class_get_pad_template (klass, "video_sink");
+  } else if (g_str_has_prefix (name, "text")) {
+    templ = gst_element_class_get_pad_template (klass, "text_sink");
+  } else {
+    templ = NULL;
+  }
+
+  if (templ) {
+    GstPad *sinkpad;
+
+    sinkpad = gst_element_request_pad (sink, templ, NULL, NULL);
+
+    if (!gst_pad_is_linked (sinkpad))
+      gst_pad_link (pad, sinkpad);
+
+    gst_object_unref (sinkpad);
+  }
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  GMainLoop *loop;
+  GstElement *dec;
+  GstBus *bus;
+
+  /* init GStreamer */
+  gst_init (&argc, &argv);
+  loop = g_main_loop_new (NULL, FALSE);
+
+  /* make sure we have input */
+  if (argc != 2) {
+    g_print ("Usage: %s <uri>\n", argv[0]);
+    return -1;
+  }
+
+  /* setup */
+  pipeline = gst_pipeline_new ("pipeline");
+
+  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+  gst_bus_add_watch (bus, my_bus_callback, loop);
+  gst_object_unref (bus);
+
+  dec = gst_element_factory_make ("uridecodebin", "source");
+  g_object_set (G_OBJECT (dec), "uri", argv[1], NULL);
+  g_signal_connect (dec, "pad-added", G_CALLBACK (cb_pad_added), NULL);
+
+  /* create audio output */
+  sink = gst_element_factory_make ("playsink", "sink");
+  gst_util_set_object_arg (G_OBJECT (sink), "flags",  
+      "soft-colorbalance+soft-volume+vis+text+audio+video");
+  gst_bin_add_many (GST_BIN (pipeline), dec, sink, NULL);
+
+  /* run */
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+  g_main_loop_run (loop);
+
+  /* cleanup */
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (GST_OBJECT (pipeline));
+
+  return 0;
+}
diff --git a/tests/examples/manual/testrtpool.c b/tests/examples/manual/testrtpool.c
new file mode 100644
index 0000000..793969a
--- /dev/null
+++ b/tests/examples/manual/testrtpool.c
@@ -0,0 +1,235 @@
+
+/*** block a  from ../../../docs/manual/advanced-threads.xml ***/
+#include <gst/gst.h>
+
+#define TEST_TYPE_RT_POOL             (test_rt_pool_get_type ())
+#define TEST_RT_POOL(pool)            (G_TYPE_CHECK_INSTANCE_CAST ((pool), TEST_TYPE_RT_POOL, TestRTPool))
+#define TEST_IS_RT_POOL(pool)         (G_TYPE_CHECK_INSTANCE_TYPE ((pool), TEST_TYPE_RT_POOL))
+#define TEST_RT_POOL_CLASS(pclass)    (G_TYPE_CHECK_CLASS_CAST ((pclass), TEST_TYPE_RT_POOL, TestRTPoolClass))
+#define TEST_IS_RT_POOL_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), TEST_TYPE_RT_POOL))
+#define TEST_RT_POOL_GET_CLASS(pool)  (G_TYPE_INSTANCE_GET_CLASS ((pool), TEST_TYPE_RT_POOL, TestRTPoolClass))
+#define TEST_RT_POOL_CAST(pool)       ((TestRTPool*)(pool))
+
+typedef struct _TestRTPool TestRTPool;
+typedef struct _TestRTPoolClass TestRTPoolClass;
+
+struct _TestRTPool {
+  GstTaskPool    object;
+};
+
+struct _TestRTPoolClass {
+  GstTaskPoolClass parent_class;
+};
+
+GType           test_rt_pool_get_type    (void);
+
+GstTaskPool *   test_rt_pool_new         (void);
+
+
+/*** block b  from ../../../docs/manual/advanced-threads.xml ***/
+#include <pthread.h>
+
+typedef struct
+{
+  pthread_t thread;
+} TestRTId;
+
+G_DEFINE_TYPE (TestRTPool, test_rt_pool, GST_TYPE_TASK_POOL);
+
+static void
+default_prepare (GstTaskPool * pool, GError ** error)
+{
+  /* we don't do anything here. We could construct a pool of threads here that
+   * we could reuse later but we don't */
+}
+
+static void
+default_cleanup (GstTaskPool * pool)
+{
+}
+
+static gpointer
+default_push (GstTaskPool * pool, GstTaskPoolFunction func, gpointer data,
+    GError ** error)
+{
+  TestRTId *tid;
+  gint res;
+  pthread_attr_t attr;
+  struct sched_param param;
+
+  tid = g_slice_new0 (TestRTId);
+
+  pthread_attr_init (&attr);
+  if ((res = pthread_attr_setschedpolicy (&attr, SCHED_RR)) != 0)
+    g_warning ("setschedpolicy: failure: %p", g_strerror (res));
+
+  param.sched_priority = 50;
+  if ((res = pthread_attr_setschedparam (&attr, &param)) != 0)
+    g_warning ("setschedparam: failure: %p", g_strerror (res));
+
+  if ((res = pthread_attr_setinheritsched (&attr, PTHREAD_EXPLICIT_SCHED)) != 0)
+    g_warning ("setinheritsched: failure: %p", g_strerror (res));
+
+  res = pthread_create (&tid->thread, &attr, (void *(*)(void *)) func, data);
+
+  if (res != 0) {
+    g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN,
+        "Error creating thread: %s", g_strerror (res));
+    g_slice_free (TestRTId, tid);
+    tid = NULL;
+  }
+
+  return tid;
+}
+
+static void
+default_join (GstTaskPool * pool, gpointer id)
+{
+  TestRTId *tid = (TestRTId *) id;
+
+  pthread_join (tid->thread, NULL);
+
+  g_slice_free (TestRTId, tid);
+}
+
+static void
+test_rt_pool_class_init (TestRTPoolClass * klass)
+{
+  GstTaskPoolClass *gsttaskpool_class;
+
+  gsttaskpool_class = (GstTaskPoolClass *) klass;
+
+  gsttaskpool_class->prepare = default_prepare;
+  gsttaskpool_class->cleanup = default_cleanup;
+  gsttaskpool_class->push = default_push;
+  gsttaskpool_class->join = default_join;
+}
+
+static void
+test_rt_pool_init (TestRTPool * pool)
+{
+}
+
+GstTaskPool *
+test_rt_pool_new (void)
+{
+  GstTaskPool *pool;
+
+  pool = g_object_new (TEST_TYPE_RT_POOL, NULL);
+
+  return pool;
+}
+
+/*** block c  from ../../../docs/manual/advanced-threads.xml ***/
+static GMainLoop* loop;
+
+static void
+on_stream_status (GstBus     *bus,
+                  GstMessage *message,
+                  gpointer    user_data)
+{
+  GstStreamStatusType type;
+  GstElement *owner;
+  const GValue *val;
+  GstTask *task = NULL;
+
+  gst_message_parse_stream_status (message, &type, &owner);
+
+  val = gst_message_get_stream_status_object (message);
+
+  /* see if we know how to deal with this object */
+  if (G_VALUE_TYPE (val) == GST_TYPE_TASK) {
+    task = g_value_get_object (val);
+  }
+
+  switch (type) {
+    case GST_STREAM_STATUS_TYPE_CREATE:
+      if (task) {
+        GstTaskPool *pool;
+
+        pool = test_rt_pool_new();
+
+        gst_task_set_pool (task, pool);
+      }
+      break;
+    default:
+      break;
+  }
+}
+
+static void
+on_error (GstBus     *bus,
+          GstMessage *message,
+          gpointer    user_data)
+{
+  g_message ("received ERROR");
+  g_main_loop_quit (loop);
+}
+
+static void
+on_eos (GstBus     *bus,
+        GstMessage *message,
+        gpointer    user_data)
+{
+  g_main_loop_quit (loop);
+}
+
+int
+main (int argc, char *argv[])
+{
+  GstElement *bin, *fakesrc, *fakesink;
+  GstBus *bus;
+  GstStateChangeReturn ret;
+  
+  gst_init (&argc, &argv);
+
+  /* create a new bin to hold the elements */
+  bin = gst_pipeline_new ("pipeline");
+  g_assert (bin);
+
+  /* create a source */
+  fakesrc = gst_element_factory_make ("fakesrc", "fakesrc");
+  g_assert (fakesrc);
+  g_object_set (fakesrc, "num-buffers", 50, NULL);
+
+  /* and a sink */
+  fakesink = gst_element_factory_make ("fakesink", "fakesink");
+  g_assert (fakesink);
+
+  /* add objects to the main pipeline */
+  gst_bin_add_many (GST_BIN (bin), fakesrc, fakesink, NULL);
+
+  /* link the elements */
+  gst_element_link (fakesrc, fakesink);
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  /* get the bus, we need to install a sync handler */
+  bus = gst_pipeline_get_bus (GST_PIPELINE (bin));
+  gst_bus_enable_sync_message_emission (bus);
+  gst_bus_add_signal_watch (bus);
+
+  g_signal_connect (bus, "sync-message::stream-status",
+      (GCallback) on_stream_status, NULL);
+  g_signal_connect (bus, "message::error",
+      (GCallback) on_error, NULL);
+  g_signal_connect (bus, "message::eos",
+      (GCallback) on_eos, NULL);
+
+  /* start playing */
+  ret = gst_element_set_state (bin, GST_STATE_PLAYING);
+  if (ret != GST_STATE_CHANGE_SUCCESS) {
+    g_message ("failed to change state");
+    return -1;
+  }
+
+  /* Run event loop listening for bus messages until EOS or ERROR */
+  g_main_loop_run (loop);
+
+  /* stop the bin */
+  gst_element_set_state (bin, GST_STATE_NULL);
+  gst_object_unref (bus);
+  g_main_loop_unref (loop);
+
+  return 0;
+}
diff --git a/tests/examples/memory/Makefile.in b/tests/examples/memory/Makefile.in
index b36358b..7fdcb61 100644
--- a/tests/examples/memory/Makefile.in
+++ b/tests/examples/memory/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -336,6 +336,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -372,6 +375,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/metadata/Makefile.in b/tests/examples/metadata/Makefile.in
index a3cb815..549cb8b 100644
--- a/tests/examples/metadata/Makefile.in
+++ b/tests/examples/metadata/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -334,6 +334,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -370,6 +373,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/queue/Makefile.in b/tests/examples/queue/Makefile.in
index d4bb1d6..0d2a400 100644
--- a/tests/examples/queue/Makefile.in
+++ b/tests/examples/queue/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -334,6 +334,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -370,6 +373,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/stepping/Makefile.in b/tests/examples/stepping/Makefile.in
index 5e5057a..92f76b3 100644
--- a/tests/examples/stepping/Makefile.in
+++ b/tests/examples/stepping/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -334,6 +334,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -370,6 +373,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/examples/streams/Makefile.am b/tests/examples/streams/Makefile.am
index 910df0a..e1f87ac 100644
--- a/tests/examples/streams/Makefile.am
+++ b/tests/examples/streams/Makefile.am
@@ -1,5 +1,5 @@
 noinst_PROGRAMS = stream-status
-if HAVE_PTHREAD_H
+if HAVE_PTHREAD
 noinst_PROGRAMS += rtpool-test
 endif
 
@@ -8,7 +8,7 @@
 stream_status_CFLAGS = $(GST_OBJ_CFLAGS)
 
 rtpool_test_SOURCES = rtpool-test.c testrtpool.h testrtpool.c
-rtpool_test_LDADD = $(GST_OBJ_LIBS) -lpthread
-rtpool_test_CFLAGS = $(GST_OBJ_CFLAGS)
+rtpool_test_LDADD = $(GST_OBJ_LIBS) $(PTHREAD_LIBS)
+rtpool_test_CFLAGS = $(GST_OBJ_CFLAGS) $(PTHREAD_CFLAGS)
 
 EXTRA_DIST = rtpool-test.c testrtpool.h testrtpool.c
diff --git a/tests/examples/streams/Makefile.in b/tests/examples/streams/Makefile.in
index 0d76343..2d183e5 100644
--- a/tests/examples/streams/Makefile.in
+++ b/tests/examples/streams/Makefile.in
@@ -53,7 +53,7 @@
 host_triplet = @host@
 target_triplet = @target@
 noinst_PROGRAMS = stream-status$(EXEEXT) $(am__EXEEXT_1)
-@HAVE_PTHREAD_H_TRUE@am__append_1 = rtpool-test
+@HAVE_PTHREAD_TRUE@am__append_1 = rtpool-test
 subdir = tests/examples/streams
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -83,7 +83,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -98,13 +98,13 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-@HAVE_PTHREAD_H_TRUE@am__EXEEXT_1 = rtpool-test$(EXEEXT)
+@HAVE_PTHREAD_TRUE@am__EXEEXT_1 = rtpool-test$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 am_rtpool_test_OBJECTS = rtpool_test-rtpool-test.$(OBJEXT) \
 	rtpool_test-testrtpool.$(OBJEXT)
 rtpool_test_OBJECTS = $(am_rtpool_test_OBJECTS)
 am__DEPENDENCIES_1 =
-rtpool_test_DEPENDENCIES = $(am__DEPENDENCIES_1)
+rtpool_test_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -343,6 +343,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -379,6 +382,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -432,8 +436,8 @@
 stream_status_LDADD = $(GST_OBJ_LIBS)
 stream_status_CFLAGS = $(GST_OBJ_CFLAGS)
 rtpool_test_SOURCES = rtpool-test.c testrtpool.h testrtpool.c
-rtpool_test_LDADD = $(GST_OBJ_LIBS) -lpthread
-rtpool_test_CFLAGS = $(GST_OBJ_CFLAGS)
+rtpool_test_LDADD = $(GST_OBJ_LIBS) $(PTHREAD_LIBS)
+rtpool_test_CFLAGS = $(GST_OBJ_CFLAGS) $(PTHREAD_CFLAGS)
 EXTRA_DIST = rtpool-test.c testrtpool.h testrtpool.c
 all: all-am
 
diff --git a/tests/examples/typefind/Makefile.in b/tests/examples/typefind/Makefile.in
index 0858fd9..58fb158 100644
--- a/tests/examples/typefind/Makefile.in
+++ b/tests/examples/typefind/Makefile.in
@@ -82,7 +82,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -334,6 +334,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -370,6 +373,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tests/misc/Makefile.in b/tests/misc/Makefile.in
index 5888927..cfe94f5 100644
--- a/tests/misc/Makefile.in
+++ b/tests/misc/Makefile.in
@@ -80,7 +80,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -299,6 +299,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -335,6 +338,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index a6495d9..5bc7dc4 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -88,7 +88,7 @@
 	$(top_srcdir)/common/m4/gst.m4 \
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/ax_pthread.m4 \
 	$(top_srcdir)/m4/check-checks.m4 $(top_srcdir)/m4/gettext.m4 \
 	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
 	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -400,6 +400,9 @@
 PLUGINDIR = @PLUGINDIR@
 POSUB = @POSUB@
 PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
@@ -436,6 +439,7 @@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
diff --git a/win32/common/config.h b/win32/common/config.h
index 674353d..62d46d1 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 "2012-10-07"
+#define GST_PACKAGE_RELEASE_DATETIME "2012-10-24"
 
 /* location of the installed gst-plugin-scanner */
 #define GST_PLUGIN_SCANNER_INSTALLED LIBDIR "\\gst-plugin-scanner"
@@ -211,8 +211,11 @@
 /* Define to 1 if you have the `pselect' function. */
 #undef HAVE_PSELECT
 
-/* Define to 1 if you have the <pthread.h> header file. */
-#undef HAVE_PTHREAD_H
+/* Define if you have POSIX threads libraries and header files. */
+#undef HAVE_PTHREAD
+
+/* Have PTHREAD_PRIO_INHERIT. */
+#undef HAVE_PTHREAD_PRIO_INHERIT
 
 /* Define if RDTSC is available */
 #undef HAVE_RDTSC
@@ -337,7 +340,7 @@
 #define PACKAGE_NAME "GStreamer"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer 1.0.1"
+#define PACKAGE_STRING "GStreamer 1.0.2"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gstreamer"
@@ -346,7 +349,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.0.1"
+#define PACKAGE_VERSION "1.0.2"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -355,6 +358,10 @@
 #  define PLUGINDIR PREFIX "\\lib\\gstreamer-1.0"
 #endif
 
+/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+#undef PTHREAD_CREATE_JOINABLE
+
 /* The size of `char', as computed by sizeof. */
 #undef SIZEOF_CHAR
 
@@ -380,7 +387,7 @@
 #undef USE_POISONING
 
 /* Version number of package */
-#define VERSION "1.0.1"
+#define VERSION "1.0.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 0c9f112..432a3d2 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:
  *
